summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
author8cy <[email protected]>2020-07-27 04:10:57 -0700
committer8cy <[email protected]>2020-07-27 04:10:57 -0700
commit9ab23583551c495d3a212ef24a47696a8da460d2 (patch)
treeff8b1de500f3a17dad78d6d6fee381f45078723f /server
parentfix: formatting in wc/gb json files (diff)
downloaddep-core-9ab23583551c495d3a212ef24a47696a8da460d2.tar.xz
dep-core-9ab23583551c495d3a212ef24a47696a8da460d2.zip
big revamp n stuff
Diffstat (limited to 'server')
-rw-r--r--server/src/Config.ts3
-rw-r--r--server/src/DevConfig.ts10
-rw-r--r--server/src/commands/anime/Darling.ts97
-rw-r--r--server/src/commands/emma/FanArt.ts93
-rw-r--r--server/src/commands/mod/Ban.ts4
-rw-r--r--server/src/commands/mod/Kick.ts7
-rw-r--r--server/src/commands/owner/Database.ts43
-rw-r--r--server/src/commands/server/Goodbye.ts79
-rw-r--r--server/src/commands/server/PFP.ts5
-rw-r--r--server/src/commands/server/Welcome.ts79
-rw-r--r--server/src/database/index.ts4
-rw-r--r--server/src/database/models/DarlingModel.ts10
-rw-r--r--server/src/database/models/FanArtModel.ts12
-rw-r--r--server/src/database/models/GoodbyeModel.ts12
-rw-r--r--server/src/database/models/GuildModel.ts36
-rw-r--r--server/src/database/models/ReactionGuildModel.ts16
-rw-r--r--server/src/database/models/WelcomeModel.ts12
-rw-r--r--server/src/database/structures/SettingsProvider.ts2
-rw-r--r--server/src/listeners/client/guildMemberAdd.ts32
-rw-r--r--server/src/listeners/client/guildMemberRemove.ts33
-rw-r--r--server/src/listeners/client/message.ts17
21 files changed, 324 insertions, 282 deletions
diff --git a/server/src/Config.ts b/server/src/Config.ts
index 827f7c8..ff9b361 100644
--- a/server/src/Config.ts
+++ b/server/src/Config.ts
@@ -1,3 +1,4 @@
+// Config.ts
export const token: string = "Njk5NDczMjYzOTk4MjcxNDg5.XpU5PQ.zDEhRT5HnfO0m4dyG-N86Dd1BVU";
export const prefix: string = "uwu!";
export const owners: string[] = ['217348698294714370'];
@@ -21,5 +22,5 @@ export const captchaSettings: object = {
color: false,
size: 6
};
-export const verificationRole: string = "Disinfector";
+export const verificationRole: string = "Member";
export const verificationChannel: string = "verification"; \ No newline at end of file
diff --git a/server/src/DevConfig.ts b/server/src/DevConfig.ts
index 407cfc7..3fa189b 100644
--- a/server/src/DevConfig.ts
+++ b/server/src/DevConfig.ts
@@ -1,3 +1,4 @@
+// DevConfig.ts
export const token: string = "NzEyMDg4MzY5MjA2OTE5MjY5.XsMd-Q.zuhGdb-S-BSdE1Gqyynp-xDutsg";
export const prefix: string = "uwu$";
export const owners: string[] = ['217348698294714370'];
@@ -15,4 +16,11 @@ export const validIDs: string[] = [
'649676743195754550' // Soph
];
export const mongoDBUri: string = "mongodb+srv://sin:[email protected]/aki-web?retryWrites=true&w=majority";
-export const emmaServer: string = "663964105983393793"; \ No newline at end of file
+export const emmaServer: string = "663964105983393793";
+export const captchaSettings: object = {
+ background: '#7289Da',
+ color: false,
+ size: 6
+};
+export const verificationRole: string = "Member";
+export const verificationChannel: string = "verification"; \ No newline at end of file
diff --git a/server/src/commands/anime/Darling.ts b/server/src/commands/anime/Darling.ts
index 286255b..7f2da84 100644
--- a/server/src/commands/anime/Darling.ts
+++ b/server/src/commands/anime/Darling.ts
@@ -1,12 +1,6 @@
import { Command } from 'discord-akairo';
import { Message } from 'discord.js';
-import Darling from '../../database/models/DarlingModel';
-import mongoose from 'mongoose';
-import { mongoDBUri } from '../../Config';
-mongoose.connect(mongoDBUri, {
- useNewUrlParser: true,
- useUnifiedTopology: true
-});
+import { owners, prefix } from '../../Config';
export default class DarlingAnime extends Command {
public constructor() {
@@ -40,51 +34,54 @@ export default class DarlingAnime extends Command {
});
}
- public exec(msg: Message, { type }): Promise<Message> | any {
- const darling = new Darling({
- _id: mongoose.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
- });
+ public async exec(msg: Message, { type }): Promise<Message> {
+ const existing = this.client.settings.cache.guilds.get(msg.guild.id);
+ if (!existing) {
+ this.client.settings.new('guild', {
+ id: msg.guild.id,
+ premium: false,
+ prefix,
+ });
+ }
+ let hasDarling = true;
+ if (existing.darling === undefined) {
+ hasDarling = false;
+ } else {
+ if (existing.darling.length !== 18) hasDarling = false;
+ }
- return Darling.findOne({ guildID: msg.guild.id }, async (error, guild) => {
- if (error) return console.error(error);
-
- if (guild) {
- if (type === 'remove') {
- //@ts-ignore
- if (msg.author.id !== guild.userID || msg.author.id !== msg.guild.owner.id)
- return msg.reply('Only my darling or the guild owner can remove the current darling.');
-
- await Darling.findOneAndDelete({ guildID: msg.guild.id });
- return msg.channel.send('The current darling has been removed!');
- } else if (type === 'set') {
- //@ts-ignore
- return msg.channel.send(`I already have a darling! It's **${guild.username}**! To set a new darling, either the current darling or the guild owner has to do \`${this.client.commandHandler.prefix}darling remove\`.`);
- } else if (type === 'check') {
- //@ts-ignore
- return msg.channel.send(`My darling is **${msg.guild.members.resolve(guild.userID).user.tag}**.`);
- }
- } else if (!guild) {
- if (type === 'remove') {
- return msg.channel.send('There is no darling set in this server.');
- } else if (type === 'set') {
- await darling.save().catch(err => console.error(err));
- const quotes = [
- 'I think I have taken a liking to you. Won\'t you be my darling?',
- 'I like the look in your eyes. It makes my heart race. You are now my darling!',
- 'Wow, your taste makes my heart race. It bites and lingers... The taste of danger. You are now my darling!'
- ];
- return msg.channel.send(quotes[Math.floor(Math.random() * quotes.length)]);
- } else if (type === 'check') {
- return msg.reply(`I haven't found my darling yet! To set one, do ${this.client.commandHandler.prefix}darling set.`);
+ if (hasDarling) {
+ if (type === 'remove') {
+ if (msg.author.id !== existing.darling) {
+ if (msg.guild.member(msg.author.id).hasPermission('MANAGE_GUILD') || owners.includes(msg.author.id))
+ undefined;
+ else
+ return msg.reply('Only my darling or someone who has permissions to manage guild settings can remove the current darling!');
}
+
+ await this.client.settings.set('guild', { id: msg.guild.id }, { darling: '' });
+ return msg.reply('The previous darling has been removed!');
+ } else if (type === 'set') {
+ return msg.channel.send(`I already have a darling! It's **${msg.guild.members.cache.get(existing.darling).user.tag}**! To set a new darling, either the current darling or someone who has permissions to manage guild settings can do \`${this.client.commandHandler.prefix}darling remove\`.`);
+ } else if (type === 'check') {
+ return msg.channel.send(`My darling **${msg.guild.members.cache.get(existing.darling).user.tag}**!`);
}
- });
+ } else if (!hasDarling) {
+ if (type === 'remove') {
+ return msg.reply('There is no darling set in this server!');
+ } else if (type === 'set') {
+ await this.client.settings.set('guild', { id: msg.guild.id }, { darling: msg.author.id });
+ const quotes = [
+ 'I think I have taken a liking to you. Won\'t you be my darling?',
+ 'I like the look in your eyes. It makes my heart race. You are now my darling!',
+ 'Wow, your taste makes my heart race. It bites and lingers... The taste of danger. You are now my darling!'
+ ];
+ return msg.channel.send(quotes[Math.floor(Math.random() * quotes.length)]);
+ } else if (type === 'check') {
+ return msg.reply(`I haven't found my darling yet! To set one, do \`${this.client.commandHandler.prefix}darling set\`!`);
+ }
+ }
+
+ undefined;
}
} \ No newline at end of file
diff --git a/server/src/commands/emma/FanArt.ts b/server/src/commands/emma/FanArt.ts
index 5ac01f7..e193ba3 100644
--- a/server/src/commands/emma/FanArt.ts
+++ b/server/src/commands/emma/FanArt.ts
@@ -1,12 +1,7 @@
import { Command } from 'discord-akairo';
import { Message } from 'discord.js';
-import FanArt from '../../database/models/FanArtModel';
-import mongoose from 'mongoose';
-import { mongoDBUri, colour, emmaServer } from '../../Config';
-mongoose.connect(mongoDBUri, {
- useNewUrlParser: true,
- useUnifiedTopology: true
-});
+import { colour, emmaServer, prefix } from '../../Config';
+import { TextChannel } from 'discord.js';
export default class FanArtEmma extends Command {
public constructor() {
@@ -44,29 +39,29 @@ export default class FanArtEmma extends Command {
});
}
- public exec(msg: Message, { type, comment }): Promise<Message> | any {
+ public async exec(msg: Message, { type, comment }): Promise<Message> {
if (msg.guild.id.toString() !== emmaServer) return;
- const welcome = new FanArt({
- _id: mongoose.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 existing = this.client.settings.cache.guilds.get(msg.guild.id);
+ if (!existing) {
+ this.client.settings.new('guild', {
+ id: msg.guild.id,
+ premium: false,
+ prefix,
+ });
+ }
+ let hasFanart = true;
+ if (existing.fanart === undefined) {
+ hasFanart = false;
+ } else {
+ if (existing.fanart.length !== 18) hasFanart = false;
+ }
const validTypes = ['set', 'remove', 'check'];
if (type === 'submit') {
- FanArt.findOne({ guildID: msg.guild.id }, async (error, guild) => {
- if (error) return console.log(error);
-
- //@ts-ignore
- let fanartServer = this.client.guilds.cache.get(guild.guildID);
- //@ts-ignore
- let fanartChannel = guild.channelID;
+ if (hasFanart) {
+ let fanartServer = emmaServer;
+ let fanartChannel = existing.fanart;
if (msg.attachments.size) {
msg.attachments.forEach(fanart => {
@@ -87,12 +82,12 @@ export default class FanArtEmma extends Command {
} else {
return msg.reply(`No attachment was submitted! If you need help, please do \`${this.client.commandHandler.prefix}fanart help\`.`);
}
- });
+ }
} else if (type === 'help') {
const embed = this.client.util.embed()
.setTitle('Fanart - Help')
.setColor(colour)
- .setDescription('How to submmit fanart:')
+ .setDescription('How to submit fanart:')
.setThumbnail(msg.guild.iconURL())
.addField('#1', 'Go to the `#media` channel.')
.addField('#2', 'Click on the add media button in the bottom left corner of your screen and select a video or image.')
@@ -102,31 +97,27 @@ export default class FanArtEmma extends Command {
.addField('More Admin Info', 'You can only have **ONE** fanart channel (I think, I haven\'t tested it lol. If you change the name of the fanart channel, you will have to re-register with the bot by simply removing and re-setting the fanart channel');
return msg.channel.send(embed);
} else if (validTypes.includes(type)) {
- return FanArt.findOne({ guildID: msg.guild.id }, async (error, guild) => {
- if (error) return console.error(error);
-
- if (guild) {
- if (type === 'remove') {
- await FanArt.findOneAndDelete({ guildID: msg.guild.id });
- return msg.channel.send('The current fanart channel has been unset!');
- } else if (type === 'set') {
- //@ts-ignore
- return msg.channel.send(`There already is a fanart channel set! It's ${guild.channelname}`);
- } else if (type === 'check') {
- //@ts-ignore
- return msg.channel.send(`The current fanart channel is ${guild.channelname}!`);
- }
- } else if (!guild) {
- if (type === 'remove') {
- return msg.channel.send('There is no current fanart channel set for this guild!');
- } else if (type === 'set') {
- await welcome.save().catch(err => console.error(err));
- return msg.channel.send(`The fanart channel has been set to ${msg.channel!}`);
- } else if (type === 'check') {
- return msg.reply(`There is no current fanart channel set for this guild! To set one, do ${this.client.commandHandler.prefix}fanart set in the channel you want to set it in!`);
- }
+ if (hasFanart) {
+ if (type === 'remove') {
+ await this.client.settings.set('guild', { id: msg.guild.id }, { fanart: '' });
+ return msg.reply('The previous fanart channel has been un-set!');
+ } else if (type === 'set') {
+ return msg.channel.send(`There already is a fanart channel set! It's <#${msg.guild.channels.cache.get(existing.fanart).id}>!`);
+ } else if (type === 'check') {
+ return msg.channel.send(`The current fanart channel is <#${msg.guild.channels.cache.get(existing.fanart).id}>.`);
}
- });
+ } else if (!hasFanart) {
+ if (type === 'remove') {
+ return msg.reply('There is no fanart channel set in this server!');
+ } else if (type === 'set') {
+ await this.client.settings.set('guild', { id: msg.guild.id }, { fanart: (msg.channel as TextChannel).id });
+ return msg.reply(`The fanart channel has been set to <#${msg.channel.id}>!`)
+ } else if (type === 'check') {
+ return msg.reply(`There is no fanart channel set in this server! To set one, do \`${this.client.commandHandler.prefix}fanart set\`!`);
+ }
+ }
+
+ undefined;
}
}
} \ No newline at end of file
diff --git a/server/src/commands/mod/Ban.ts b/server/src/commands/mod/Ban.ts
index 3e81bfb..18060c4 100644
--- a/server/src/commands/mod/Ban.ts
+++ b/server/src/commands/mod/Ban.ts
@@ -49,8 +49,8 @@ export default class BanMod extends Command {
if (msg.mentions.members.first()) {
user = msg.mentions.members.first();
- await user.send(`You have been banned from **${msg.guild.name}** for the following reason(s): "**${reason}**".`);
- // .catch(() => console.log('[ERROR] Could not send message to banned user.'));
+ await user.send(`You have been banned from **${msg.guild.name}** for the following reason(s): "**${reason}**".`)
+ .catch(() => console.log('[ERROR] Could not send message to this user.'));
return user.ban({ reason: `Banned by: ${msg.author.username} for the following reason(s): ${reason}.`})
.then(() => msg.reply(`${user.user.username} was successfully banned with the following reason(s): "**${reason}**".`))
diff --git a/server/src/commands/mod/Kick.ts b/server/src/commands/mod/Kick.ts
index da1a91f..f19e34f 100644
--- a/server/src/commands/mod/Kick.ts
+++ b/server/src/commands/mod/Kick.ts
@@ -47,9 +47,12 @@ export default class KickMod extends Command {
if (!reason) reason = 'No reason has been specified.';
if (user === msg.author.id) return msg.channel.send('You can\'t kick yourself!');
- await user.send(`You have been kick from **${msg.guild.name}** for the following reason(s): "**${reason}**".`);
- // .catch(() => console.log('[ERROR] Could not send message to banned user.'));
+ user = msg.guild.members.cache.get(user);
+
+ await user.send(`You have been kick from **${msg.guild.name}** for the following reason(s): "**${reason}**".`)
+ .catch(() => console.log('[ERROR] Could not send message to this user.'));
+ // TODO: fix reason showing up as [Object object]
return user.kick({ reason: `Kicked by: ${msg.author.username} for the following reason(s): ${reason}.`})
.then(() => msg.reply(`${user.user.username} was successfully kick with the following reason(s): "**${reason}**".`))
.catch(err => console.error(err));
diff --git a/server/src/commands/owner/Database.ts b/server/src/commands/owner/Database.ts
new file mode 100644
index 0000000..cd88dfc
--- /dev/null
+++ b/server/src/commands/owner/Database.ts
@@ -0,0 +1,43 @@
+import { Command } from 'discord-akairo';
+import { Message } from 'discord.js';
+import { prefix } from '../../Config';
+
+export default class DatabaseOwner extends Command {
+ public constructor() {
+ super('database', {
+ aliases: ['database'],
+ category: 'owner',
+ description: {
+ content: 'Allows you to interact with certain aspects of the bot\'s database.',
+ usage: '[type]',
+ examples: [
+ 'check '
+ ]
+ },
+ ratelimit: 3,
+ ownerOnly: true,
+ args: [
+ {
+ id: 'type',
+ type: 'string',
+ prompt: {
+ start: 'What type of interaction would you like to have?'
+ }
+ }
+ ]
+ });
+ }
+
+ public async exec(msg: Message, { type }): Promise<Message> {
+ if (type === 'set') {
+ await this.client.settings.new('guild', {
+ id: msg.guild.id,
+ premium: false,
+ prefix,
+ });
+ return msg.reply('Current guild has been added to database.')
+ }
+
+ undefined;
+ }
+} \ No newline at end of file
diff --git a/server/src/commands/server/Goodbye.ts b/server/src/commands/server/Goodbye.ts
index bc341b8..7bafc4b 100644
--- a/server/src/commands/server/Goodbye.ts
+++ b/server/src/commands/server/Goodbye.ts
@@ -1,12 +1,7 @@
import { Command } from 'discord-akairo';
import { Message } from 'discord.js';
-import Goodbye from '../../database/models/GoodbyeModel';
-import mongoose from 'mongoose';
-import { mongoDBUri } from '../../Config';
-mongoose.connect(mongoDBUri, {
- useNewUrlParser: true,
- useUnifiedTopology: true
-});
+import { TextChannel } from 'discord.js';
+import { prefix } from '../../Config';
export default class GoodbyeServer extends Command {
public constructor() {
@@ -40,42 +35,42 @@ export default class GoodbyeServer extends Command {
});
}
- public exec(msg: Message, { type }): Promise<Message> | any {
- const goodbye = new Goodbye({
- _id: mongoose.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
- });
+ public async exec(msg: Message, { type }): Promise<Message> {
+ const existing = this.client.settings.cache.guilds.get(msg.guild.id);
+ if (!existing) {
+ this.client.settings.new('guild', {
+ id: msg.guild.id,
+ premium: false,
+ prefix,
+ });
+ }
+ let hasGoodbye = true;
+ if (existing.goodbye === undefined) {
+ hasGoodbye = false;
+ } else {
+ if (existing.goodbye.length !== 18) hasGoodbye = false;
+ }
- return Goodbye.findOne({ guildID: msg.guild.id }, async (error, guild) => {
- if (error) return console.error(error);
-
- if (guild) {
- if (type === 'remove') {
- await Goodbye.findOneAndDelete({ guildID: msg.guild.id });
- return msg.channel.send('The current goodbye channel has been unset!');
- } else if (type === 'set') {
- //@ts-ignore
- return msg.channel.send(`There already is a goodbye channel set! It's ${guild.channelname}`);
- } else if (type === 'check') {
- //@ts-ignore
- return msg.channel.send(`The current goodbye channel is ${guild.channelname}!`);
- }
- } else if (!guild) {
- if (type === 'remove') {
- return msg.channel.send('There is no current goodbye channel set for this guild!');
- } else if (type === 'set') {
- await goodbye.save().catch(err => console.error(err));
- return msg.channel.send(`The goodbye channel has been set to ${msg.channel!}`);
- } else if (type === 'check') {
- return msg.reply(`There is no current goodbye channel set for this guild! To set one, do ${this.client.commandHandler.prefix}goodbye set in the channel you want to set it in!`);
- }
+ if (hasGoodbye) {
+ if (type === 'remove') {
+ await this.client.settings.set('guild', { id: msg.guild.id }, { goodbye: '' });
+ return msg.reply('The previous goodbye channel has been un-set!');
+ } else if (type === 'set') {
+ return msg.channel.send(`There already is a goodbye channel set! It's <#${msg.guild.channels.cache.get(existing.goodbye).id}>!`);
+ } else if (type === 'check') {
+ return msg.channel.send(`The current goodbye channel is <#${msg.guild.channels.cache.get(existing.goodbye).id}>.`);
}
- });
+ } else if (!hasGoodbye) {
+ if (type === 'remove') {
+ return msg.reply('There is no goodbye channel set in this server!');
+ } else if (type === 'set') {
+ await this.client.settings.set('guild', { id: msg.guild.id }, { goodbye: (msg.channel as TextChannel).id });
+ return msg.reply(`The goodbye channel has been set to <#${msg.channel.id}>!`)
+ } else if (type === 'check') {
+ return msg.reply(`There is no goodbye channel set in this server! To set one, do \`${this.client.commandHandler.prefix}goodbye set\`!`);
+ }
+ }
+
+ undefined;
}
} \ No newline at end of file
diff --git a/server/src/commands/server/PFP.ts b/server/src/commands/server/PFP.ts
index d5ac00b..4f15123 100644
--- a/server/src/commands/server/PFP.ts
+++ b/server/src/commands/server/PFP.ts
@@ -1,6 +1,6 @@
import { Command } from 'discord-akairo';
import { Message } from 'discord.js';
-import { colour } from '../../Config';
+import { colour, owners } from '../../Config';
export default class PFPServer extends Command {
public constructor() {
@@ -31,6 +31,9 @@ export default class PFPServer extends Command {
}
public exec(msg: Message, { user }): Promise<Message> {
+ if ((user.id === owners[1]) && (msg.author.id !== owners[1]))
+ msg.reply('Sin is special, their identity shall remain anonymous.');
+
let embed = this.client.util.embed()
.setColor(colour)
diff --git a/server/src/commands/server/Welcome.ts b/server/src/commands/server/Welcome.ts
index 6c116d9..bf2f8d3 100644
--- a/server/src/commands/server/Welcome.ts
+++ b/server/src/commands/server/Welcome.ts
@@ -1,12 +1,7 @@
import { Command } from 'discord-akairo';
import { Message } from 'discord.js';
-import Welcome from '../../database/models/WelcomeModel';
-import mongoose from 'mongoose';
-import { mongoDBUri } from '../../Config';
-mongoose.connect(mongoDBUri, {
- useNewUrlParser: true,
- useUnifiedTopology: true
-});
+import { TextChannel } from 'discord.js';
+import { prefix } from '../../Config';
export default class WelcomeServer extends Command {
public constructor() {
@@ -40,42 +35,42 @@ export default class WelcomeServer extends Command {
});
}
- public exec(msg: Message, { type }): Promise<Message> | any {
- const welcome = new Welcome({
- _id: mongoose.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
- });
+ public async exec(msg: Message, { type }): Promise<Message> {
+ const existing = this.client.settings.cache.guilds.get(msg.guild.id);
+ if (!existing) {
+ this.client.settings.new('guild', {
+ id: msg.guild.id,
+ premium: false,
+ prefix,
+ });
+ }
+ let hasWelcome = true;
+ if (existing.welcome === undefined) {
+ hasWelcome = false;
+ } else {
+ if (existing.welcome.length !== 18) hasWelcome = false;
+ }
- return Welcome.findOne({ guildID: msg.guild.id }, async (error, guild) => {
- if (error) return console.error(error);
-
- if (guild) {
- if (type === 'remove') {
- await Welcome.findOneAndDelete({ guildID: msg.guild.id });
- return msg.channel.send('The current welcome channel has been unset!');
- } else if (type === 'set') {
- //@ts-ignore
- return msg.channel.send(`There already is a welcome channel set! It's ${guild.channelname}`);
- } else if (type === 'check') {
- //@ts-ignore
- return msg.channel.send(`The current welcome channel is ${guild.channelname}!`);
- }
- } else if (!guild) {
- if (type === 'remove') {
- return msg.channel.send('There is no current welcome channel set for this guild!');
- } else if (type === 'set') {
- await welcome.save().catch(err => console.error(err));
- return msg.channel.send(`The welcome channel has been set to ${msg.channel!}`);
- } else if (type === 'check') {
- return msg.reply(`There is no current welcome channel set for this guild! To set one, do ${this.client.commandHandler.prefix}welcome set in the channel you want to set it in!`);
- }
+ if (hasWelcome) {
+ if (type === 'remove') {
+ await this.client.settings.set('guild', { id: msg.guild.id }, { welcome: '' });
+ return msg.reply('The previous welcome channel has been un-set!');
+ } else if (type === 'set') {
+ return msg.channel.send(`There already is a welcome channel set! It's <#${msg.guild.channels.cache.get(existing.welcome).id}>!`);
+ } else if (type === 'check') {
+ return msg.channel.send(`The current welcome channel is <#${msg.guild.channels.cache.get(existing.welcome).id}>.`);
}
- });
+ } else if (!hasWelcome) {
+ if (type === 'remove') {
+ return msg.reply('There is no welcome channel set in this server!');
+ } else if (type === 'set') {
+ await this.client.settings.set('guild', { id: msg.guild.id }, { welcome: (msg.channel as TextChannel).id });
+ return msg.reply(`The welcome channel has been set to <#${msg.channel.id}>!`)
+ } else if (type === 'check') {
+ return msg.reply(`There is no welcome channel set in this server! To set one, do \`${this.client.commandHandler.prefix}welcome set\`!`);
+ }
+ }
+
+ undefined;
}
} \ No newline at end of file
diff --git a/server/src/database/index.ts b/server/src/database/index.ts
index 3e56d53..ad14794 100644
--- a/server/src/database/index.ts
+++ b/server/src/database/index.ts
@@ -1,5 +1,5 @@
-import ReactionGuildModel from './models/ReactionGuildModel';
+import GuildModel from './models/GuildModel';
import ReactionModel from './models/ReactionModel';
import SettingsProvider from './structures/SettingsProvider';
-export { SettingsProvider, ReactionGuildModel, ReactionModel }; \ No newline at end of file
+export { SettingsProvider, GuildModel, ReactionModel }; \ No newline at end of file
diff --git a/server/src/database/models/DarlingModel.ts b/server/src/database/models/DarlingModel.ts
deleted file mode 100644
index 3f98037..0000000
--- a/server/src/database/models/DarlingModel.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import mongoose from 'mongoose';
-const darlingSchema = new mongoose.Schema({
- _id: mongoose.Schema.Types.ObjectId,
- username: String,
- userID: String,
- guildname: String,
- guildID: String,
- time: String
-});
-export = mongoose.model('Darling', darlingSchema); \ No newline at end of file
diff --git a/server/src/database/models/FanArtModel.ts b/server/src/database/models/FanArtModel.ts
deleted file mode 100644
index c2d983e..0000000
--- a/server/src/database/models/FanArtModel.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import mongoose from 'mongoose';
-const fanArtSchema = new mongoose.Schema({
- _id: mongoose.Schema.Types.ObjectId,
- username: String,
- userID: String,
- guildname: String,
- guildID: String,
- channelname: String,
- channelID: String,
- time: String
-});
-export = mongoose.model('FanArt', fanArtSchema); \ No newline at end of file
diff --git a/server/src/database/models/GoodbyeModel.ts b/server/src/database/models/GoodbyeModel.ts
deleted file mode 100644
index 04cc7c4..0000000
--- a/server/src/database/models/GoodbyeModel.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import mongoose from 'mongoose';
-const goodbyeSchema = new mongoose.Schema({
- _id: mongoose.Schema.Types.ObjectId,
- username: String,
- userID: String,
- guildname: String,
- guildID: String,
- channelname: String,
- channelID: String,
- time: String
-});
-export = mongoose.model('Goodbye', goodbyeSchema); \ No newline at end of file
diff --git a/server/src/database/models/GuildModel.ts b/server/src/database/models/GuildModel.ts
new file mode 100644
index 0000000..de079ec
--- /dev/null
+++ b/server/src/database/models/GuildModel.ts
@@ -0,0 +1,36 @@
+import { Document, Schema, model } from 'mongoose';
+
+export interface Guild extends Document {
+ id: string;
+ prefix: string;
+ premium: boolean;
+ expiresAt: Date;
+ darling?: string;
+ welcome?: string;
+ goodbye?: string;
+ fanart?: string;
+}
+
+const Guild: Schema = new Schema({
+ id: String,
+ prefix: String,
+ premium: Boolean,
+ expiresAt: Date,
+ darling: {
+ required: false,
+ type: String
+ },
+ welcome: {
+ required: false,
+ type: String
+ },
+ goodbye: {
+ required: false,
+ type: String
+ },
+ fanart: {
+ required: false,
+ type: String
+ }
+}, { strict: false });
+export default model<Guild>('Guild', Guild); \ No newline at end of file
diff --git a/server/src/database/models/ReactionGuildModel.ts b/server/src/database/models/ReactionGuildModel.ts
deleted file mode 100644
index 6389b56..0000000
--- a/server/src/database/models/ReactionGuildModel.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { Document, Schema, model } from 'mongoose';
-
-export interface Guild extends Document {
- id: string;
- prefix: string;
- premium: boolean;
- expiresAt: Date;
-}
-
-const Guild: Schema = new Schema({
- id: String,
- prefix: String,
- premium: Boolean,
- expiresAt: Date
-}, { strict: false });
-export default model<Guild>('Guild', Guild); \ No newline at end of file
diff --git a/server/src/database/models/WelcomeModel.ts b/server/src/database/models/WelcomeModel.ts
deleted file mode 100644
index 2a26a6f..0000000
--- a/server/src/database/models/WelcomeModel.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import mongoose from 'mongoose';
-const welcomeSchema = new mongoose.Schema({
- _id: mongoose.Schema.Types.ObjectId,
- username: String,
- userID: String,
- guildname: String,
- guildID: String,
- channelname: String,
- channelID: String,
- time: String
-});
-export = mongoose.model('Welcome', welcomeSchema); \ No newline at end of file
diff --git a/server/src/database/structures/SettingsProvider.ts b/server/src/database/structures/SettingsProvider.ts
index 0a2325a..c82c109 100644
--- a/server/src/database/structures/SettingsProvider.ts
+++ b/server/src/database/structures/SettingsProvider.ts
@@ -2,7 +2,7 @@ import { Collection } from 'discord.js';
import { connect, Model, connection, Connection } from 'mongoose';
import { Logger } from 'winston';
import ReactionModel, { Reaction } from '../models/ReactionModel';
-import GuildModel, { Guild } from '../models/ReactionGuildModel';
+import GuildModel, { Guild } from '../models/GuildModel';
import { MONGO_EVENTS } from '../utils/Constants'
import BotClient from '../../client/BotClient';
import { mongoDBUri } from '../../Config';
diff --git a/server/src/listeners/client/guildMemberAdd.ts b/server/src/listeners/client/guildMemberAdd.ts
index 6a54d22..5b406c8 100644
--- a/server/src/listeners/client/guildMemberAdd.ts
+++ b/server/src/listeners/client/guildMemberAdd.ts
@@ -1,7 +1,8 @@
import { Listener } from 'discord-akairo';
-import Welcome from '../../database/models/WelcomeModel';
import { GuildMember } from 'discord.js';
import wMRResponses from '../../json/guildMemberAdd.json';
+import { TextChannel } from 'discord.js';
+import { Message } from 'discord.js';
export default class GuildMemberAddListener extends Listener {
public constructor() {
@@ -12,21 +13,28 @@ export default class GuildMemberAddListener extends Listener {
});
}
- public exec(member: GuildMember): void {
- Welcome.findOne({ guildID: member.guild.id }, async (error, g) => {
- if (error) return this.client.logger.error(`[CLIENT ERROR] ${error}`);
- if (!g) return;
-
+ public exec(member: GuildMember): Promise<Message | void> {
+ const existing = this.client.settings.cache.guilds.get(member.guild.id);
+ let hasWelcome = true;
+ if (existing === undefined) {
+ hasWelcome = false;
+ } else {
+ if (existing.welcome.length !== 18) hasWelcome = false;
+ }
+
+ if (hasWelcome) {
const secret = Math.floor(Math.random() * 1000);
if (secret === 420) {
- //@ts-ignore
- return member.guild.channels.cache.get(g.channelID).send(`${member.user.tag} (<@${member.id}>) has just got the secret welcome message! They had a **1/1000** chance of getting this! ✨`)
+ return (member.guild.channels.cache.get(existing.welcome) as TextChannel)
+ .send(`**${member.user.tag}** (<@${member.id}>) has just got the secret welcome message! They had a **1/1000** chance of getting this! ✨`)
.then(m => { m.react('✨') });
} else {
- const leaveMessage = await wMRResponses[Math.floor(Math.random() * wMRResponses.length)];
- //@ts-ignore
- return member.guild.channels.cache.get(g.channelID).send(`${member.user.tag} (<@${member.id}>) ${leaveMessage}`);
+ const leaveMessage = wMRResponses[Math.floor(Math.random() * wMRResponses.length)];
+ return (member.guild.channels.cache.get(existing.welcome) as TextChannel)
+ .send(`${member.user.tag} (<@${member.id}>) ${leaveMessage}`);
}
- });
+ }
+
+ undefined;
}
}
diff --git a/server/src/listeners/client/guildMemberRemove.ts b/server/src/listeners/client/guildMemberRemove.ts
index 40caa45..38e1b00 100644
--- a/server/src/listeners/client/guildMemberRemove.ts
+++ b/server/src/listeners/client/guildMemberRemove.ts
@@ -1,7 +1,8 @@
import { Listener } from 'discord-akairo';
-import Goodbye from '../../database/models/GoodbyeModel';
import { GuildMember } from 'discord.js';
import gMRResponses from '../../json/guildMemberRemove.json';
+import { TextChannel } from 'discord.js';
+import { Message } from 'discord.js';
export default class GuildMemberRemoveListener extends Listener {
public constructor() {
@@ -12,22 +13,28 @@ export default class GuildMemberRemoveListener extends Listener {
});
}
- public exec(member: GuildMember): void {
- Goodbye.findOne({ guildID: member.guild.id }, async (error, g) => {
- if (error) return this.client.logger.error(`[CLIENT ERROR] ${error}`);
- if (!g) return;
-
+ public exec(member: GuildMember): Promise<Message | void> {
+ const existing = this.client.settings.cache.guilds.get(member.guild.id);
+ let hasGoodbye = true;
+ if (existing === undefined) {
+ hasGoodbye = false;
+ } else {
+ if (existing.goodbye.length !== 18) hasGoodbye = false;
+ }
+
+ if (hasGoodbye) {
const secret = Math.floor(Math.random() * 1000);
if (secret === 420) {
- //@ts-ignore
- return member.guild.channels.cache.get(g.channelID).send(`${member.user.tag} (<@${member.id}>) has just got the secret goodbye message! They had a **1/1000** chance of getting this! ✨`)
+ return (member.guild.channels.cache.get(existing.goodbye) as TextChannel)
+ .send(`**${member.user.tag}** (<@${member.id}>) has just got the secret welcome message! They had a **1/1000** chance of getting this! ✨`)
.then(m => { m.react('✨') });
} else {
- const leaveMessage = await gMRResponses[Math.floor(Math.random() * gMRResponses.length)];
- //@ts-ignore
- return member.guild.channels.cache.get(g.channelID).send(`${member.user.tag} (<@${member.id}>) ${leaveMessage}`)
- .then(m => { m.react('🇫') });
+ const leaveMessage = gMRResponses[Math.floor(Math.random() * gMRResponses.length)];
+ return (member.guild.channels.cache.get(existing.goodbye) as TextChannel)
+ .send(`${member.user.tag} (<@${member.id}>) ${leaveMessage}`);
}
- });
+ }
+
+ undefined;
}
}
diff --git a/server/src/listeners/client/message.ts b/server/src/listeners/client/message.ts
index 429f3cc..e34d321 100644
--- a/server/src/listeners/client/message.ts
+++ b/server/src/listeners/client/message.ts
@@ -46,5 +46,22 @@ export default class MessageListener extends Listener {
msg.react('733301856054280253');
}
}
+
+ if (msg.guild.id === emmaServer) {
+ if (msg.content.toLowerCase().includes('chink')
+ || msg.content.toLowerCase().includes('fag')
+ || msg.content.toLowerCase().includes('faggot')
+ || msg.content.toLowerCase().includes('nig-nog')
+ || msg.content.toLowerCase().includes('nigga')
+ || msg.content.toLowerCase().includes('nigger')
+ || msg.content.toLowerCase().includes('nigguh')
+ || msg.content.toLowerCase().includes('street-shitter')
+ || msg.content.toLowerCase().includes('wigger')
+ || msg.content.toLowerCase().includes('wetback')
+ || msg.content.toLowerCase().includes('spic')
+ || msg.content.toLowerCase().includes('retard')
+ || msg.content.toLowerCase().includes('neonazi')
+ ) msg.delete();
+ }
}
}