mirror of
https://github.com/BluemediaGER/muse.git
synced 2024-11-12 21:05:29 +01:00
Add config command
This commit is contained in:
parent
eca84c8b69
commit
652cc2e5ef
|
@ -1,22 +1,61 @@
|
|||
import {TextChannel} from 'discord.js';
|
||||
import {CommandHandler} from '../interfaces';
|
||||
import {Settings} from '../models';
|
||||
|
||||
const config: CommandHandler = {
|
||||
name: 'config',
|
||||
description: 'Change various bot settings.',
|
||||
execute: (msg, args) => {
|
||||
execute: async (msg, args) => {
|
||||
if (args.length === 0) {
|
||||
// Show current settings
|
||||
const settings = await Settings.findByPk(msg.guild!.id);
|
||||
|
||||
if (settings) {
|
||||
let response = `prefix: \`${settings.prefix}\`\n`;
|
||||
response += `channel: ${msg.guild!.channels.cache.get(settings.channel)!.toString()}`;
|
||||
|
||||
await msg.channel.send(response);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const setting = args[0];
|
||||
|
||||
switch (setting) {
|
||||
case 'prefix':
|
||||
msg.channel.send('Prefix set');
|
||||
break;
|
||||
if (args.length !== 2) {
|
||||
await msg.channel.send('🚫 incorrect number of arguments');
|
||||
return;
|
||||
}
|
||||
|
||||
case 'channel':
|
||||
msg.channel.send('Channel bound');
|
||||
switch (setting) {
|
||||
case 'prefix': {
|
||||
const newPrefix = args[1];
|
||||
|
||||
await Settings.update({prefix: newPrefix}, {where: {guildId: msg.guild!.id}});
|
||||
|
||||
await msg.channel.send(`👍 prefix updated to \`${newPrefix}\``);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'channel': {
|
||||
const channel = msg.guild!.channels.cache.find(c => c.name === args[1]);
|
||||
|
||||
if (channel && channel.type === 'text') {
|
||||
await Settings.update({channel: channel.id}, {where: {guildId: msg.guild!.id}});
|
||||
|
||||
await Promise.all([
|
||||
(channel as TextChannel).send('hey apparently I\'m bound to this channel now'),
|
||||
msg.react('👍')
|
||||
]);
|
||||
} else {
|
||||
await msg.channel.send('🚫 either that channel doesn\'t exist or you want me to become sentient and listen to a voice channel');
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
msg.channel.send('Unknown setting');
|
||||
await msg.channel.send('🚫 I\'ve never met this setting in my life');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
19
src/index.ts
19
src/index.ts
|
@ -3,12 +3,11 @@ import path from 'path';
|
|||
import makeDir from 'make-dir';
|
||||
import Discord from 'discord.js';
|
||||
import {DISCORD_TOKEN, DISCORD_CLIENT_ID, DATA_DIR} from './utils/config';
|
||||
import {Settings} from './models';
|
||||
import {sequelize} from './utils/db';
|
||||
import {CommandHandler} from './interfaces';
|
||||
import handleGuildCreate from './events/guild-create';
|
||||
|
||||
const PREFIX = '!';
|
||||
|
||||
const client = new Discord.Client();
|
||||
const commands = new Discord.Collection();
|
||||
|
||||
|
@ -22,12 +21,22 @@ for (const file of commandFiles) {
|
|||
}
|
||||
|
||||
// Generic message handler
|
||||
client.on('message', (msg: Discord.Message) => {
|
||||
if (!msg.content.startsWith(PREFIX) || msg.author.bot) {
|
||||
client.on('message', async (msg: Discord.Message) => {
|
||||
// Get guild settings
|
||||
const settings = await Settings.findByPk(msg.guild!.id);
|
||||
|
||||
if (!settings) {
|
||||
// Got into a bad state, send owner welcome message
|
||||
return client.emit('guildCreate', msg.guild);
|
||||
}
|
||||
|
||||
const {prefix, channel} = settings;
|
||||
|
||||
if (!msg.content.startsWith(prefix) || msg.author.bot || msg.channel.id !== channel) {
|
||||
return;
|
||||
}
|
||||
|
||||
const args = msg.content.slice(PREFIX.length).split(/ +/);
|
||||
const args = msg.content.slice(prefix.length).split(/ +/);
|
||||
const command = args.shift()!.toLowerCase();
|
||||
|
||||
if (!commands.has(command)) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import Discord from 'discord.js';
|
||||
import {Message} from 'discord.js';
|
||||
|
||||
export interface CommandHandler {
|
||||
name: string;
|
||||
description: string;
|
||||
execute: (msg: Discord.Message, args: string[]) => void;
|
||||
execute: (msg: Message, args: string[]) => void;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue