diff --git a/README.md b/README.md index a5cde7a..5662cb2 100644 --- a/README.md +++ b/README.md @@ -6,39 +6,98 @@ Discord bot client based upon Discord.js Download the latest version from the [releases page](https://gitlab.vylpes.com/Vylpes/vylbot-core/-/releases). -Copy the config template file and fill in the strings. +Copy the config template file and fill in the values. -```json -{ - "token": "", - "prefix": "", - "commands": [ - "" - ], - "events": [ - "" - ] -} +```env +BOT_TOKEN={TOKEN} +BOT_PREFIX=v! + +FOLDERS_COMMANDS=commands +FOLDERS_EVENTS=events ``` -* **Token:** Your bot's token -* **Prefix** The command prefix -* **Commands:** An array of the folders which contain your commands -* **Events:** An array of the folders which contain your events +* **BOT_TOKEN:** Your bot's token, replace {TOKEN} with your bot token +* **BOT_PREFIX** The command prefix +* **FOLDERS_COMMANDS:** The folder which contains your commands +* **FOLDERS_EVENTS** The folder which contains your events + +Make sure that you **DO NOT** put your .env file into VCS! ## Usage Implement the client using something like: -```js -const vylbot = require('vylbot-core'); -const config = require('config.json'); +```ts +// bot.ts -const client = new vylbot.client(config); +import { CoreClient } from "vylbot-core"; + +const client = new CoreClient(); client.start(); ``` -See the [docs](https://gitlab.vylpes.com/Vylpes/vylbot-core/-/wikis/home) for more information on how to use vylbot-core +### Writing Commands + +The code below will reply to the user with 'PONG' when they type {PREFIX}ping + +```ts +// Ping.ts + +import { Command, ICommandContext } from "vylbot-core"; + +export class Ping extends Command { + constructor() { + super(); + this._roles = [ "Moderator" ]; + this._category = "General"; + } + + public override execute(context: ICommandContext) { + context.message.reply('PONG'); + } +} +``` + +* **roles**: An array containing what roles the user needs in order to run the command. +* **category**: The category the role is part of, useful for categorising commands together in a help command. + +The `context` parameter contains the following: +* **name**: The command name +* **args**: An array of arguments supplied with the command +* **message**: The Discord Message object for the command message sent + +### Writing Events + +The code below will log to the console 'Member Joined: {USERNAME}' when a member joins a server the bot is in + +```ts +// Moderation.ts + +import { Event } from "vylbot-core"; +import { GuildMember } from "discord.js"; + +export class Moderation extends Event { + public override guildMemberAdd(member: GuildMember) { + console.log(`Member Joined: ${member.tag}`); + } +} +``` + +The following events are supported: +* channelCreate(channel: Channel) +* channelDelete(channel: Channel | PartialDMChannel) +* channelUpdate(oldChannel: Channel, newChannel: Channel) +* guildBanAdd(guild: Guild, user: User) +* guildBanRemove(guild: Guild, user: User) +* guildCreate(guild: Guild) +* guildMemberAdd(member: GuildMember) +* guildMemberRemove(member: GuildMember | PartialGuildMember) +* guildMemberUpdate(oldMember: GuildMember | PartialGuildMember, newMember: GuildMember) +* message(message: Message) +* messageDelete(message: Message | PartialMessage) +* messageUpdate(oldMessage: Message | PartialMessage, newMessage: Message | PartialMessage) + +All parameters are supplied from discord.js ## Contributing