Feature/48 database (#114)

* Add database and default values

* Add ability to save a setting to the database

* Get commands and events to use database

* Setup and config command

* Update commands to check roles per server

* Different rules per server

Signed-off-by: Ethan Lane <ethan@vylpes.com>

* Different prefix per server

Signed-off-by: Ethan Lane <ethan@vylpes.com>

* Add verification system

Signed-off-by: Ethan Lane <ethan@vylpes.com>

* Disabled commands per server

* Add devmode for default prefix

* Update embeds

* Fix broken tests
This commit is contained in:
Vylpes 2022-03-29 18:19:54 +01:00 committed by GitHub
parent c8edd1b4c5
commit 6a00c49ef3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 1816 additions and 373 deletions

View file

@ -3,7 +3,7 @@ import MemberEvents from "../../src/events/MemberEvents";
import GuildMemberUpdate from "../../src/events/MemberEvents/GuildMemberUpdate";
describe('GuildMemberAdd', () => {
test('When event is fired, expect embed to be sent to logs channel', () => {
test('When event is fired, expect embed to be sent to logs channel', async () => {
const currentDate = new Date();
const textChannel = {
@ -34,7 +34,7 @@ describe('GuildMemberAdd', () => {
const memberEvents = new MemberEvents();
const result = memberEvents.guildMemberAdd(guildMember);
const result = await memberEvents.guildMemberAdd(guildMember);
expect(textChannel.send).toBeCalledTimes(1);
expect(userDisplayAvatarURL).toBeCalledTimes(1);
@ -63,7 +63,7 @@ describe('GuildMemberAdd', () => {
});
describe('GuildMemberRemove', () => {
test('When event is fired, expect embed to be sent to logs channel', () => {
test('When event is fired, expect embed to be sent to logs channel', async () => {
const currentDate = new Date();
const textChannel = {
@ -95,7 +95,7 @@ describe('GuildMemberRemove', () => {
const memberEvents = new MemberEvents();
const result = memberEvents.guildMemberRemove(guildMember);
const result = await memberEvents.guildMemberRemove(guildMember);
expect(textChannel.send).toBeCalledTimes(1);
expect(userDisplayAvatarURL).toBeCalledTimes(1);
@ -124,7 +124,7 @@ describe('GuildMemberRemove', () => {
});
describe('GuildMemberUpdate', () => {
test('Given nicknames are the same, expect NicknameChanged NOT to be called', () => {
test('Given nicknames are the same, expect NicknameChanged NOT to be called', async () => {
const member = {
nickname: 'member'
} as unknown as GuildMember;
@ -135,13 +135,13 @@ describe('GuildMemberUpdate', () => {
const memberEvents = new MemberEvents();
const result = memberEvents.guildMemberUpdate(member, member);
const result = await memberEvents.guildMemberUpdate(member, member);
expect(result.embeds.length).toBe(0);
expect(nicknameChanged).not.toBeCalled();
});
test('Given nicknames are the different, expect NicknameChanged to be called', () => {
test('Given nicknames are the different, expect NicknameChanged to be called', async () => {
const oldMember = {
nickname: 'oldMember'
} as unknown as GuildMember;
@ -156,7 +156,7 @@ describe('GuildMemberUpdate', () => {
const memberEvents = new MemberEvents();
const result = memberEvents.guildMemberUpdate(oldMember, newMember);
const result = await memberEvents.guildMemberUpdate(oldMember, newMember);
expect(result.embeds.length).toBe(0);
expect(nicknameChanged).toBeCalledTimes(1);

View file

@ -23,7 +23,7 @@ describe('Constructor', () => {
});
describe('NicknameChanged', () => {
test('Given nickname has changed from one to another, expect embed to be sent with both', () => {
test('Given nickname has changed from one to another, expect embed to be sent with both', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -61,7 +61,7 @@ describe('NicknameChanged', () => {
const guildMemberUpdate = new GuildMemberUpdate(oldMember, newMember);
const result = guildMemberUpdate.NicknameChanged();
const result = await guildMemberUpdate.NicknameChanged();
expect(channelSend).toBeCalledTimes(1);
expect(memberGuildChannelsCacheFind).toBeCalledTimes(1);
@ -94,7 +94,7 @@ describe('NicknameChanged', () => {
expect(embedFieldAfter.value).toBe('New Nickname');
});
test('Given old nickname was null, expect embed to say old nickname was none', () => {
test('Given old nickname was null, expect embed to say old nickname was none', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -130,7 +130,7 @@ describe('NicknameChanged', () => {
const guildMemberUpdate = new GuildMemberUpdate(oldMember, newMember);
const result = guildMemberUpdate.NicknameChanged();
const result = await guildMemberUpdate.NicknameChanged();
expect(channelSend).toBeCalledTimes(1);
expect(memberGuildChannelsCacheFind).toBeCalledTimes(1);
@ -163,7 +163,7 @@ describe('NicknameChanged', () => {
expect(embedFieldAfter.value).toBe('New Nickname');
});
test('Given new nickname was null, expect embed to say new nickname was none', () => {
test('Given new nickname was null, expect embed to say new nickname was none', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -200,7 +200,7 @@ describe('NicknameChanged', () => {
const guildMemberUpdate = new GuildMemberUpdate(oldMember, newMember);
const result = guildMemberUpdate.NicknameChanged();
const result = await guildMemberUpdate.NicknameChanged();
expect(channelSend).toBeCalledTimes(1);
expect(memberGuildChannelsCacheFind).toBeCalledTimes(1);

View file

@ -6,7 +6,7 @@ beforeEach(() => {
});
describe('MessageDelete', () => {
test('Given message was in a guild AND user was NOT a bot, expect message deleted embed to be sent', () => {
test('Given message was in a guild AND user was NOT a bot, expect message deleted embed to be sent', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -57,7 +57,7 @@ describe('MessageDelete', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageDelete(message);
const result = await messageEvents.messageDelete(message);
expect(channelSend).toBeCalledTimes(1);
expect(memberGuildChannelsCacheFind).toBeCalledTimes(1);
@ -95,7 +95,7 @@ describe('MessageDelete', () => {
expect(embedFieldAttachments.value).toBe('```image0.png\nimage1.png```');
});
test('Given message was not sent in a guild, expect execution stopped', () => {
test('Given message was not sent in a guild, expect execution stopped', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -139,7 +139,7 @@ describe('MessageDelete', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageDelete(message);
const result = await messageEvents.messageDelete(message);
expect(channelSend).not.toBeCalled();
expect(memberGuildChannelsCacheFind).not.toBeCalled();
@ -147,7 +147,7 @@ describe('MessageDelete', () => {
expect(result.embeds.length).toBe(0);
});
test('Given author is a bot, expect execution stopped', () => {
test('Given author is a bot, expect execution stopped', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -198,7 +198,7 @@ describe('MessageDelete', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageDelete(message);
const result = await messageEvents.messageDelete(message);
expect(channelSend).not.toBeCalled();
expect(memberGuildChannelsCacheFind).not.toBeCalled();
@ -206,7 +206,7 @@ describe('MessageDelete', () => {
expect(result.embeds.length).toBe(0);
});
test('Given message does not contain any attachments, expect attachments field to be omitted', () => {
test('Given message does not contain any attachments, expect attachments field to be omitted', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -244,7 +244,7 @@ describe('MessageDelete', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageDelete(message);
const result = await messageEvents.messageDelete(message);
expect(channelSend).toBeCalledTimes(1);
expect(memberGuildChannelsCacheFind).toBeCalledTimes(1);
@ -278,7 +278,7 @@ describe('MessageDelete', () => {
});
describe('MessageUpdate', () => {
test('Given message is in a guild AND user is not a bot AND the content has actually changed, e xpect log embed to be sent', () => {
test('Given message is in a guild AND user is not a bot AND the content has actually changed, e xpect log embed to be sent', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -317,7 +317,7 @@ describe('MessageUpdate', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageUpdate(oldMessage, newMessage);
const result = await messageEvents.messageUpdate(oldMessage, newMessage);
expect(channelSend).toBeCalledTimes(1);
expect(memberGuildChannelsCacheFind).toBeCalledTimes(1);
@ -357,7 +357,7 @@ describe('MessageUpdate', () => {
expect(embedFieldAfter.value).toBe('```New Message```');
});
test('Given message was not in a guild, expect execution stopped', () => {
test('Given message was not in a guild, expect execution stopped', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -389,7 +389,7 @@ describe('MessageUpdate', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageUpdate(oldMessage, newMessage);
const result = await messageEvents.messageUpdate(oldMessage, newMessage);
expect(channelSend).not.toBeCalled();
expect(memberGuildChannelsCacheFind).not.toBeCalled();
@ -397,7 +397,7 @@ describe('MessageUpdate', () => {
expect(result.embeds.length).toBe(0);
});
test('Given author is a bot, expect execution stopped', () => {
test('Given author is a bot, expect execution stopped', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -436,7 +436,7 @@ describe('MessageUpdate', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageUpdate(oldMessage, newMessage);
const result = await messageEvents.messageUpdate(oldMessage, newMessage);
expect(channelSend).not.toBeCalled();
expect(memberGuildChannelsCacheFind).not.toBeCalled();
@ -444,7 +444,7 @@ describe('MessageUpdate', () => {
expect(result.embeds.length).toBe(0);
});
test('Given the message contents are the same, expect execution stopped', () => {
test('Given the message contents are the same, expect execution stopped', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -483,7 +483,7 @@ describe('MessageUpdate', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageUpdate(oldMessage, newMessage);
const result = await messageEvents.messageUpdate(oldMessage, newMessage);
expect(channelSend).not.toBeCalled();
expect(memberGuildChannelsCacheFind).not.toBeCalled();
@ -491,7 +491,7 @@ describe('MessageUpdate', () => {
expect(result.embeds.length).toBe(0);
});
test('Given Old Message did not have a content, expect field to account for this', () => {
test('Given Old Message did not have a content, expect field to account for this', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -528,7 +528,7 @@ describe('MessageUpdate', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageUpdate(oldMessage, newMessage);
const result = await messageEvents.messageUpdate(oldMessage, newMessage);
expect(channelSend).toBeCalledTimes(1);
expect(memberGuildChannelsCacheFind).toBeCalledTimes(1);
@ -568,7 +568,7 @@ describe('MessageUpdate', () => {
expect(embedFieldAfter.value).toBe('```New Message```');
});
test('Given New Message does not have a content, expect field to account for this', () => {
test('Given New Message does not have a content, expect field to account for this', async () => {
process.env = {
CHANNELS_LOGS_MOD: 'mod-logs'
}
@ -606,7 +606,7 @@ describe('MessageUpdate', () => {
const messageEvents = new MessageEvents();
const result = messageEvents.messageUpdate(oldMessage, newMessage);
const result = await messageEvents.messageUpdate(oldMessage, newMessage);
expect(channelSend).toBeCalledTimes(1);
expect(memberGuildChannelsCacheFind).toBeCalledTimes(1);