From a62c0e3b7875f34f4df265206f92022ec4292597 Mon Sep 17 00:00:00 2001 From: Rauf Date: Tue, 14 Jan 2020 00:15:34 -0500 Subject: [PATCH] feat(events): command user usage level checking --- src/assertions/userLevel.ts | 15 +++++++++++++++ src/events/lifeguardCommandUsed.ts | 11 ++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/assertions/userLevel.ts diff --git a/src/assertions/userLevel.ts b/src/assertions/userLevel.ts new file mode 100644 index 0000000..b336b9e --- /dev/null +++ b/src/assertions/userLevel.ts @@ -0,0 +1,15 @@ +import { GuildMember, Guild } from 'discord.js'; +import { developers } from '../config/bot'; + +export function calcUserLevel(user: GuildMember, guild: Guild) { + if (developers.includes(user.id)) { + return 5; + } + if (user.id === guild.ownerID) { + return 4; + } + if (user.permissions.has('ADMINISTRATOR', true)) { + return 3; + } + return 0; +} diff --git a/src/events/lifeguardCommandUsed.ts b/src/events/lifeguardCommandUsed.ts index 50198d6..3aa3b89 100644 --- a/src/events/lifeguardCommandUsed.ts +++ b/src/events/lifeguardCommandUsed.ts @@ -2,6 +2,7 @@ import { Event } from './Event'; import { Message } from 'discord.js'; import { prefix } from '../config/bot'; import { PluginClient } from '../PluginClient'; +import { calcUserLevel } from '../assertions/userLevel'; function parseContent(content: string) { const split = content.split(' '); @@ -21,6 +22,14 @@ export const event = new Event( async (lifeguard, msg: Message) => { const [cmdName, ...args] = parseContent(msg.content); const cmd = getCommandFromPlugin(lifeguard, cmdName); - cmd?.func(lifeguard, msg, args); + + if (cmd) { + if (msg.member && msg.guild) { + const userLevel = calcUserLevel(msg.member, msg.guild); + if (userLevel >= cmd.options.level) { + cmd.func(lifeguard, msg, args); + } + } + } } );