import { Command, CommandoMessage, CommandoClient } from 'discord.js-commando'; //@ts-ignore no types import emoji from 'emoji-random'; import Goodbye from '../../models/goodbye.js'; import mongo from 'mongoose'; import config from '../../config.json'; mongo.connect(config['mongodburi'], { useNewUrlParser: true, useUnifiedTopology: true }) module.exports = class GoodbyeServer extends Command { constructor(client: CommandoClient) { super(client, { name: 'goodbye', group: 'server', memberName: 'goodbye', description: 'Allows you to set, change or delete a server goodbye message.', userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], examples: [ 'uwu!goodbye', 'uwu!goodbye set', 'uwu!goodbye remove' ], args: [ { key: 'wType', prompt: 'Would you like to set, remove or change the current goodbye channel?', type: 'string', default: '' } ], throttling: { usages: 5, duration: 30 }, guildOnly: true }); } //@ts-ignore doesnt matter if not all code paths return a value async run(msg: CommandoMessage, { wType }: any) { const goodbye = new Goodbye({ _id: mongo.Types.ObjectId(), username: msg.author.username, userID: msg.author.id, guildname: msg.guild.name, guildID: msg.guild.id, channelname: msg.channel, channelID: msg.channel.id, time: msg.createdAt }) const guildExist = await Goodbye.findOne({ guildID: msg.guild.id }) if (msg.member.hasPermission('MANAGE_GUILD')) { Goodbye.findOne({ guildID: msg.guild.id }, async (error, guild) => { if (error) { console.log(error) } else if (guild && wType == 'remove') { await Goodbye.findOneAndDelete({ guildID: msg.guild.id }) msg.say('The current goodbye channel has been unset! ' + emoji.random()).then(mnotif => { //@ts-ignore this exists mnotif.delete({ timeout: 2000 }) //@ts-ignore this exists msg.delete({ timeout: 2000 }) }) } else if (!guild && wType == 'remove') { msg.reply('There is no current goodbye channel set for this guild! ' + emoji.random()).then(mnotif => { //@ts-ignore this exists mnotif.delete({ timeout: 2000 }) //@ts-ignore this exists msg.delete({ timeout: 2000 }) }) } else if (guild && wType == 'set') { //@ts-ignore this exists msg.reply(`There already is a goodbye channel set! It's ${guild.channelname}! ` + emoji.random()).then(mnotif => { //@ts-ignore this exists mnotif.delete({ timeout: 2000 }) //@ts-ignore this exists msg.delete({ timeout: 2000 }) }) } else if (!guild && wType == 'set') { await goodbye.save() .then(result => console.log(result)) .catch(err => console.log(err)) msg.reply(`The goodbye channel has been set to ${msg.channel}! ` + emoji.random()).then(mnotif => { //@ts-ignore this exists mnotif.delete({ timeout: 2000 }) //@ts-ignore this exists msg.delete({ timeout: 2000 }) }) } else if (!guild) { msg.reply('There is no current goodbye channel set for this guild! To set one, do `uwu!goodbye set` in the channel you want to set it in. ' + emoji.random()) } else if (guild) { //@ts-ignore this exists msg.reply(`The current goodbye channel is ${guild.channelname}. ` + emoji.random()) } }) } else { return msg.reply('Insufficent permissions! ' + emoji.random()) } } };