import { container, type ChatInputCommandSuccessPayload, type Command, type ContextMenuCommandSuccessPayload, type MessageCommandSuccessPayload, } from "@sapphire/framework"; import type { Guild, User } from "discord.js"; export function logSuccessCommand( payload: | ContextMenuCommandSuccessPayload | ChatInputCommandSuccessPayload | MessageCommandSuccessPayload, ): void { let successLoggerData: ReturnType; if ("interaction" in payload) { successLoggerData = getSuccessLoggerData( payload.interaction.guild, payload.interaction.user, payload.command, ); } else { successLoggerData = getSuccessLoggerData( payload.message.guild, payload.message.author, payload.command, ); } container.logger.debug( `${successLoggerData.shard} - ${successLoggerData.commandName} ${successLoggerData.author} ${successLoggerData.sentAt}`, ); } export function getSuccessLoggerData(guild: Guild | null, user: User, command: Command) { const shard = guild?.shardId; const commandName = command.name; const author = `${user.username}[${user.id}]`; const sentAt = `${guild?.name}[${guild?.id}]`; return { shard, commandName, author, sentAt }; }