--- sidebar_position: 3 --- # Handle Events When an event is fired, Discordeno sends two important things: the `client` instance and the `payload`. As mentioned in the `Structure` section, the `payload` object does not contain any functions as it's a plain json object. In order to take use of our nice built structures, we need to transform the payload into a structure. :::info The Structures can be found [here](https://github.com/discordeno/discordeno/tree/main/template/nodejs/Structures) ::: Sometimes it's important to listen to events, in order to get informed of changes and updating the cache based on it. ### Message Event This file should be called `messageCreate.js`. ```js const Message = require('./structures/Message') module.exports = async (client, payload) => { const message = client.messages.forge(payload) if (message.author.bot) return if (message.content === '!ping') return await message.reply('pong') } ``` ### Interaction Event This file should be called `interactionCreate.js`. ```js const Interaction = require('./structures/Interaction') module.exports = async (client, payload) => { const interaction = client.interactions.forge(payload) if (interaction.data.name === 'ping') return await interaction.reply({ content: 'pong' }) } ``` ### Ready Event This file should be called `ready.js`. :::tip There is a small difference with the `ready` Event. The Event is fired `shard` wise, in other words it fires every time a `shard` becomes ready. ::: In order to fire the "real event" a small code snippet has to be added to the `ready` Event. ```js const User = require('../Structures/User') module.exports = async (client, payload) => { client.user = client.users.forge(payload.user) if (payload.shardId + 1 === client.gateway.maxShards) { // All Shards are ready console.log(`Successfully connected to the gateway as ${client.user.tag}`) } } ```