Feature/81 slash command support #192
8 changed files with 26 additions and 16 deletions
|
@ -49,7 +49,7 @@ export class CoreClient extends Client {
|
|||
super.on("interactionCreate", this._events.onInteractionCreate);
|
||||
super.on("ready", this._events.onReady);
|
||||
|
||||
super.login(process.env.BOT_TOKEN);
|
||||
await super.login(process.env.BOT_TOKEN);
|
||||
|
||||
this._util.loadEvents(this, CoreClient._eventItems);
|
||||
this._util.loadSlashCommands(this);
|
||||
|
|
|
@ -13,19 +13,23 @@ export default class AddRole extends Command {
|
|||
.addChannelOption(option =>
|
||||
option
|
||||
.setName('channel')
|
||||
.setDescription('The channel'))
|
||||
.setDescription('The channel')
|
||||
.setRequired(true))
|
||||
.addRoleOption(option =>
|
||||
option
|
||||
.setName('role')
|
||||
.setDescription('The role to ping on request'))
|
||||
.setDescription('The role to ping on request')
|
||||
.setRequired(true))
|
||||
.addNumberOption(option =>
|
||||
option
|
||||
.setName('cooldown')
|
||||
.setDescription('The cooldown in minutes'))
|
||||
.setDescription('The cooldown in minutes')
|
||||
.setRequired(true))
|
||||
.addStringOption(option =>
|
||||
option
|
||||
.setName('name')
|
||||
.setDescription('The game name'));
|
||||
.setDescription('The game name')
|
||||
.setRequired(true));
|
||||
}
|
||||
|
||||
public override async execute(interaction: CommandInteraction) {
|
||||
|
@ -49,6 +53,6 @@ export default class AddRole extends Command {
|
|||
const entity = new eLobby(channel.channel.id, role.role.id, cooldown.value as number, gameName.value as string);
|
||||
await entity.Save(eLobby, entity);
|
||||
|
||||
await interaction.reply(`Added \`${channel.name}\` as a new lobby channel with a cooldown of \`${cooldown} minutes \` and will ping \`${role.name}\` on use`);
|
||||
await interaction.reply(`Added \`${channel.name}\` as a new lobby channel with a cooldown of \`${cooldown.value} minutes \` and will ping \`${role.name}\` on use`);
|
||||
}
|
||||
}
|
|
@ -36,6 +36,6 @@ export default class Lobby extends Command {
|
|||
lobby.MarkAsUsed();
|
||||
await lobby.Save(eLobby, lobby);
|
||||
|
||||
await interaction.reply(`${interaction.user} would like to organise a lobby of **${lobby.Name}**! <@${lobby.RoleId}>`);
|
||||
await interaction.reply(`${interaction.user} would like to organise a lobby of **${lobby.Name}**! <@&${lobby.RoleId}>`);
|
||||
}
|
||||
}
|
|
@ -14,7 +14,8 @@ export default class RemoveLobby extends Command {
|
|||
.addChannelOption(option =>
|
||||
option
|
||||
.setName('channel')
|
||||
.setDescription('The channel'));
|
||||
.setDescription('The channel')
|
||||
.setRequired(true));
|
||||
}
|
||||
|
||||
public override async execute(interaction: CommandInteraction) {
|
||||
|
@ -34,6 +35,6 @@ export default class RemoveLobby extends Command {
|
|||
|
||||
await BaseEntity.Remove<eLobby>(eLobby, entity);
|
||||
|
||||
await interaction.reply(`Removed <#${channel.channel.name}> from the list of lobby channels`);
|
||||
await interaction.reply(`Removed <#${channel.channel.id}> from the list of lobby channels`);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
import { CommandInteraction, EmbedBuilder, GuildMember, GuildMemberRoleManager, SlashCommandBuilder } from "discord.js";
|
||||
import { CommandInteraction, EmbedBuilder, GuildMemberRoleManager, SlashCommandBuilder } from "discord.js";
|
||||
import { Command } from "../../type/command";
|
||||
import { default as eRole } from "../../entity/Role";
|
||||
import EmbedColours from "../../constants/EmbedColours";
|
||||
|
@ -69,7 +69,6 @@ export default class Role extends Command {
|
|||
}
|
||||
|
||||
const roleManager = interaction.member.roles as GuildMemberRoleManager;
|
||||
const member = interaction.member as GuildMember;
|
||||
|
||||
const userRole = roleManager.cache.find(x => x.name == requestedRole.role!.name);
|
||||
const assignRole = interaction.guild.roles.cache.find(x => x.id == requestedRole.role!.id);
|
||||
|
|
|
@ -60,7 +60,8 @@ export default class Audits extends Command {
|
|||
{ name: 'Mute', value: AuditType.Mute.toString() },
|
||||
{ name: 'Kick', value: AuditType.Kick.toString() },
|
||||
{ name: 'Ban', value: AuditType.Ban.toString() },
|
||||
))
|
||||
)
|
||||
.setRequired(true))
|
||||
.addStringOption(option =>
|
||||
option
|
||||
.setName('reason')
|
||||
|
|
|
@ -13,6 +13,7 @@ export default class Clear extends Command {
|
|||
option
|
||||
.setName('count')
|
||||
.setDescription('The amount to delete')
|
||||
.setRequired(true)
|
||||
.setMinValue(1)
|
||||
.setMaxValue(100));
|
||||
}
|
||||
|
|
|
@ -21,7 +21,8 @@ export default class Config extends Command {
|
|||
.addStringOption(option =>
|
||||
option
|
||||
.setName('key')
|
||||
.setDescription('The key')))
|
||||
.setDescription('The key')
|
||||
.setRequired(true)))
|
||||
.addSubcommand(subcommand =>
|
||||
subcommand
|
||||
.setName('get')
|
||||
|
@ -29,7 +30,8 @@ export default class Config extends Command {
|
|||
.addStringOption(option =>
|
||||
option
|
||||
.setName('key')
|
||||
.setDescription('The key')))
|
||||
.setDescription('The key')
|
||||
.setRequired(true)))
|
||||
.addSubcommand(subcommand =>
|
||||
subcommand
|
||||
.setName('set')
|
||||
|
@ -37,11 +39,13 @@ export default class Config extends Command {
|
|||
.addStringOption(option =>
|
||||
option
|
||||
.setName('key')
|
||||
.setDescription('The key'))
|
||||
.setDescription('The key')
|
||||
.setRequired(true))
|
||||
.addStringOption(option =>
|
||||
option
|
||||
.setName('value')
|
||||
.setDescription('The value')))
|
||||
.setDescription('The value')
|
||||
.setRequired(true)))
|
||||
.addSubcommand(subcommand =>
|
||||
subcommand
|
||||
.setName('list')
|
||||
|
|
Loading…
Reference in a new issue