better command logging
This commit is contained in:
parent
6705b0cd4d
commit
5732fee594
31
src/index.ts
31
src/index.ts
|
@ -1,4 +1,4 @@
|
|||
import { Client, GatewayIntentBits, Events, Collection } from 'discord.js';
|
||||
import { Client, GatewayIntentBits, Events, Collection, CommandInteraction, CommandInteractionOption, ApplicationCommandOptionType } from 'discord.js';
|
||||
import * as fs from 'fs';
|
||||
const { token } = JSON.parse(fs.readFileSync('./config.json', 'utf8'));
|
||||
import * as path from 'path';
|
||||
|
@ -55,12 +55,39 @@ bot.on(Events.ClientReady, async () => {
|
|||
log.nonsense(`| ${prettyBytes(memory.rss)} memory usage, ${prettyBytes(memory.heapUsed)} / ${prettyBytes(memory.heapTotal)} heap usage`);
|
||||
});
|
||||
|
||||
function stringifyArg(arg: CommandInteractionOption): string {
|
||||
switch (arg.type) {
|
||||
case ApplicationCommandOptionType.Boolean:
|
||||
case ApplicationCommandOptionType.Integer:
|
||||
case ApplicationCommandOptionType.Number:
|
||||
case ApplicationCommandOptionType.String:
|
||||
return `${arg.name}:${arg.value}`;
|
||||
case ApplicationCommandOptionType.Channel:
|
||||
return `${arg.name}:${arg.channel?.id}`;
|
||||
case ApplicationCommandOptionType.Role:
|
||||
return `${arg.name}:${arg.role?.id}`;
|
||||
case ApplicationCommandOptionType.User:
|
||||
return `${arg.name}:${arg.user?.id}`;
|
||||
case ApplicationCommandOptionType.Mentionable:
|
||||
return `${arg.name}:${arg.channel?.id || arg.user?.id || arg.role?.id}`;
|
||||
case ApplicationCommandOptionType.Attachment:
|
||||
return `${arg.name}:<attachment>`;
|
||||
case ApplicationCommandOptionType.Subcommand:
|
||||
case ApplicationCommandOptionType.SubcommandGroup:
|
||||
return `${arg.name} ${arg.options?.map(stringifyArg)}`;
|
||||
}
|
||||
}
|
||||
|
||||
function stringifyCommand(cmd: CommandInteraction) {
|
||||
return `/${cmd.commandName} ${cmd.options.data.map(stringifyArg)}`;
|
||||
}
|
||||
|
||||
bot.on(Events.InteractionCreate, async (interaction) => {
|
||||
if (interaction.isCommand()) {
|
||||
const command = interaction.client.commands.get(interaction.commandName);
|
||||
if (!command) return;
|
||||
|
||||
log.nonsense(`/${command.data.name} ${interaction.options.data.map(opt => `${opt.name}:${opt.value || opt.user?.id || opt.role?.id || opt.message?.id || opt.member || opt.channel?.id || '?'}`)}`);
|
||||
log.nonsense(stringifyCommand(interaction));
|
||||
|
||||
try {
|
||||
await command.execute(interaction, interaction.member);
|
||||
|
|
Loading…
Reference in New Issue