Plugins are runtime-loadable type-safe flexible components that have access to all of the bot's events
including timers
which automatically get cleared on hot reloads so you don't have to manage
memory
Let's say you wanna make a plugin that when someone pings shaii she automatically replies to them with a random answer from an array of strings:
// plugins/reply-on-mentions.ts
export default definePlugin({
name: "@geoxor/reply-on-mentions",
events: {
messageCreate: (message) => {
if (message.mentions.first() === SHAII) {
message.reply(randomItem(["hello", "you're annoying", "don't talk to me again!"]));
}
},
},
});
- Make a new bot through the developer portal so that you have a token for use in
config.shaii.json
- Fork, clone repo & cd into the folder Shaii
Next, depending on your platform:
- Install dependencies
sudo apt install -y build-essential g++-10 libxi-dev libxext-dev libpixman-1-dev libcairo2-dev libpango1.0-dev libjpeg8-dev libgif-dev libjpeg-dev librsvg2-dev mesa-common-dev
- TODO: set up mongo on linux
- Use node.js 16.6.0
nvm install 16.6.0 && nvm use 16.6.0
CXX=10 npm ci
to install dependencies
- Install Node versoin 16.x.x
- Install MongoDB Community https://www.mongodb.com/try/download/community & follow default installation
- With administrator privileges, do
npm i
in the repository folder
Once all these are set up:
- Make
config.shaii.json
insrc
followingexample.config.shaii.json
Set path to a music folder (make an empty one in the repo folder if you don't care) Set the token Set the chat log ID Set url to mongodb (mongodb://127.0.0.1:27017 if hosting locally) - In
constants/index.ts
replace guild & channel IDs with those of your test guild npm run dev
GG