Add poll command
This commit is contained in:
parent
5a31c3cf74
commit
64649743e7
2 changed files with 93 additions and 0 deletions
91
src/commands/poll.ts
Normal file
91
src/commands/poll.ts
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
import { CommandInteraction, SlashCommandBuilder } from "discord.js";
|
||||||
|
import { Command } from "../type/command";
|
||||||
|
import { EmbedBuilder } from "@discordjs/builders";
|
||||||
|
import EmbedColours from "../constants/EmbedColours";
|
||||||
|
|
||||||
|
export default class Poll extends Command {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
super.CommandBuilder = new SlashCommandBuilder()
|
||||||
|
.setName('poll')
|
||||||
|
.setDescription('Run a poll, automatically adding reaction emojis as options')
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName('title')
|
||||||
|
.setDescription('Title of the poll')
|
||||||
|
.setRequired(true))
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName('option1')
|
||||||
|
.setDescription('Option 1')
|
||||||
|
.setRequired(true))
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName('option2')
|
||||||
|
.setDescription('Option 2')
|
||||||
|
.setRequired(true))
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName('option3')
|
||||||
|
.setDescription('Option 3'))
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName('option4')
|
||||||
|
.setDescription('Option 4'))
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName('option5')
|
||||||
|
.setDescription('Option 5'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async execute(interaction: CommandInteraction) {
|
||||||
|
const title = interaction.options.get('title');
|
||||||
|
const option1 = interaction.options.get('option1');
|
||||||
|
const option2 = interaction.options.get('option2');
|
||||||
|
const option3 = interaction.options.get('option3');
|
||||||
|
const option4 = interaction.options.get('option4');
|
||||||
|
const option5 = interaction.options.get('option5');
|
||||||
|
|
||||||
|
if (!title || !option1 || !option2) return;
|
||||||
|
|
||||||
|
const description = [
|
||||||
|
option1.value as string,
|
||||||
|
option2.value as string,
|
||||||
|
option3?.value as string,
|
||||||
|
option4?.value as string,
|
||||||
|
option5?.value as string
|
||||||
|
]
|
||||||
|
.filter(x => x != null);
|
||||||
|
|
||||||
|
const arrayOfNumbers = [
|
||||||
|
':one:',
|
||||||
|
':two:',
|
||||||
|
':three:',
|
||||||
|
':four:',
|
||||||
|
':five:',
|
||||||
|
];
|
||||||
|
|
||||||
|
const reactionEmojis = ["1️⃣", "2️⃣", "3️⃣", "4️⃣", "5️⃣", "6️⃣", "7️⃣", "8️⃣", "9️⃣"];
|
||||||
|
|
||||||
|
description.forEach((value, index) => {
|
||||||
|
description[index] = `${reactionEmojis[index]} ${description[index]}`;
|
||||||
|
});
|
||||||
|
|
||||||
|
const embed = new EmbedBuilder()
|
||||||
|
.setColor(EmbedColours.Ok)
|
||||||
|
.setTitle(title.value as string)
|
||||||
|
.setDescription(description.join('\n'))
|
||||||
|
.setFooter({
|
||||||
|
text: `Poll by ${interaction.user.username}`,
|
||||||
|
iconURL: interaction.user.avatarURL()!,
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const message = await interaction.reply({ embeds: [ embed ]});
|
||||||
|
|
||||||
|
description.forEach(async (value, index) => {
|
||||||
|
await (await message.fetch()).react(reactionEmojis[index]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,6 +13,7 @@ import Disable from "./commands/disable";
|
||||||
import Ignore from "./commands/ignore";
|
import Ignore from "./commands/ignore";
|
||||||
import Kick from "./commands/kick";
|
import Kick from "./commands/kick";
|
||||||
import Mute from "./commands/mute";
|
import Mute from "./commands/mute";
|
||||||
|
import Poll from "./commands/poll";
|
||||||
import Role from "./commands/Role/role";
|
import Role from "./commands/Role/role";
|
||||||
import ConfigRole from "./commands/Role/config";
|
import ConfigRole from "./commands/Role/config";
|
||||||
import Rules from "./commands/rules";
|
import Rules from "./commands/rules";
|
||||||
|
@ -49,6 +50,7 @@ export default class Registry {
|
||||||
CoreClient.RegisterCommand("ignore", new Ignore());
|
CoreClient.RegisterCommand("ignore", new Ignore());
|
||||||
CoreClient.RegisterCommand("kick", new Kick());
|
CoreClient.RegisterCommand("kick", new Kick());
|
||||||
CoreClient.RegisterCommand("mute", new Mute());
|
CoreClient.RegisterCommand("mute", new Mute());
|
||||||
|
CoreClient.RegisterCommand("poll", new Poll());
|
||||||
CoreClient.RegisterCommand("rules", new Rules());
|
CoreClient.RegisterCommand("rules", new Rules());
|
||||||
CoreClient.RegisterCommand("setup", new Setup());
|
CoreClient.RegisterCommand("setup", new Setup());
|
||||||
CoreClient.RegisterCommand("timeout", new Timeout());
|
CoreClient.RegisterCommand("timeout", new Timeout());
|
||||||
|
|
Loading…
Reference in a new issue