utility: add interaction commands for jumbo, charinfo, appinfo, guildinfo
This commit is contained in:
parent
80833c60a2
commit
cfd6664ea8
2 changed files with 115 additions and 9 deletions
|
@ -46,7 +46,7 @@ async function runCommand(interaction, command) {
|
||||||
async function InteractionDispatcher(interaction) {
|
async function InteractionDispatcher(interaction) {
|
||||||
const command = hf.interactionCommands.get(interaction.data.name);
|
const command = hf.interactionCommands.get(interaction.data.name);
|
||||||
const shouldSend = getOption(interaction, command, "send");
|
const shouldSend = getOption(interaction, command, "send");
|
||||||
await interaction.acknowledge(shouldSend ? 0 : MessageFlags.EPHEMERAL);
|
const ack = interaction.acknowledge(shouldSend ? 0 : MessageFlags.EPHEMERAL);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await runCommand(interaction, command);
|
const response = await runCommand(interaction, command);
|
||||||
|
@ -93,6 +93,7 @@ async function InteractionDispatcher(interaction) {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
await ack;
|
||||||
await interaction.createMessage(
|
await interaction.createMessage(
|
||||||
Object.assign(
|
Object.assign(
|
||||||
typeof response === "string" ? {content: response} : response,
|
typeof response === "string" ? {content: response} : response,
|
||||||
|
@ -105,6 +106,7 @@ async function InteractionDispatcher(interaction) {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
await ack;
|
||||||
await interaction.createMessage({
|
await interaction.createMessage({
|
||||||
content: `:warning: An error has occurred:\n\`\`\`${err}\`\`\``,
|
content: `:warning: An error has occurred:\n\`\`\`${err}\`\`\``,
|
||||||
flags: MessageFlags.EPHEMERAL,
|
flags: MessageFlags.EPHEMERAL,
|
||||||
|
@ -115,6 +117,7 @@ async function InteractionDispatcher(interaction) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
await ack;
|
||||||
await interaction.createMessage({
|
await interaction.createMessage({
|
||||||
content: `:warning: An error has occurred:\n\`\`\`${err}\`\`\``,
|
content: `:warning: An error has occurred:\n\`\`\`${err}\`\`\``,
|
||||||
flags: MessageFlags.EPHEMERAL,
|
flags: MessageFlags.EPHEMERAL,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
const Command = require("../lib/command.js");
|
const Command = require("../lib/command.js");
|
||||||
|
const InteractionCommand = require("../lib/interactionCommand.js");
|
||||||
const CATEGORY = "utility";
|
const CATEGORY = "utility";
|
||||||
|
|
||||||
// {{{ imports
|
// {{{ imports
|
||||||
|
@ -7,6 +8,7 @@ const sharp = require("sharp");
|
||||||
const {Constants, VoiceChannel} = require("@projectdysnomia/dysnomia");
|
const {Constants, VoiceChannel} = require("@projectdysnomia/dysnomia");
|
||||||
const Endpoints = require("@projectdysnomia/dysnomia/lib/rest/Endpoints.js");
|
const Endpoints = require("@projectdysnomia/dysnomia/lib/rest/Endpoints.js");
|
||||||
|
|
||||||
|
const {getOption} = require("../lib/interactionDispatcher.js");
|
||||||
const {
|
const {
|
||||||
formatTime,
|
formatTime,
|
||||||
hastebin,
|
hastebin,
|
||||||
|
@ -368,12 +370,13 @@ const EMOJI_SETS = {
|
||||||
suffix: ".svg",
|
suffix: ".svg",
|
||||||
},
|
},
|
||||||
noto: {
|
noto: {
|
||||||
prefix: "https://gitcdn.xyz/repo/googlefonts/noto-emoji/master/svg/emoji_u",
|
prefix:
|
||||||
|
"https://cdn.jsdelivr.net/gh/googlefonts/noto-emoji@master/svg/emoji_u",
|
||||||
sep: "_",
|
sep: "_",
|
||||||
suffix: ".svg",
|
suffix: ".svg",
|
||||||
},
|
},
|
||||||
twemoji: {
|
twemoji: {
|
||||||
prefix: "https://twemoji.maxcdn.com/v/latest/svg/",
|
prefix: "https://jdecked.github.io/twemoji/v/latest/svg/",
|
||||||
sep: "-",
|
sep: "-",
|
||||||
suffix: ".svg",
|
suffix: ".svg",
|
||||||
},
|
},
|
||||||
|
@ -383,7 +386,7 @@ const EMOJI_SETS = {
|
||||||
sep: "-",
|
sep: "-",
|
||||||
suffix: ".svg",
|
suffix: ".svg",
|
||||||
},
|
},
|
||||||
apple: {
|
/*apple: {
|
||||||
prefix: "https://intrnl.github.io/assetsEmoji/AppleColor/emoji_u",
|
prefix: "https://intrnl.github.io/assetsEmoji/AppleColor/emoji_u",
|
||||||
sep: "_",
|
sep: "_",
|
||||||
suffix: ".png",
|
suffix: ".png",
|
||||||
|
@ -392,14 +395,14 @@ const EMOJI_SETS = {
|
||||||
prefix: "https://intrnl.github.io/assetsEmoji/facebook/emoji_u",
|
prefix: "https://intrnl.github.io/assetsEmoji/facebook/emoji_u",
|
||||||
sep: "_",
|
sep: "_",
|
||||||
suffix: ".png",
|
suffix: ".png",
|
||||||
},
|
},*/
|
||||||
};
|
};
|
||||||
EMOJI_SETS["noto-old"] = EMOJI_SETS.blobs;
|
EMOJI_SETS["noto-old"] = EMOJI_SETS.blobs;
|
||||||
EMOJI_SETS.mutant = EMOJI_SETS.mustd;
|
EMOJI_SETS.mutant = EMOJI_SETS.mustd;
|
||||||
EMOJI_SETS.mutstd = EMOJI_SETS.mustd;
|
EMOJI_SETS.mutstd = EMOJI_SETS.mustd;
|
||||||
EMOJI_SETS.ms = EMOJI_SETS.mustd;
|
//EMOJI_SETS.ms = EMOJI_SETS.mustd;
|
||||||
EMOJI_SETS.twitter = EMOJI_SETS.twemoji;
|
EMOJI_SETS.twitter = EMOJI_SETS.twemoji;
|
||||||
EMOJI_SETS.fb = EMOJI_SETS.facebook;
|
//EMOJI_SETS.fb = EMOJI_SETS.facebook;
|
||||||
|
|
||||||
// }}}
|
// }}}
|
||||||
|
|
||||||
|
@ -1205,6 +1208,48 @@ jumbo.callback = async function (msg, line) {
|
||||||
};
|
};
|
||||||
hf.registerCommand(jumbo);
|
hf.registerCommand(jumbo);
|
||||||
|
|
||||||
|
const jumboInteraction = new InteractionCommand("jumbo");
|
||||||
|
jumboInteraction.helpText = "Gets the raw image of an emoji.";
|
||||||
|
jumboInteraction.options.content = {
|
||||||
|
name: "content",
|
||||||
|
type: Constants.ApplicationCommandOptionTypes.STRING,
|
||||||
|
description: "Emoji to get image of",
|
||||||
|
required: true,
|
||||||
|
default: "",
|
||||||
|
};
|
||||||
|
jumboInteraction.options.set = {
|
||||||
|
name: "set",
|
||||||
|
type: Constants.ApplicationCommandOptionTypes.STRING,
|
||||||
|
description: "Emoji set for non-custom emoji",
|
||||||
|
required: false,
|
||||||
|
choices: [
|
||||||
|
{
|
||||||
|
name: "Twemoji (Twitter/Discord)",
|
||||||
|
value: "twemoji",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Noto (Google)",
|
||||||
|
value: "noto",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Noto Old (Blobs)",
|
||||||
|
value: "blobs",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Mutant Standard",
|
||||||
|
value: "mustd",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
default: "twemoji",
|
||||||
|
};
|
||||||
|
jumboInteraction.callback = async function (interaction) {
|
||||||
|
const content = getOption(interaction, jumboInteraction, "content");
|
||||||
|
const set = getOption(interaction, jumboInteraction, "set");
|
||||||
|
|
||||||
|
return jumbo.callback(interaction, `--${set} ${content}`);
|
||||||
|
};
|
||||||
|
hf.registerCommand(jumboInteraction);
|
||||||
|
|
||||||
const charinfo = new Command("charinfo");
|
const charinfo = new Command("charinfo");
|
||||||
charinfo.category = CATEGORY;
|
charinfo.category = CATEGORY;
|
||||||
charinfo.helpText = "Get information about a set of characters.";
|
charinfo.helpText = "Get information about a set of characters.";
|
||||||
|
@ -1216,7 +1261,16 @@ charinfo.callback = async function (msg, line) {
|
||||||
const lines = names
|
const lines = names
|
||||||
.map(
|
.map(
|
||||||
([code, name], index) =>
|
([code, name], index) =>
|
||||||
`\`\\u${code}\`: ${name} - ${chars[index]} - <http://www.fileformat.info/info/unicode/char/${code}>`
|
`[\`\\u${code}${
|
||||||
|
chars[index].legnth > 1
|
||||||
|
? ` (${chars[index]
|
||||||
|
.split("")
|
||||||
|
.map((c) => `\\u${c.codePointAt().toString(16)}`)
|
||||||
|
.join("")})`
|
||||||
|
: ""
|
||||||
|
}\`](<http://www.fileformat.info/info/unicode/char/${code}>): ${name} - ${
|
||||||
|
chars[index]
|
||||||
|
}`
|
||||||
)
|
)
|
||||||
.join("\n");
|
.join("\n");
|
||||||
|
|
||||||
|
@ -1228,6 +1282,22 @@ charinfo.callback = async function (msg, line) {
|
||||||
};
|
};
|
||||||
hf.registerCommand(charinfo);
|
hf.registerCommand(charinfo);
|
||||||
|
|
||||||
|
const charinfoInteraction = new InteractionCommand("charinfo");
|
||||||
|
charinfoInteraction.helpText = "Get information about a set of characters.";
|
||||||
|
charinfoInteraction.options.content = {
|
||||||
|
name: "content",
|
||||||
|
type: Constants.ApplicationCommandOptionTypes.STRING,
|
||||||
|
description: "Characters to get info for",
|
||||||
|
required: true,
|
||||||
|
default: "",
|
||||||
|
};
|
||||||
|
charinfoInteraction.callback = async function (interaction) {
|
||||||
|
const content = getOption(interaction, charinfoInteraction, "content");
|
||||||
|
|
||||||
|
return charinfo.callback(interaction, content);
|
||||||
|
};
|
||||||
|
hf.registerCommand(charinfoInteraction);
|
||||||
|
|
||||||
const presence = new Command("presence");
|
const presence = new Command("presence");
|
||||||
presence.category = CATEGORY;
|
presence.category = CATEGORY;
|
||||||
presence.helpText = "Get presences of a user.";
|
presence.helpText = "Get presences of a user.";
|
||||||
|
@ -1879,6 +1949,22 @@ appinfo.callback = async function (msg, line) {
|
||||||
};
|
};
|
||||||
hf.registerCommand(appinfo);
|
hf.registerCommand(appinfo);
|
||||||
|
|
||||||
|
const appinfoInteraction = new InteractionCommand("appinfo");
|
||||||
|
appinfoInteraction.helpText = "Get information on an application";
|
||||||
|
appinfoInteraction.options.id = {
|
||||||
|
name: "id",
|
||||||
|
type: Constants.ApplicationCommandOptionTypes.STRING,
|
||||||
|
description: "Application ID to get info for",
|
||||||
|
required: true,
|
||||||
|
default: "",
|
||||||
|
};
|
||||||
|
appinfoInteraction.callback = async function (interaction) {
|
||||||
|
const id = getOption(interaction, appinfoInteraction, "id");
|
||||||
|
|
||||||
|
return appinfo.callback(interaction, id);
|
||||||
|
};
|
||||||
|
hf.registerCommand(appinfoInteraction);
|
||||||
|
|
||||||
const guildinfo = new Command("guildinfo");
|
const guildinfo = new Command("guildinfo");
|
||||||
guildinfo.category = CATEGORY;
|
guildinfo.category = CATEGORY;
|
||||||
guildinfo.helpText = "Get information on a guild";
|
guildinfo.helpText = "Get information on a guild";
|
||||||
|
@ -1894,7 +1980,8 @@ guildinfo.callback = async function (msg, line) {
|
||||||
let _guild, clanEmbed;
|
let _guild, clanEmbed;
|
||||||
if (!line || line == "") {
|
if (!line || line == "") {
|
||||||
if (!msg.guildID) return "Not in a guild.";
|
if (!msg.guildID) return "Not in a guild.";
|
||||||
_guild = {source: "local", data: msg.channel.guild};
|
const __guild = msg.channel.guild ?? hf.bot.guilds.get(msg.guildID);
|
||||||
|
if (__guild) _guild = {source: "local", data: __guild};
|
||||||
} else {
|
} else {
|
||||||
if (!SNOWFLAKE_REGEX.test(line)) return "Not a snowflake.";
|
if (!SNOWFLAKE_REGEX.test(line)) return "Not a snowflake.";
|
||||||
const snowflake = line.match(SNOWFLAKE_REGEX)[1];
|
const snowflake = line.match(SNOWFLAKE_REGEX)[1];
|
||||||
|
@ -2599,4 +2686,20 @@ guildinfo.callback = async function (msg, line) {
|
||||||
};
|
};
|
||||||
hf.registerCommand(guildinfo);
|
hf.registerCommand(guildinfo);
|
||||||
|
|
||||||
|
const guildinfoInteraction = new InteractionCommand("guildinfo");
|
||||||
|
guildinfoInteraction.helpText = "Get information on an guild";
|
||||||
|
guildinfoInteraction.options.id = {
|
||||||
|
name: "id",
|
||||||
|
type: Constants.ApplicationCommandOptionTypes.STRING,
|
||||||
|
description: "Guild ID to get info for",
|
||||||
|
required: false,
|
||||||
|
default: "",
|
||||||
|
};
|
||||||
|
guildinfoInteraction.callback = async function (interaction) {
|
||||||
|
const id = getOption(interaction, guildinfoInteraction, "id");
|
||||||
|
|
||||||
|
return guildinfo.callback(interaction, id);
|
||||||
|
};
|
||||||
|
hf.registerCommand(guildinfoInteraction);
|
||||||
|
|
||||||
// }}}
|
// }}}
|
||||||
|
|
Loading…
Reference in a new issue