mirror of
https://github.com/BluemediaGER/muse.git
synced 2024-11-10 03:55: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 {CommandHandler} from '../interfaces';
|
||||||
|
import {Settings} from '../models';
|
||||||
|
|
||||||
const config: CommandHandler = {
|
const config: CommandHandler = {
|
||||||
name: 'config',
|
name: 'config',
|
||||||
description: 'Change various bot settings.',
|
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];
|
const setting = args[0];
|
||||||
|
|
||||||
switch (setting) {
|
if (args.length !== 2) {
|
||||||
case 'prefix':
|
await msg.channel.send('🚫 incorrect number of arguments');
|
||||||
msg.channel.send('Prefix set');
|
return;
|
||||||
break;
|
}
|
||||||
|
|
||||||
case 'channel':
|
switch (setting) {
|
||||||
msg.channel.send('Channel bound');
|
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;
|
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:
|
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 makeDir from 'make-dir';
|
||||||
import Discord from 'discord.js';
|
import Discord from 'discord.js';
|
||||||
import {DISCORD_TOKEN, DISCORD_CLIENT_ID, DATA_DIR} from './utils/config';
|
import {DISCORD_TOKEN, DISCORD_CLIENT_ID, DATA_DIR} from './utils/config';
|
||||||
|
import {Settings} from './models';
|
||||||
import {sequelize} from './utils/db';
|
import {sequelize} from './utils/db';
|
||||||
import {CommandHandler} from './interfaces';
|
import {CommandHandler} from './interfaces';
|
||||||
import handleGuildCreate from './events/guild-create';
|
import handleGuildCreate from './events/guild-create';
|
||||||
|
|
||||||
const PREFIX = '!';
|
|
||||||
|
|
||||||
const client = new Discord.Client();
|
const client = new Discord.Client();
|
||||||
const commands = new Discord.Collection();
|
const commands = new Discord.Collection();
|
||||||
|
|
||||||
|
@ -22,12 +21,22 @@ for (const file of commandFiles) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generic message handler
|
// Generic message handler
|
||||||
client.on('message', (msg: Discord.Message) => {
|
client.on('message', async (msg: Discord.Message) => {
|
||||||
if (!msg.content.startsWith(PREFIX) || msg.author.bot) {
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const args = msg.content.slice(PREFIX.length).split(/ +/);
|
const args = msg.content.slice(prefix.length).split(/ +/);
|
||||||
const command = args.shift()!.toLowerCase();
|
const command = args.shift()!.toLowerCase();
|
||||||
|
|
||||||
if (!commands.has(command)) {
|
if (!commands.has(command)) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import Discord from 'discord.js';
|
import {Message} from 'discord.js';
|
||||||
|
|
||||||
export interface CommandHandler {
|
export interface CommandHandler {
|
||||||
name: string;
|
name: string;
|
||||||
description: string;
|
description: string;
|
||||||
execute: (msg: Discord.Message, args: string[]) => void;
|
execute: (msg: Message, args: string[]) => void;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue