Skip to content

Commit

Permalink
chore: 🤖 separate permissions for client and user
Browse files Browse the repository at this point in the history
  • Loading branch information
Mikael-R committed Oct 10, 2020
1 parent 69b351e commit 9e73ddc
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 22 deletions.
22 changes: 17 additions & 5 deletions src/commands/general/help/command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,23 @@ class Help implements Command {
Command.permissions &&
fields.push({
name: 'Permissions',
value: Command.permissions
.join(', ')
.split('_')
.join(' ')
.toLowerCase(),
value: `${
Command.permissions?.client
? `Client: ${Command.permissions.client
.join(', ')
.split('_')
.join(' ')
.toLowerCase()}\n\n`
: ''
}${
Command.permissions?.user
? `User: ${Command.permissions.user
.join(', ')
.split('_')
.join(' ')
.toLowerCase()}`
: ''
}`,
})
fields.push({
name: 'Usage',
Expand Down
10 changes: 5 additions & 5 deletions src/commands/general/request-permission/command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class RequestPermission implements Command {

const userNeedPermissions = needPermissions({
member: message.guild.members.resolve(message.author.id),
permissions: Command.permissions || [],
permissions: Command.permissions?.user || [],
})

const invalidCallCommandDescription = (
Expand All @@ -70,18 +70,18 @@ class RequestPermission implements Command {
Command,
messageArgs,
permissions: {
client: message.guild.me.permissions.toArray(),
user: message.guild.me.permissions.toArray(),
bot: message.guild.me.permissions.toArray(),
},
})
)?.description
?.split('\n\n')
?.slice(0, -1)

switch (true) {
case !Command.permissions?.length:
case !Command.permissions?.user:
return [
`:red_circle: Not is required permission to run: \`\`${requestRun}\`\``,
`:red_circle: Users not need permission to run: \`\`${requestRun}\`\``,
]

case !userNeedPermissions.length:
Expand Down Expand Up @@ -112,7 +112,7 @@ class RequestPermission implements Command {
const filter: CustomCollectorFilter = (reaction, user) => {
const havePermission = !needPermissions({
member: reaction.message.guild.members.resolve(user.id),
permissions: Command?.permissions || [],
permissions: Command?.permissions?.user || [],
}).length

const isValidEmojiReaction = ['👍', '👎'].includes(reaction.emoji.name)
Expand Down
6 changes: 5 additions & 1 deletion src/commands/moderator/clear/command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ class Clear implements Command {
static commandName = 'clear'
static aliases = ['c', 'cls']
static description = 'Delete previous messages'
static permissions: PermissionString[] = ['MANAGE_MESSAGES']
static permissions = {
client: ['MANAGE_MESSAGES'] as PermissionString[],
user: ['MANAGE_MESSAGES'] as PermissionString[],
}

static minArguments = 1
static usage = 'clear [limit]'
static example = 'clear 7'
Expand Down
6 changes: 5 additions & 1 deletion src/commands/moderator/kick/command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@ class Kick implements Command {
static aliases = ['k', 'kck']
static description = 'Kick user from server'
static minArguments = 1
static permissions: PermissionString[] = ['KICK_MEMBERS']
static permissions = {
user: ['KICK_MEMBERS'] as PermissionString[],
client: ['KICK_MEMBERS'] as PermissionString[],
}

static usage = 'kick [mention, id]'
static example = 'kick 736626386009194676'

Expand Down
5 changes: 4 additions & 1 deletion src/commands/music/join/command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ class Join implements Command {
static aliases = ['jn', 'connect']
static description = 'Connect in voice channel'
static minArguments = 0
static permissions: PermissionString[] = ['CONNECT']
static permissions = {
client: ['CONNECT'] as PermissionString[],
}

static usage = 'join'

validator() {
Expand Down
5 changes: 4 additions & 1 deletion src/commands/music/play/command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,10 @@ class Play implements Command {
static aliases = ['p', 'pl']
static description = 'Plays audio from YouTube videos on voice channels'
static minArguments = 1
static permissions: PermissionString[] = ['SPEAK']
static permissions = {
client: ['SPEAK'] as PermissionString[],
}

static usage = 'play [name, url, id]'
static example = 'play Sub Urban - Cradles'

Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ client.on('message', async message => {
Command,
messageArgs,
permissions: {
client: message.guild.me.permissions.toArray(),
user: message.guild.members
.resolve(message.author.id)
.permissions.toArray(),
bot: message.guild.me.permissions.toArray(),
},
})

Expand Down
15 changes: 10 additions & 5 deletions src/tools/onCallCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,15 @@ const invalidCall: InvalidCall = async ({
}) => {
const description: string[] = []

const commandPermissions = Command.permissions || []
const needPermissions = {
user: commandPermissions.filter(perm => !permissions.user.includes(perm)),
bot: commandPermissions.filter(perm => !permissions.bot.includes(perm)),
client:
Command.permissions?.client?.filter(
perm => !permissions.client.includes(perm)
) || [],
user:
Command.permissions?.user?.filter(
perm => !permissions.user.includes(perm)
) || [],
}

const commandInitialized = new Command({ message, embed, messageArgs })
Expand All @@ -35,9 +40,9 @@ const invalidCall: InvalidCall = async ({
description.push(`:red_circle: Need arguments: \`\`${Command.usage}\`\``)
break

case !!needPermissions.bot.length:
case !!needPermissions.client.length:
description.push(
`:red_circle: I need permissions: \`\`${needPermissions.bot.join(
`:red_circle: I need permissions: \`\`${needPermissions.client.join(
', '
)}\`\``
)
Expand Down
7 changes: 5 additions & 2 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ export interface CommandClass {
commandName: string
aliases: string[]
description: string
permissions?: PermissionString[]
permissions?: {
client?: PermissionString[]
user?: PermissionString[]
}
minArguments: number
usage: string
example?: string
Expand Down Expand Up @@ -43,8 +46,8 @@ export interface InvalidCall {
Command: CommandClass
messageArgs: string[]
permissions: {
client: PermissionString[]
user: PermissionString[]
bot: PermissionString[]
}
}): Promise<MessageEmbed> | MessageEmbed
}
Expand Down

0 comments on commit 9e73ddc

Please sign in to comment.