You've already forked discord-bot
mirror of
https://github.com/t2linux/discord-bot.git
synced 2026-04-30 13:49:21 -07:00
d113a7355b
The name "set" implies to replace an entry if already present
47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
import { Channel, Emoji, GuildMember, Message, Role } from 'discord.js';
|
|
import { config, data } from '..';
|
|
import { Argument } from '../argument';
|
|
import { ChannelArgument } from '../arguments/channelArgument';
|
|
import { EmojiArgument } from '../arguments/emojiArgument';
|
|
import { RoleArgument } from '../arguments/roleArgument';
|
|
import { Command } from '../command';
|
|
|
|
export class SetRoleCommand extends Command {
|
|
|
|
public name(): string {
|
|
return 'setRole';
|
|
}
|
|
|
|
public description(): string {
|
|
return 'Registers or replaces an emoji as a role reaction emoji in a specified channel';
|
|
}
|
|
|
|
public arguments(): Array<Argument> {
|
|
return [
|
|
{ name: 'role', type: 'Role', description: 'The role of the role reaction emoji to be registerd' },
|
|
{ name: 'channel', type: 'Channel', description: 'The channel in which the role reaction emoji should be registered' },
|
|
{ name: 'emoji', type: 'CustomEmoji | UnicodeEmoji', description: 'The emoji of the role reaction emoji to be registered' }
|
|
];
|
|
}
|
|
|
|
public async permitted(member: GuildMember): Promise<boolean> {
|
|
return config.discord.admin.includes(member.id);
|
|
}
|
|
|
|
public async handle(message: Message, args: Array<string>): Promise<void> {
|
|
const [ roleArgument, channelArgument, emojiArgument ] = args;
|
|
|
|
const role: Role = await RoleArgument.parse(message, roleArgument);
|
|
const channel: Channel = await ChannelArgument.parse(channelArgument);
|
|
const emoji: string | Emoji = await EmojiArgument.parse(message, emojiArgument);
|
|
|
|
const emojiId: string = typeof emoji === 'string' ? emoji : emoji.id;
|
|
|
|
if (data.hasEmoji(channel.id, emojiId))
|
|
data.removeEmoji(channel.id, emojiId);
|
|
|
|
data.addEmoji(channel.id, emojiId, role.id);
|
|
|
|
message.react('👌');
|
|
}
|
|
} |