Bentocord is a Bento plugin designed to rapidly build fully functional Discord Bots. But stay powerful enough that you never have to leave
With most things Bento you have a lot of options when bootstrapping Bentocord. However we highly recommend usings Bento's Application helper. It is the most painless way to get up and running:
import { Application } from '@ayanaware/bento';
import { Bentocord } from '@ayanaware/bentocord';
// Create our Application instance
const app = new Application();
// Anonymous async function so we can use await
(async () => {
await app.start();
// Add Bentocord
await app.bento.addPlugin(Bentocord);
await app.verify();
})().catch(e => {
console.log(e);
process.exit(1);
});
Bento variables are used to change the behavior of Bentocord. They can be set various different ways.
Some common ways are to use Bento's built in VariableLoader
or VariableFileLoader
plugins.
You can also bring your own plugin or alternativly directly inject values via Bento.setVariable()
.
Note: While some variables are dynamic and Bentocord reacts as soon as you update them. Some are not. This means Bentocord expects you to set all Variables you care about before
Bento.addPlugin()
Key | Type | Description | Default |
---|---|---|---|
BENTOCORD_TOKEN | string | Discord Authentication Token | null |
BENTOCORD_BOT_OWNERS | list* | Discord user id list | null |
BENTOCORD_IGNORE_MODE | boolean | This will disable much of the bot for users not in BENTOCORD_BOT_OWNERS |
false |
BENTOCORD_COMMAND_PREFIX | string | The default prefix to use for Bentocord's Command Handler | bentocord |
BENTOCORD_ACTIVITY_NAME | string | The default activity name to set per shard | with Bentocord |
BENTOCORD_BUILTIN_COMMANDS | boolean | Should Bentocord load it's built-in Commands (ex: ping, bento) | true |
* = comma seperated list of items
Bentocord uses a replaceable entity, BentocordInterface, to offer extendable functionality. Bentocord tries to offer sane defaults but for things like Storage, Localization, and other Application specific features you will need to provide a replacement entity. I often refer to this replacement entity as BentocordOverride.
It should be easy enough to implement your BentocordOverride. Simply create a normal Bento Entity. Extend BentocordInterface and override functions you wish to take control over. You can find all the functions and their description here. Then simply make use of bento.replaceEntity()
.
IMPORTANT: A BentocordOverride implementation should include basic caching for many of the possibly "expensive" calls. Such as
getPrefix
,formatTranslation
, and many more. Functions such as these can and will be hit many times a second, and only increase as your bot grows. Some of these call's even take place onMESSAGE_CREATE
. It is extreamly bad practice to hit your backend every call. Both for your backends sake and application responsiveness to your users. So add some caching :)