You can extends your bot methods/funcionality or Eris structures through Aghanim Components.
Custom extensions: after instantiate your bot
You can create Components:
//my_component.js
const { Component } = require('aghanim');
// Component:
class MyComponent extends Component {
constructor(client, options) {
super(client); // this.client is Aghanim Client instance. You can use in other methods
}
ready() {
console.log('My component is ready');
}
messageCreate(msg, args, client, command) {
console.log(`Message: ${msg.content}`);
// this.client is Aghanim Client instance. You can use it here
}
messageReactionAdd(msg, emoji, userID, client) {
// do something when a reactions is added to one message
}
}
module.exports = MyComponent;
Add your custom component to your bot
//index.js
//bot defined...
const MyComponent = require('./my_component.js');
client.addComponent(MyComponent);
const path = require('path');
//You can import the file directly using addComponentFile method
client.addComponentFile(path.join(__dirname, '/my_component.js'));
//Or you can import a directory of components with addComponentDir method
client.addComponentDir(path.join(__dirname + '/path/to/components_folder'));
Component Object
Create a component as object
//my_componnet.js
module.exports = {
name: 'ping',
constructor: (client, options) => {
// do something when create component instance
},
ready() {
console.log('My component is ready');
},
messageCreate(msg, args, client, command) {
console.log(`Message: ${msg.content}`);
},
messageReactionAdd(msg, emoji, userID, client) {
// do something when a reactions is added to one message
}
};
Methods of events in components
These events will be fired of components:
ready(fired once)messageCreatemessageReactionAddmessageReactionRemoveguildCreateguildDeleteguildMemberAddguildMemberRemoveinteractionCommandCreate
For more info about client events go to Eris
The arguments of these events are same Eris and added client as last. That means that if for example:
- Eris event: messageReactionAdd(message, emoji, userID)
- Aghanim event: messageReactionAdd(message, emoji, userID, client)
If you need listen more events of that Aghanim does by default you can do it.
client.on(eventName, handler);
// or if you want add Aghanim functionality through components
client.on(eventName, client.handleEvent(eventName)); // that adds the client as last argument to event handler of Eris event handler