diff --git a/docs/bot_tutorial/building_block_listeners.md b/docs/bot_tutorial/building_block_listeners.md index e69de29..5ab6d3e 100644 --- a/docs/bot_tutorial/building_block_listeners.md +++ b/docs/bot_tutorial/building_block_listeners.md @@ -0,0 +1,67 @@ +# Listeners +Listeners are a way to execute custom actions when a certain discord event happens. For example, on message creation, when a member joins or leaves a guild, or when someone changes user or nickname. + +## Listeners in disco +Listeners are easy to use and implement in Disco. First of all, we'll create a [plugin](https://b1naryth1ef.github.io/disco/bot_tutorial/building_block_plugins.html) like so: +```py +class MyPlugin(Plugin): +``` +Now, inside this plugin, we'll create our first listener. A listener is built up following this syntax: +```py +@Plugin.listen('EventName') +def on_event_name(self, event): + # Do something with the event +``` +Change the `'EventName'` in the `.listen()` method to the event name you want to listen to, and give the `on_event_name` method a more descriptive name. + +Now, on to adding the first listener to our plugin. +The listener will listen for a new message and will reply with the exact same message every time. +```py +@Plugin.listen('MesageCreate') +def on_message_create(self, event): + event.reply(event.message.content) +``` +Let's create a nother listener, this time one that listens for a member that's added to the guild, when this happens, it will send a welcome message in a welcome channel. For this example, we'll asume the ID for that channel's ID is stored in a constant named `WELCOME_CHANNEL`: +```py +@Plugin.listen('GuildMemberAdd') +def on_member_add(self, event): + self.bot.client.api.channels_messages_create( + WELCOME_CHANNEL, + 'Welcome to the server {}'.format(event.member.user.mention()) + ) +``` + +A list of all discord events supported by disco can be found [here](https://b1naryth1ef.github.io/disco/api/disco_gateway_events.html) including event attributes and functions you can use on the event property.# Listeners +Listeners are a way to execute custom actions when a certain discord event happens. For example, on message creation, when a member joins or leaves a guild, or when someone changes user or nickname. + +## Listeners in disco +Listeners are easy to use and implement in Disco. First of all, we'll create a [plugin](https://b1naryth1ef.github.io/disco/bot_tutorial/building_block_plugins.html) like so: +```py +class MyPlugin(Plugin): +``` +Now, inside this plugin, we'll create our first listener. A listener is built up following this syntax: +```py +@Plugin.listen('EventName') +def on_event_name(self, event): + # Do something with the event +``` +Change the `'EventName'` in the `.listen()` method to the event name you want to listen to, and give the `on_event_name` method a more descriptive name and you're all set! + +Now, on to adding the first listener to our plugin. +The listener will listen for a new message and will reply with the exact same message every time. +```py +@Plugin.listen('MesageCreate') +def on_message_create(self, event): + event.reply(event.message.content) +``` +Let's create a nother listener, this time one that listens for a member that's added to the guild, when this happens, it will send a welcome message in a welcome channel. For this example, we'll asume the ID for that channel's ID is stored in a constant named `WELCOME_CHANNEL`: +```py +@Plugin.listen('GuildMemberAdd') +def on_member_add(self, event): + self.bot.client.api.channels_messages_create( + WELCOME_CHANNEL, + 'Welcome to the server {}'.format(event.member.user.mention()) + ) +``` + +A list of all discord events supported by disco can be found [here](https://b1naryth1ef.github.io/disco/api/disco_gateway_events.html) including event attributes and functions you can use on the event property.