Merge branch 'hotfix' into develop

This commit is contained in:
Siwoo Jeon 2024-09-24 23:00:22 +09:00
commit 80223f62a6
Signed by: migan
GPG key ID: 036E9A8C5E8E48DA
3 changed files with 16 additions and 5 deletions

View file

@ -1,6 +1,6 @@
{ {
"name": "muffinbot", "name": "muffinbot",
"version": "3.1.0-cake.d240923a", "version": "3.1.0-cake.d240924a",
"main": "dist/index.js", "main": "dist/index.js",
"private": true, "private": true,
"dependencies": { "dependencies": {

View file

@ -24,6 +24,7 @@ import { type LearnData } from '../modules'
}) })
class DeleteLearnCommand extends Command { class DeleteLearnCommand extends Command {
public async messageRun(msg: Message, args: Args) { public async messageRun(msg: Message, args: Args) {
const CUSTOM_ID = 'maa$deleteLearn'
const command = await args.rest('string').catch(() => null) const command = await args.rest('string').catch(() => null)
const options: SelectMenuComponentOptionData[] = [] const options: SelectMenuComponentOptionData[] = []
const db = this.container.database const db = this.container.database
@ -46,7 +47,7 @@ class DeleteLearnCommand extends Command {
console.log(data) console.log(data)
options.push({ options.push({
label: `${data.id}`, label: `${data.id}`,
value: `maa$deleteLearn-${data.id}`, value: `${CUSTOM_ID}-${data.id}`,
description: data.result.slice(0, 100), description: data.result.slice(0, 100),
}) })
}) })
@ -68,7 +69,7 @@ class DeleteLearnCommand extends Command {
components: [ components: [
{ {
type: ComponentType.StringSelect, type: ComponentType.StringSelect,
customId: 'maa$deleteLearn', customId: `${CUSTOM_ID}@${msg.author.id}`,
placeholder: '지울 데이터를 선택해ㅈ주세요', placeholder: '지울 데이터를 선택해ㅈ주세요',
options, options,
}, },

View file

@ -10,15 +10,25 @@ import { ApplyOptions } from '@sapphire/decorators'
interactionHandlerType: InteractionHandlerTypes.SelectMenu, interactionHandlerType: InteractionHandlerTypes.SelectMenu,
}) })
class DeleteLearnHandler extends InteractionHandler { class DeleteLearnHandler extends InteractionHandler {
private readonly _CUSTOM_ID = 'maa$deleteLearn'
public async parse(interaction: StringSelectMenuInteraction) { public async parse(interaction: StringSelectMenuInteraction) {
if (interaction.customId !== 'maa$deleteLearn') return this.none() if (!interaction.customId.startsWith(this._CUSTOM_ID)) return this.none()
const userId = interaction.customId.slice(`${this._CUSTOM_ID}@`.length)
if (interaction.user.id !== userId) {
await interaction.reply({
ephemeral: true,
content: '당신은 이 지ㅅ식을 안 가르쳐 주셨어요.',
})
return this.none()
}
return this.some() return this.some()
} }
public async run(interaction: StringSelectMenuInteraction) { public async run(interaction: StringSelectMenuInteraction) {
await interaction.deferUpdate() await interaction.deferUpdate()
const id = interaction.values[0].slice('maa$deleteLearn-'.length) const id = interaction.values[0].slice(`${this._CUSTOM_ID}-`.length)
const db = this.container.database const db = this.container.database
await db.learn.delete(id) await db.learn.delete(id)