feat: Add information command

This commit is contained in:
Siwoo Jeon 2025-03-15 12:48:29 +09:00
parent 528d7f09eb
commit d0484dae0c
Signed by: migan
GPG key ID: 036E9A8C5E8E48DA
2 changed files with 85 additions and 0 deletions

View file

@ -0,0 +1,76 @@
import type { Context } from '../lib/context'
import { ApplyOptions } from '@sapphire/decorators'
import { Command } from '@sapphire/framework'
import {
ChatInputCommandInteraction,
EmbedBuilder,
inlineCode,
Message,
time,
} from 'discord.js'
@ApplyOptions<Command.Options>({
name: '정보',
description: '머핀봇의 정보를 알ㄹ려줘요.',
detailedDescription: {
usage: '머핀아 정보',
},
})
export default class InformationCommand extends Command {
public registerApplicationCommands(registry: Command.Registry) {
registry.registerChatInputCommand(builder =>
builder.setName(this.name).setDescription(this.description),
)
}
public async messageRun(msg: Message<true>) {
return await this._run(msg)
}
public async chatInputRun(
interaction: ChatInputCommandInteraction<'cached'>,
) {
return await this._run(interaction)
}
private async _run(ctx: Context) {
return await ctx.reply({
embeds: [
new EmbedBuilder()
.setTitle(`${ctx.client.user.username}의 정보`)
.addFields(
{
name: '운영 체제',
value: inlineCode(`${process.platform} ${process.arch}`),
},
{
name: '제작자',
value: inlineCode(
(
await ctx.client.users.fetch(
this.container.config.bot.ownerId,
)
).username,
),
},
{
name: '버전',
value: inlineCode(this.container.version),
},
{
name: '최근에 업데이트된 날짜',
value: time(this.container.updatedAt, 'R'),
inline: true,
},
{
name: '업타임',
value: time(ctx.client.readyAt, 'R'),
inline: true,
},
)
.setColor(this.container.embedColors.default)
.setThumbnail(ctx.client.user.displayAvatarURL()),
],
})
}
}

View file

@ -17,6 +17,7 @@ declare module '@sapphire/pieces' {
}
channel: ReleaseChannel
dokdo: Client
updatedAt: Date
}
}
@ -46,4 +47,12 @@ else if (container.version.includes(ReleaseChannel.Dev))
else if (container.version.includes(ReleaseChannel.Canary))
container.channel = ReleaseChannel.Canary
const updatedString = container.version.match(/\d+/g)![3]
container.updatedAt = new Date(
`20${updatedString.slice(0, 2)}-` +
`${updatedString.slice(2, 4)}-` +
`${updatedString.slice(4, 6)}`,
)
await connect(container.config.databaseUrl)