Merge branch 'experimental' into develop
This commit is contained in:
commit
11e784f128
9 changed files with 395 additions and 189 deletions
23
package.json
23
package.json
|
@ -1,17 +1,17 @@
|
||||||
{
|
{
|
||||||
"name": "muffinbot",
|
"name": "muffinbot",
|
||||||
"version": "4.0.0-pudding.d240930a",
|
"version": "4.0.0-pudding.d241001a",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@prisma/client": "^5.19.1",
|
"@prisma/client": "^5.20.0",
|
||||||
"@sapphire/decorators": "^6.1.0",
|
"@sapphire/decorators": "^6.1.0",
|
||||||
"@sapphire/discord.js-utilities": "^7.3.0",
|
"@sapphire/discord.js-utilities": "^7.3.0",
|
||||||
"@sapphire/framework": "^5.2.1",
|
"@sapphire/framework": "^5.2.1",
|
||||||
"@sapphire/pieces": "^4.3.1",
|
"@sapphire/pieces": "^4.3.1",
|
||||||
"@sapphire/utilities": "^3.17.0",
|
"@sapphire/utilities": "^3.17.0",
|
||||||
"discord-api-types": "^0.37.100",
|
"discord-api-types": "^0.37.101",
|
||||||
"discord.js": "^14.16.2",
|
"discord.js": "^14.16.3",
|
||||||
"dokdo": "^1.0.1",
|
"dokdo": "^1.0.1",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"mysql2": "^3.11.3",
|
"mysql2": "^3.11.3",
|
||||||
|
@ -19,20 +19,20 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/eslintrc": "^3.1.0",
|
"@eslint/eslintrc": "^3.1.0",
|
||||||
"@eslint/js": "^9.11.0",
|
"@eslint/js": "^9.11.1",
|
||||||
"@migan/prettier-config": "^1.2.0",
|
"@migan/prettier-config": "^1.2.0",
|
||||||
"@types/node": "^22.5.5",
|
"@types/node": "^22.7.4",
|
||||||
"@types/semver": "^7.5.8",
|
"@types/semver": "^7.5.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.6.0",
|
"@typescript-eslint/eslint-plugin": "^8.7.0",
|
||||||
"@typescript-eslint/parser": "^8.6.0",
|
"@typescript-eslint/parser": "^8.7.0",
|
||||||
"@yarnpkg/pnpify": "^4.1.2",
|
"@yarnpkg/pnpify": "^4.1.2",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"eslint": "^9.11.0",
|
"eslint": "^9.11.1",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-plugin-prettier": "^5.2.1",
|
"eslint-plugin-prettier": "^5.2.1",
|
||||||
"globals": "^15.9.0",
|
"globals": "^15.9.0",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.3.3",
|
||||||
"prisma": "^5.19.1",
|
"prisma": "^5.20.0",
|
||||||
"tsup": "^8.3.0",
|
"tsup": "^8.3.0",
|
||||||
"typescript": "^5.6.2"
|
"typescript": "^5.6.2"
|
||||||
},
|
},
|
||||||
|
@ -41,7 +41,8 @@
|
||||||
"dev": "cross-env NODE_ENV=development tsup --watch --onSuccess \"node --enable-source-maps dist\"",
|
"dev": "cross-env NODE_ENV=development tsup --watch --onSuccess \"node --enable-source-maps dist\"",
|
||||||
"start": "cross-env NODE_ENV=production node dist",
|
"start": "cross-env NODE_ENV=production node dist",
|
||||||
"db:pull": "pnpify prisma db pull",
|
"db:pull": "pnpify prisma db pull",
|
||||||
"db:push": "pnpify prisma db push"
|
"db:push": "pnpify prisma db push",
|
||||||
|
"db:generate": "pnpify prisma generate"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"@types/ws": "^8.5.11",
|
"@types/ws": "^8.5.11",
|
||||||
|
|
|
@ -23,7 +23,7 @@ container.version = version
|
||||||
container.database = new PrismaClient()
|
container.database = new PrismaClient()
|
||||||
container.dokdoAliases = ['dokdo', 'dok', 'Dokdo', 'Dok', '테스트']
|
container.dokdoAliases = ['dokdo', 'dok', 'Dokdo', 'Dok', '테스트']
|
||||||
container.chatBot = new ChatBot(container.database)
|
container.chatBot = new ChatBot(container.database)
|
||||||
container.lastUpdated = new Date('2024-09-29')
|
container.lastUpdated = new Date('2024-10-01')
|
||||||
|
|
||||||
if (release.startsWith('e')) {
|
if (release.startsWith('e')) {
|
||||||
container.channel = 'EXPERIMENTAL'
|
container.channel = 'EXPERIMENTAL'
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
import { ApplyOptions } from '@sapphire/decorators'
|
import { ApplyOptions } from '@sapphire/decorators'
|
||||||
|
import {
|
||||||
|
type SelectMenuComponentOptionData,
|
||||||
|
type User,
|
||||||
|
ChatInputCommandInteraction,
|
||||||
|
ComponentType,
|
||||||
|
codeBlock,
|
||||||
|
Message,
|
||||||
|
} from 'discord.js'
|
||||||
import {
|
import {
|
||||||
Args,
|
Args,
|
||||||
Command,
|
Command,
|
||||||
container,
|
container,
|
||||||
DetailedDescriptionCommandObject,
|
DetailedDescriptionCommandObject,
|
||||||
} from '@sapphire/framework'
|
} from '@sapphire/framework'
|
||||||
import {
|
|
||||||
type SelectMenuComponentOptionData,
|
|
||||||
type Message,
|
|
||||||
ComponentType,
|
|
||||||
codeBlock,
|
|
||||||
} from 'discord.js'
|
|
||||||
|
|
||||||
@ApplyOptions<Command.Options>({
|
@ApplyOptions<Command.Options>({
|
||||||
name: '삭제',
|
name: '삭제',
|
||||||
|
@ -22,13 +24,38 @@ import {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
class DeleteLearnCommand extends Command {
|
class DeleteLearnCommand extends Command {
|
||||||
public async messageRun(msg: Message, args: Args) {
|
public registerApplicationCommands(registry: Command.Registry) {
|
||||||
|
registry.registerChatInputCommand(builder =>
|
||||||
|
builder
|
||||||
|
.setName(this.name)
|
||||||
|
.setDescription(this.description)
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setRequired(true)
|
||||||
|
.setName('단어')
|
||||||
|
.setDescription('삭제할 단어를 입력해주세요.'),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private async _run(ctx: Message | ChatInputCommandInteraction, args?: Args) {
|
||||||
|
let command: string | null
|
||||||
|
let user: User
|
||||||
|
if (ctx instanceof Message) {
|
||||||
|
command = await args!.rest('string').catch(() => null)
|
||||||
|
user = ctx.author
|
||||||
|
} else {
|
||||||
|
command = ctx.options.getString('단어', true)
|
||||||
|
user = ctx.user
|
||||||
|
}
|
||||||
|
|
||||||
|
const ephemeral =
|
||||||
|
ctx instanceof ChatInputCommandInteraction ? { ephemeral: true } : null
|
||||||
const CUSTOM_ID = 'maa$deleteLearn'
|
const CUSTOM_ID = 'maa$deleteLearn'
|
||||||
const command = await args.rest('string').catch(() => null)
|
|
||||||
const options: SelectMenuComponentOptionData[] = []
|
const options: SelectMenuComponentOptionData[] = []
|
||||||
const deleteDataList: string[] = []
|
const deleteDataList: string[] = []
|
||||||
if (!command) {
|
if (!command) {
|
||||||
return await msg.reply(
|
return await ctx.reply(
|
||||||
`사용법: \n\`\`\`${(this.detailedDescription as DetailedDescriptionCommandObject).usage}\`\`\``,
|
`사용법: \n\`\`\`${(this.detailedDescription as DetailedDescriptionCommandObject).usage}\`\`\``,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -36,12 +63,15 @@ class DeleteLearnCommand extends Command {
|
||||||
const deleteDatas = await this.container.database.learn.findMany({
|
const deleteDatas = await this.container.database.learn.findMany({
|
||||||
where: {
|
where: {
|
||||||
command,
|
command,
|
||||||
user_id: msg.author.id,
|
user_id: user.id,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
if (deleteDatas.length === 0) {
|
if (deleteDatas.length === 0) {
|
||||||
return await msg.reply('해당하는 걸 찾ㅈ을 수 없어요.')
|
return await ctx.reply({
|
||||||
|
...ephemeral,
|
||||||
|
content: '해당하는 걸 찾ㅈ을 수 없어요.',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 1; i <= deleteDatas.length; i++) {
|
for (let i = 1; i <= deleteDatas.length; i++) {
|
||||||
|
@ -53,7 +83,8 @@ class DeleteLearnCommand extends Command {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
await msg.reply({
|
await ctx.reply({
|
||||||
|
...ephemeral,
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: '삭제',
|
title: '삭제',
|
||||||
|
@ -68,7 +99,7 @@ class DeleteLearnCommand extends Command {
|
||||||
components: [
|
components: [
|
||||||
{
|
{
|
||||||
type: ComponentType.StringSelect,
|
type: ComponentType.StringSelect,
|
||||||
customId: `${CUSTOM_ID}@${msg.author.id}`,
|
customId: `${CUSTOM_ID}@${user.id}`,
|
||||||
placeholder: '지울 데이터를 선택해ㅈ주세요',
|
placeholder: '지울 데이터를 선택해ㅈ주세요',
|
||||||
options: [
|
options: [
|
||||||
...options,
|
...options,
|
||||||
|
@ -84,6 +115,14 @@ class DeleteLearnCommand extends Command {
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async messageRun(msg: Message, args: Args) {
|
||||||
|
await this._run(msg, args)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async chatInputRun(interaction: ChatInputCommandInteraction) {
|
||||||
|
await this._run(interaction)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void container.stores.loadPiece({
|
void container.stores.loadPiece({
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
import { Args, Command, container } from '@sapphire/framework'
|
import { Args, Command, container } from '@sapphire/framework'
|
||||||
import { codeBlock, type Message } from 'discord.js'
|
|
||||||
import { ApplyOptions } from '@sapphire/decorators'
|
import { ApplyOptions } from '@sapphire/decorators'
|
||||||
|
import {
|
||||||
|
type ChatInputCommandInteraction,
|
||||||
|
codeBlock,
|
||||||
|
Message,
|
||||||
|
} from 'discord.js'
|
||||||
|
|
||||||
@ApplyOptions<Command.Options>({
|
@ApplyOptions<Command.Options>({
|
||||||
name: '도움말',
|
name: '도움말',
|
||||||
|
@ -12,8 +16,32 @@ import { ApplyOptions } from '@sapphire/decorators'
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
class HelpCommand extends Command {
|
class HelpCommand extends Command {
|
||||||
public async messageRun(msg: Message, args: Args) {
|
public registerApplicationCommands(registry: Command.Registry) {
|
||||||
const commandName = await args.pick('string').catch(() => null)
|
const commands = this.container.stores.get('commands').map(command => {
|
||||||
|
return {
|
||||||
|
name: command.name,
|
||||||
|
value: command.name,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
registry.registerChatInputCommand(builder =>
|
||||||
|
builder
|
||||||
|
.setName(this.name)
|
||||||
|
.setDescription(this.description)
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName('명령어')
|
||||||
|
.setDescription('해당 명령어에 대ㅎ한 도움말을 볼 수 있어요.')
|
||||||
|
.addChoices(commands),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
private async _run(ctx: Message | ChatInputCommandInteraction, args?: Args) {
|
||||||
|
let commandName: string | null
|
||||||
|
if (ctx instanceof Message) {
|
||||||
|
commandName = await args!.pick('string').catch(() => null)
|
||||||
|
} else {
|
||||||
|
commandName = ctx.options.getString('명령어')
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
!commandName ||
|
!commandName ||
|
||||||
!this.container.stores.get('commands').get(commandName)
|
!this.container.stores.get('commands').get(commandName)
|
||||||
|
@ -24,7 +52,7 @@ class HelpCommand extends Command {
|
||||||
commandList.push(`${module.name} - ${module.description}`)
|
commandList.push(`${module.name} - ${module.description}`)
|
||||||
})
|
})
|
||||||
|
|
||||||
await msg.reply({
|
await ctx.reply({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `${this.container.client.user?.username}의 도움말`,
|
title: `${this.container.client.user?.username}의 도움말`,
|
||||||
|
@ -45,7 +73,7 @@ class HelpCommand extends Command {
|
||||||
this.container.stores.get('commands').get(commandName)!
|
this.container.stores.get('commands').get(commandName)!
|
||||||
if (typeof detailedDescription === 'string') return
|
if (typeof detailedDescription === 'string') return
|
||||||
|
|
||||||
await msg.reply({
|
await ctx.reply({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `${this.container.client.user?.username}의 도움말`,
|
title: `${this.container.client.user?.username}의 도움말`,
|
||||||
|
@ -87,6 +115,13 @@ class HelpCommand extends Command {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public async messageRun(msg: Message, args: Args) {
|
||||||
|
await this._run(msg, args)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async chatInputRun(interaction: ChatInputCommandInteraction) {
|
||||||
|
await this._run(interaction)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void container.stores.loadPiece({
|
void container.stores.loadPiece({
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { ApplyOptions } from '@sapphire/decorators'
|
import type { ChatInputCommandInteraction, Message } from 'discord.js'
|
||||||
import { Command, container } from '@sapphire/framework'
|
import { Command, container } from '@sapphire/framework'
|
||||||
import { Message } from 'discord.js'
|
import { ApplyOptions } from '@sapphire/decorators'
|
||||||
import { platform, arch } from 'os'
|
import { platform, arch } from 'os'
|
||||||
|
|
||||||
@ApplyOptions<Command.Options>({
|
@ApplyOptions<Command.Options>({
|
||||||
|
@ -11,8 +11,14 @@ import { platform, arch } from 'os'
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
class InformationCommand extends Command {
|
class InformationCommand extends Command {
|
||||||
public async messageRun(msg: Message) {
|
public registerApplicationCommands(registry: Command.Registry) {
|
||||||
await msg.reply({
|
registry.registerChatInputCommand(builder =>
|
||||||
|
builder.setName(this.name).setDescription(this.description),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private async _run(ctx: Message | ChatInputCommandInteraction) {
|
||||||
|
await ctx.reply({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `${this.container.client.user?.username}의 정ㅂ보`,
|
title: `${this.container.client.user?.username}의 정ㅂ보`,
|
||||||
|
@ -59,6 +65,14 @@ class InformationCommand extends Command {
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async messageRun(msg: Message) {
|
||||||
|
await this._run(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async chatInputRun(interaction: ChatInputCommandInteraction) {
|
||||||
|
await this._run(interaction)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void container.stores.loadPiece({
|
void container.stores.loadPiece({
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
import { ChatInputCommandInteraction, codeBlock, Message } from 'discord.js'
|
||||||
import { type Args, Command, container } from '@sapphire/framework'
|
import { type Args, Command, container } from '@sapphire/framework'
|
||||||
import { codeBlock, type Message } from 'discord.js'
|
|
||||||
import { ApplyOptions } from '@sapphire/decorators'
|
import { ApplyOptions } from '@sapphire/decorators'
|
||||||
|
|
||||||
@ApplyOptions<Command.Options>({
|
@ApplyOptions<Command.Options>({
|
||||||
|
@ -16,32 +16,69 @@ import { ApplyOptions } from '@sapphire/decorators'
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
class LearnCommand extends Command {
|
class LearnCommand extends Command {
|
||||||
public async messageRun(msg: Message, args: Args) {
|
public registerApplicationCommands(registry: Command.Registry) {
|
||||||
|
registry.registerChatInputCommand(builder =>
|
||||||
|
builder
|
||||||
|
.setName(this.name)
|
||||||
|
.setDescription(this.description)
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setRequired(true)
|
||||||
|
.setName('단어')
|
||||||
|
.setDescription('등록할 단어를 입력해주세요.'),
|
||||||
|
)
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setRequired(true)
|
||||||
|
.setName('대답')
|
||||||
|
.setDescription('해당 단어의 대답을 입력해주세요.'),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private async _run(ctx: Message | ChatInputCommandInteraction, args?: Args) {
|
||||||
|
if (ctx instanceof ChatInputCommandInteraction) ctx.deferReply()
|
||||||
if (typeof this.detailedDescription === 'string') return
|
if (typeof this.detailedDescription === 'string') return
|
||||||
|
|
||||||
const config = this.container.config
|
const config = this.container.config
|
||||||
const command = (await args.pick('string').catch(() => null))?.replaceAll(
|
const IG_MSG = '해ㄷ당 단어는 배울ㄹ 수 없어요.'
|
||||||
|
const DI_MSG = '해당 단ㅇ어는 개발자님이 특별히 금지하였ㅇ어요.'
|
||||||
|
const SUCCESS_MSG = '을/를 배웠ㅇ어요.'
|
||||||
|
|
||||||
|
let command: string
|
||||||
|
let result: string
|
||||||
|
|
||||||
|
if (ctx instanceof Message) {
|
||||||
|
command = (await args!.pick('string').catch(() => null))!.replaceAll(
|
||||||
'_',
|
'_',
|
||||||
' ',
|
' ',
|
||||||
)
|
)
|
||||||
const result = (await args.pick('string').catch(() => null))?.replaceAll(
|
result = (await args!.pick('string').catch(() => null))!.replaceAll(
|
||||||
'_',
|
'_',
|
||||||
' ',
|
' ',
|
||||||
)
|
)
|
||||||
if (!command || !result) {
|
|
||||||
return await msg.reply(
|
if (!command || !result)
|
||||||
|
return await ctx.reply(
|
||||||
codeBlock(
|
codeBlock(
|
||||||
'md',
|
'md',
|
||||||
`사용법: ${this.detailedDescription}
|
`사용법: ${this.detailedDescription}
|
||||||
예시: ${this.detailedDescription.examples?.map(example => example).join('\n')}`,
|
예시: ${this.detailedDescription.examples?.map(example => example).join('\n')}`,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
} else {
|
||||||
|
command = ctx.options.getString('단어', true)
|
||||||
|
result = ctx.options.getString('대답', true)
|
||||||
}
|
}
|
||||||
|
|
||||||
const commands: string[] = []
|
const commands: string[] = []
|
||||||
const aliases: string[] = []
|
const aliases: string[] = []
|
||||||
|
|
||||||
this.container.stores.get('commands').forEach(module => {
|
this.container.stores.get('commands').forEach(module => {
|
||||||
commands.push(module.name)
|
commands.push(module.name)
|
||||||
module.aliases.forEach(alias => aliases.push(alias))
|
module.aliases.forEach(alias => aliases.push(alias))
|
||||||
})
|
})
|
||||||
|
|
||||||
const ignore = [
|
const ignore = [
|
||||||
...commands,
|
...commands,
|
||||||
...aliases,
|
...aliases,
|
||||||
|
@ -52,27 +89,41 @@ class LearnCommand extends Command {
|
||||||
'간미',
|
'간미',
|
||||||
]
|
]
|
||||||
const disallowed = ['@everyone', '@here', `<@${config.bot.owner_ID}>`]
|
const disallowed = ['@everyone', '@here', `<@${config.bot.owner_ID}>`]
|
||||||
|
const user = ctx instanceof Message ? ctx.author : ctx.user
|
||||||
|
|
||||||
for (const ig of ignore) {
|
for (const ig of ignore) {
|
||||||
if (command.includes(ig)) {
|
if (command.includes(ig))
|
||||||
return msg.reply('해ㄷ당 단어는 배울ㄹ 수 없어요.')
|
return ctx instanceof Message
|
||||||
}
|
? await ctx.reply(IG_MSG)
|
||||||
|
: await ctx.editReply(IG_MSG)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const di of disallowed) {
|
for (const di of disallowed) {
|
||||||
if (result.includes(di)) {
|
if (result.includes(di))
|
||||||
return msg.reply('해당 단ㅇ어는 개발자님이 특별히 금지하였ㅇ어요.')
|
return ctx instanceof Message
|
||||||
}
|
? await ctx.reply(DI_MSG)
|
||||||
|
: await ctx.editReply(DI_MSG)
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.container.database.learn.create({
|
await this.container.database.learn.create({
|
||||||
data: {
|
data: {
|
||||||
user_id: msg.author.id,
|
user_id: user.id,
|
||||||
command,
|
command,
|
||||||
result,
|
result,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
await msg.reply(`${command}을/를 배웠ㅇ어요.`)
|
|
||||||
|
return ctx instanceof Message
|
||||||
|
? await ctx.reply(command + SUCCESS_MSG)
|
||||||
|
: await ctx.editReply(command + SUCCESS_MSG)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async messageRun(msg: Message, args: Args) {
|
||||||
|
await this._run(msg, args)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async chatInputRun(interaction: ChatInputCommandInteraction) {
|
||||||
|
await this._run(interaction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import { ChatInputCommandInteraction, Message } from 'discord.js'
|
||||||
import { Command, container } from '@sapphire/framework'
|
import { Command, container } from '@sapphire/framework'
|
||||||
import { ApplyOptions } from '@sapphire/decorators'
|
import { ApplyOptions } from '@sapphire/decorators'
|
||||||
import { type Message } from 'discord.js'
|
|
||||||
|
|
||||||
@ApplyOptions<Command.Options>({
|
@ApplyOptions<Command.Options>({
|
||||||
name: '데이터학습량',
|
name: '데이터학습량',
|
||||||
|
@ -11,14 +11,21 @@ import { type Message } from 'discord.js'
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
class LearnDataCommand extends Command {
|
class LearnDataCommand extends Command {
|
||||||
public async messageRun(msg: Message<true>) {
|
public registerApplicationCommands(registry: Command.Registry) {
|
||||||
|
registry.registerChatInputCommand(builder =>
|
||||||
|
builder.setName(this.name).setDescription(this.description),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private async _run(ctx: Message | ChatInputCommandInteraction) {
|
||||||
|
const user = ctx instanceof Message ? ctx.author : ctx.user
|
||||||
const db = this.container.database
|
const db = this.container.database
|
||||||
const data = await db.statement.findMany()
|
const data = await db.statement.findMany()
|
||||||
const nsfwData = await db.nsfw_content.findMany()
|
const nsfwData = await db.nsfw_content.findMany()
|
||||||
const learnData = await db.learn.findMany()
|
const learnData = await db.learn.findMany()
|
||||||
const userData = await db.learn.findMany({
|
const userData = await db.learn.findMany({
|
||||||
where: {
|
where: {
|
||||||
user_id: msg.author.id,
|
user_id: user.id,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
const muffin: any[] = []
|
const muffin: any[] = []
|
||||||
|
@ -27,10 +34,18 @@ class LearnDataCommand extends Command {
|
||||||
else return
|
else return
|
||||||
})
|
})
|
||||||
|
|
||||||
await msg.reply(`머핀 데이터: ${muffin.length}개
|
await ctx.reply(`머핀 데이터: ${muffin.length}개
|
||||||
nsfw 데이터: ${nsfwData.length}개
|
nsfw 데이터: ${nsfwData.length}개
|
||||||
지금까지 배운 단어: ${learnData.length}개
|
지금까지 배운 단어: ${learnData.length}개
|
||||||
${msg.author.username}님이 가르쳐준 단어: ${userData.length}개`)
|
${user.username}님이 가르쳐준 단어: ${userData.length}개`)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async messageRun(msg: Message) {
|
||||||
|
await this._run(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async chatInputRun(interaction: ChatInputCommandInteraction) {
|
||||||
|
await this._run(interaction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
import { ChatInputCommandInteraction, Message, codeBlock } from 'discord.js'
|
||||||
import { Command, container } from '@sapphire/framework'
|
import { Command, container } from '@sapphire/framework'
|
||||||
import { ApplyOptions } from '@sapphire/decorators'
|
import { ApplyOptions } from '@sapphire/decorators'
|
||||||
import { Message, codeBlock } from 'discord.js'
|
|
||||||
|
|
||||||
@ApplyOptions<Command.Options>({
|
@ApplyOptions<Command.Options>({
|
||||||
name: '리스트',
|
name: '리스트',
|
||||||
|
@ -11,27 +11,39 @@ import { Message, codeBlock } from 'discord.js'
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
class ListCommand extends Command {
|
class ListCommand extends Command {
|
||||||
public async messageRun(msg: Message<boolean>) {
|
public registerApplicationCommands(registry: Command.Registry) {
|
||||||
|
registry.registerChatInputCommand(builder =>
|
||||||
|
builder.setName(this.name).setDescription(this.description),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private async _run(ctx: Message | ChatInputCommandInteraction) {
|
||||||
|
const user = ctx instanceof Message ? ctx.author : ctx.user
|
||||||
|
const ephemeral =
|
||||||
|
ctx instanceof ChatInputCommandInteraction ? { ephemeral: true } : null
|
||||||
const db = this.container.database
|
const db = this.container.database
|
||||||
const data = await db.learn.findMany({
|
const data = await db.learn.findMany({
|
||||||
where: {
|
where: {
|
||||||
user_id: msg.author.id,
|
user_id: user.id,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
const list: string[] = []
|
const list: string[] = []
|
||||||
|
|
||||||
if (!data[0]) {
|
if (!data[0]) {
|
||||||
return await msg.reply('당신ㄴ은 단어를 가르쳐준 기억이 없ㅅ는데요.')
|
return await ctx.reply({
|
||||||
|
...ephemeral,
|
||||||
|
content: '당신ㄴ은 단어를 가르쳐준 기억이 없ㅅ는데요.',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const listData of data) {
|
for (const listData of data) {
|
||||||
list.push(listData.command)
|
list.push(listData.command)
|
||||||
}
|
}
|
||||||
|
|
||||||
await msg.reply({
|
await ctx.reply({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `${msg.author.username}님의 지식`,
|
title: `${user.username}님의 지식`,
|
||||||
description: `총합: ${data.length}개\n${codeBlock(
|
description: `총합: ${data.length}개\n${codeBlock(
|
||||||
'md',
|
'md',
|
||||||
list.map(item => `- ${item}`).join('\n'),
|
list.map(item => `- ${item}`).join('\n'),
|
||||||
|
@ -42,6 +54,14 @@ class ListCommand extends Command {
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async messageRun(msg: Message<boolean>) {
|
||||||
|
await this._run(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
public async chatInputRun(interaction: ChatInputCommandInteraction) {
|
||||||
|
await this._run(interaction)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void container.stores.loadPiece({
|
void container.stores.loadPiece({
|
||||||
|
|
267
yarn.lock
267
yarn.lock
|
@ -352,6 +352,13 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@eslint/core@npm:^0.6.0":
|
||||||
|
version: 0.6.0
|
||||||
|
resolution: "@eslint/core@npm:0.6.0"
|
||||||
|
checksum: 10c0/fffdb3046ad6420f8cb9204b6466fdd8632a9baeebdaf2a97d458a4eac0e16653ba50d82d61835d7d771f6ced0ec942ec482b2fbccc300e45f2cbf784537f240
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@eslint/eslintrc@npm:^3.1.0":
|
"@eslint/eslintrc@npm:^3.1.0":
|
||||||
version: 3.1.0
|
version: 3.1.0
|
||||||
resolution: "@eslint/eslintrc@npm:3.1.0"
|
resolution: "@eslint/eslintrc@npm:3.1.0"
|
||||||
|
@ -369,10 +376,10 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@eslint/js@npm:9.11.0, @eslint/js@npm:^9.11.0":
|
"@eslint/js@npm:9.11.1, @eslint/js@npm:^9.11.1":
|
||||||
version: 9.11.0
|
version: 9.11.1
|
||||||
resolution: "@eslint/js@npm:9.11.0"
|
resolution: "@eslint/js@npm:9.11.1"
|
||||||
checksum: 10c0/7403aeba28ba9cae3470d149b334a51375eb7fd850f167555c81cc72fe98e5cc5ac3059ccdbe68eb255a49d7498a7288d25429af0c7d20afeb4b3c0748349bb4
|
checksum: 10c0/22916ef7b09c6f60c62635d897c66e1e3e38d90b5a5cf5e62769033472ecbcfb6ec7c886090a4b32fe65d6ce371da54384e46c26a899e38184dfc152c6152f7b
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -532,61 +539,61 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@prisma/client@npm:^5.19.1":
|
"@prisma/client@npm:^5.20.0":
|
||||||
version: 5.19.1
|
version: 5.20.0
|
||||||
resolution: "@prisma/client@npm:5.19.1"
|
resolution: "@prisma/client@npm:5.20.0"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
prisma: "*"
|
prisma: "*"
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
prisma:
|
prisma:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10c0/3fd0c77c831cf592155539d0d369849d5c4f6bbe483b7e5ed476aad29434491a0d5a63ebcda86852484b808fa94bdd614c7715fb2084c0696fdcedd21d3671fb
|
checksum: 10c0/e7480e49830c1bd2292ea92de979cce4502f886c7e9ac43efb639771bb8fe6150e8688e6ff11de77af999536ad6bf7db1595649352a8527e81b951ad6c43f57f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@prisma/debug@npm:5.19.1":
|
"@prisma/debug@npm:5.20.0":
|
||||||
version: 5.19.1
|
version: 5.20.0
|
||||||
resolution: "@prisma/debug@npm:5.19.1"
|
resolution: "@prisma/debug@npm:5.20.0"
|
||||||
checksum: 10c0/4b88719b9a0dd76692bec766fd8188b685a81f0459f3df8fb44b4c492b483a6aadaf7021f7aca90afa5a2f27d84d737a3f2d5abed5f9f818a640487f49d1b8c4
|
checksum: 10c0/820e3e2c25f1a046024383a3a83f28707a99af1e04f46016c78d6b6231a901353755202578ce27760e00a654b357b634a3e79b99bfe710ba6d6a7f480fcdf6b9
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@prisma/engines-version@npm:5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3":
|
"@prisma/engines-version@npm:5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284":
|
||||||
version: 5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3
|
version: 5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284
|
||||||
resolution: "@prisma/engines-version@npm:5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3"
|
resolution: "@prisma/engines-version@npm:5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284"
|
||||||
checksum: 10c0/9bf4ad5b199054fe56a96ddbda1b835e7f103d690d2b7d04c159f29399261356516ec8881e8caf637bd4523395ccc4ce450013a0c9a8a3ffa16d2fc15b93bfa8
|
checksum: 10c0/1dbe962b5b55015e7f4483e5644bdaec9bf348676d72496f56a6ba365c41d4404a311ed2dd144099146048ccfa45b2752fd9e09765282404d266c4d34179d904
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@prisma/engines@npm:5.19.1":
|
"@prisma/engines@npm:5.20.0":
|
||||||
version: 5.19.1
|
version: 5.20.0
|
||||||
resolution: "@prisma/engines@npm:5.19.1"
|
resolution: "@prisma/engines@npm:5.20.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@prisma/debug": "npm:5.19.1"
|
"@prisma/debug": "npm:5.20.0"
|
||||||
"@prisma/engines-version": "npm:5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3"
|
"@prisma/engines-version": "npm:5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284"
|
||||||
"@prisma/fetch-engine": "npm:5.19.1"
|
"@prisma/fetch-engine": "npm:5.20.0"
|
||||||
"@prisma/get-platform": "npm:5.19.1"
|
"@prisma/get-platform": "npm:5.20.0"
|
||||||
checksum: 10c0/d12893935d842fea1c5344e3ab0f769b01ec1c71a91bec3ac9ceb58838fe7f745d226d5b8b9ac386ad503c56773272586bb73188d592ec8d4e05f43285009155
|
checksum: 10c0/1197d2796f4daef24bc8cf6c5e85ac360e3a1ab6cd0b0a4751650fd728a53f6c66681c39fab9b68b0f78f95586bef174f383dda9e0bca08274d2c1cdcd3b1f9f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@prisma/fetch-engine@npm:5.19.1":
|
"@prisma/fetch-engine@npm:5.20.0":
|
||||||
version: 5.19.1
|
version: 5.20.0
|
||||||
resolution: "@prisma/fetch-engine@npm:5.19.1"
|
resolution: "@prisma/fetch-engine@npm:5.20.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@prisma/debug": "npm:5.19.1"
|
"@prisma/debug": "npm:5.20.0"
|
||||||
"@prisma/engines-version": "npm:5.19.1-2.69d742ee20b815d88e17e54db4a2a7a3b30324e3"
|
"@prisma/engines-version": "npm:5.20.0-12.06fc58a368dc7be9fbbbe894adf8d445d208c284"
|
||||||
"@prisma/get-platform": "npm:5.19.1"
|
"@prisma/get-platform": "npm:5.20.0"
|
||||||
checksum: 10c0/670d3f604549c4778d32febe56d948896b5c16dad5b51814c5b168a6007c9782d453cebee43cb81ddd58c9e9538811ea1a793516420ecf2c84ae4c3b4ed34f6c
|
checksum: 10c0/854f4fce34b734e5046e4a5e660f2b689a40231f3dfe7c77f805c4011afab1c58570e4d45f915aa69b8889c06ea64ecb763d6f71ba8cc50b26c4365e762dbd63
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@prisma/get-platform@npm:5.19.1":
|
"@prisma/get-platform@npm:5.20.0":
|
||||||
version: 5.19.1
|
version: 5.20.0
|
||||||
resolution: "@prisma/get-platform@npm:5.19.1"
|
resolution: "@prisma/get-platform@npm:5.20.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@prisma/debug": "npm:5.19.1"
|
"@prisma/debug": "npm:5.20.0"
|
||||||
checksum: 10c0/a53b5c894cf4074af6164d9c503e387aba92c518ad7bad82be40f834a0030270c60f6149b20951c3e1db32bd836f582053e63c4bf7099461f0160dd5956f063e
|
checksum: 10c0/2a12bf0ffee6842907dd3ea40ce44430ccfcd1135e636a151e9cdbaa91a5bf62eb5f9913066d6caea2f7c87be9fd660d80258a7f775f141d20ddf8067ca651c2
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -907,6 +914,13 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/estree@npm:^1.0.6":
|
||||||
|
version: 1.0.6
|
||||||
|
resolution: "@types/estree@npm:1.0.6"
|
||||||
|
checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@types/http-cache-semantics@npm:*":
|
"@types/http-cache-semantics@npm:*":
|
||||||
version: 4.0.4
|
version: 4.0.4
|
||||||
resolution: "@types/http-cache-semantics@npm:4.0.4"
|
resolution: "@types/http-cache-semantics@npm:4.0.4"
|
||||||
|
@ -914,6 +928,13 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/json-schema@npm:^7.0.15":
|
||||||
|
version: 7.0.15
|
||||||
|
resolution: "@types/json-schema@npm:7.0.15"
|
||||||
|
checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@types/keyv@npm:^3.1.4":
|
"@types/keyv@npm:^3.1.4":
|
||||||
version: 3.1.4
|
version: 3.1.4
|
||||||
resolution: "@types/keyv@npm:3.1.4"
|
resolution: "@types/keyv@npm:3.1.4"
|
||||||
|
@ -939,12 +960,12 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/node@npm:^22.5.5":
|
"@types/node@npm:^22.7.4":
|
||||||
version: 22.5.5
|
version: 22.7.4
|
||||||
resolution: "@types/node@npm:22.5.5"
|
resolution: "@types/node@npm:22.7.4"
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: "npm:~6.19.2"
|
undici-types: "npm:~6.19.2"
|
||||||
checksum: 10c0/ead9495cfc6b1da5e7025856dcce2591e9bae635357410c0d2dd619fce797d2a1d402887580ca4b336cb78168b195224869967de370a23f61663cf1e4836121c
|
checksum: 10c0/c22bf54515c78ff3170142c1e718b90e2a0003419dc2d55f79c9c9362edd590a6ab1450deb09ff6e1b32d1b4698da407930b16285e8be3a009ea6cd2695cac01
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -980,15 +1001,15 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@npm:^8.6.0":
|
"@typescript-eslint/eslint-plugin@npm:^8.7.0":
|
||||||
version: 8.6.0
|
version: 8.7.0
|
||||||
resolution: "@typescript-eslint/eslint-plugin@npm:8.6.0"
|
resolution: "@typescript-eslint/eslint-plugin@npm:8.7.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/regexpp": "npm:^4.10.0"
|
"@eslint-community/regexpp": "npm:^4.10.0"
|
||||||
"@typescript-eslint/scope-manager": "npm:8.6.0"
|
"@typescript-eslint/scope-manager": "npm:8.7.0"
|
||||||
"@typescript-eslint/type-utils": "npm:8.6.0"
|
"@typescript-eslint/type-utils": "npm:8.7.0"
|
||||||
"@typescript-eslint/utils": "npm:8.6.0"
|
"@typescript-eslint/utils": "npm:8.7.0"
|
||||||
"@typescript-eslint/visitor-keys": "npm:8.6.0"
|
"@typescript-eslint/visitor-keys": "npm:8.7.0"
|
||||||
graphemer: "npm:^1.4.0"
|
graphemer: "npm:^1.4.0"
|
||||||
ignore: "npm:^5.3.1"
|
ignore: "npm:^5.3.1"
|
||||||
natural-compare: "npm:^1.4.0"
|
natural-compare: "npm:^1.4.0"
|
||||||
|
@ -999,66 +1020,66 @@ __metadata:
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10c0/c777f01535b896d3092f9886a67ccf9e50bf9e0f581ffab607c5e95dbf3092299b0d9f3e6041b134d69059a6fa5691785940b81015f73bb9a0e9d1605f6442ea
|
checksum: 10c0/f04d6fa6a30e32d51feba0f08789f75ca77b6b67cfe494bdbd9aafa241871edc918fa8b344dc9d13dd59ae055d42c3920f0e542534f929afbfdca653dae598fa
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/parser@npm:^8.6.0":
|
"@typescript-eslint/parser@npm:^8.7.0":
|
||||||
version: 8.6.0
|
version: 8.7.0
|
||||||
resolution: "@typescript-eslint/parser@npm:8.6.0"
|
resolution: "@typescript-eslint/parser@npm:8.7.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/scope-manager": "npm:8.6.0"
|
"@typescript-eslint/scope-manager": "npm:8.7.0"
|
||||||
"@typescript-eslint/types": "npm:8.6.0"
|
"@typescript-eslint/types": "npm:8.7.0"
|
||||||
"@typescript-eslint/typescript-estree": "npm:8.6.0"
|
"@typescript-eslint/typescript-estree": "npm:8.7.0"
|
||||||
"@typescript-eslint/visitor-keys": "npm:8.6.0"
|
"@typescript-eslint/visitor-keys": "npm:8.7.0"
|
||||||
debug: "npm:^4.3.4"
|
debug: "npm:^4.3.4"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10c0/3f280d289b486359194d422d89df9896b3f10a6d45cdf851d1d5f3200489271a31ab503c127cb5656f9b0ad6d795dd708b960f21fb105750aac19f41f8f815d1
|
checksum: 10c0/1d5020ff1f5d3eb726bc6034d23f0a71e8fe7a713756479a0a0b639215326f71c0b44e2c25cc290b4e7c144bd3c958f1405199711c41601f0ea9174068714a64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/scope-manager@npm:8.6.0":
|
"@typescript-eslint/scope-manager@npm:8.7.0":
|
||||||
version: 8.6.0
|
version: 8.7.0
|
||||||
resolution: "@typescript-eslint/scope-manager@npm:8.6.0"
|
resolution: "@typescript-eslint/scope-manager@npm:8.7.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types": "npm:8.6.0"
|
"@typescript-eslint/types": "npm:8.7.0"
|
||||||
"@typescript-eslint/visitor-keys": "npm:8.6.0"
|
"@typescript-eslint/visitor-keys": "npm:8.7.0"
|
||||||
checksum: 10c0/37092ef70171c06854ac67ebfb2255063890c1c6133654e6b15b6adb6d2ab83de4feafd1599f4d02ed71a018226fcb3a389021758ec045e1904fb1798e90b4fe
|
checksum: 10c0/8b731a0d0bd3e8f6a322b3b25006f56879b5d2aad86625070fa438b803cf938cb8d5c597758bfa0d65d6e142b204dc6f363fa239bc44280a74e25aa427408eda
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/type-utils@npm:8.6.0":
|
"@typescript-eslint/type-utils@npm:8.7.0":
|
||||||
version: 8.6.0
|
version: 8.7.0
|
||||||
resolution: "@typescript-eslint/type-utils@npm:8.6.0"
|
resolution: "@typescript-eslint/type-utils@npm:8.7.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/typescript-estree": "npm:8.6.0"
|
"@typescript-eslint/typescript-estree": "npm:8.7.0"
|
||||||
"@typescript-eslint/utils": "npm:8.6.0"
|
"@typescript-eslint/utils": "npm:8.7.0"
|
||||||
debug: "npm:^4.3.4"
|
debug: "npm:^4.3.4"
|
||||||
ts-api-utils: "npm:^1.3.0"
|
ts-api-utils: "npm:^1.3.0"
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10c0/914b4637caa40c102117655a9b4451e0db611a61309ed39d6c57522655463c059f4dfd4e2d7ffdefcc9ab7533be21fb877b740c58f5be11f3530aa29f3d2cb62
|
checksum: 10c0/2bd9fb93a50ff1c060af41528e39c775ae93b09dd71450defdb42a13c68990dd388460ae4e81fb2f4a49c38dc12152c515d43e845eca6198c44b14aab66733bc
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/types@npm:8.6.0":
|
"@typescript-eslint/types@npm:8.7.0":
|
||||||
version: 8.6.0
|
version: 8.7.0
|
||||||
resolution: "@typescript-eslint/types@npm:8.6.0"
|
resolution: "@typescript-eslint/types@npm:8.7.0"
|
||||||
checksum: 10c0/e7051d212252f7d1905b5527b211e335db4ec5bb1d3a52d73c8d2de6ddf5cbc981f2c92ca9ffcef35f7447bda635ea1ccce5f884ade7f243d14f2a254982c698
|
checksum: 10c0/f7529eaea4ecc0f5e2d94ea656db8f930f6d1c1e65a3ffcb2f6bec87361173de2ea981405c2c483a35a927b3bdafb606319a1d0395a6feb1284448c8ba74c31e
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@npm:8.6.0":
|
"@typescript-eslint/typescript-estree@npm:8.7.0":
|
||||||
version: 8.6.0
|
version: 8.7.0
|
||||||
resolution: "@typescript-eslint/typescript-estree@npm:8.6.0"
|
resolution: "@typescript-eslint/typescript-estree@npm:8.7.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types": "npm:8.6.0"
|
"@typescript-eslint/types": "npm:8.7.0"
|
||||||
"@typescript-eslint/visitor-keys": "npm:8.6.0"
|
"@typescript-eslint/visitor-keys": "npm:8.7.0"
|
||||||
debug: "npm:^4.3.4"
|
debug: "npm:^4.3.4"
|
||||||
fast-glob: "npm:^3.3.2"
|
fast-glob: "npm:^3.3.2"
|
||||||
is-glob: "npm:^4.0.3"
|
is-glob: "npm:^4.0.3"
|
||||||
|
@ -1068,31 +1089,31 @@ __metadata:
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10c0/33ab8c03221a797865301f09d1d198c67f8b0e3dbf0d13e41f699dc2740242303a9fcfd7b38302cef318541fdedd832fd6e8ba34a5041a57e9114fa134045385
|
checksum: 10c0/d714605b6920a9631ab1511b569c1c158b1681c09005ab240125c442a63e906048064151a61ce5eb5f8fe75cea861ce5ae1d87be9d7296b012e4ab6d88755e8b
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/utils@npm:8.6.0":
|
"@typescript-eslint/utils@npm:8.7.0":
|
||||||
version: 8.6.0
|
version: 8.7.0
|
||||||
resolution: "@typescript-eslint/utils@npm:8.6.0"
|
resolution: "@typescript-eslint/utils@npm:8.7.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/eslint-utils": "npm:^4.4.0"
|
"@eslint-community/eslint-utils": "npm:^4.4.0"
|
||||||
"@typescript-eslint/scope-manager": "npm:8.6.0"
|
"@typescript-eslint/scope-manager": "npm:8.7.0"
|
||||||
"@typescript-eslint/types": "npm:8.6.0"
|
"@typescript-eslint/types": "npm:8.7.0"
|
||||||
"@typescript-eslint/typescript-estree": "npm:8.6.0"
|
"@typescript-eslint/typescript-estree": "npm:8.7.0"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
checksum: 10c0/5b615106342dfdf09f5a73e2554cc0c4d979c262a9a4548eb76ec7045768e0ff0bf0316cf8a5eb5404689cd476fcd335fc84f90eb985557559e42aeee33d687e
|
checksum: 10c0/7355b754ce2fc118773ed27a3e02b7dfae270eec73c2d896738835ecf842e8309544dfd22c5105aba6cae2787bfdd84129bbc42f4b514f57909dc7f6890b8eba
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/visitor-keys@npm:8.6.0":
|
"@typescript-eslint/visitor-keys@npm:8.7.0":
|
||||||
version: 8.6.0
|
version: 8.7.0
|
||||||
resolution: "@typescript-eslint/visitor-keys@npm:8.6.0"
|
resolution: "@typescript-eslint/visitor-keys@npm:8.7.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types": "npm:8.6.0"
|
"@typescript-eslint/types": "npm:8.7.0"
|
||||||
eslint-visitor-keys: "npm:^3.4.3"
|
eslint-visitor-keys: "npm:^3.4.3"
|
||||||
checksum: 10c0/9bd5d5daee9de7e009fdd1b64b1eca685a699d1b2639373bc279c97e25e769fff56fffef708ef66a2b19bc8bb201d36daf9e7084f0e0872178bfcf9d923b41f3
|
checksum: 10c0/1240da13c15f9f875644b933b0ad73713ef12f1db5715236824c1ec359e6ef082ce52dd9b2186d40e28be6a816a208c226e6e9af96e5baeb24b4399fe786ae7c
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -1673,6 +1694,13 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"discord-api-types@npm:0.37.100":
|
||||||
|
version: 0.37.100
|
||||||
|
resolution: "discord-api-types@npm:0.37.100"
|
||||||
|
checksum: 10c0/315cfbeb475a98ff711d44cb5dd2aa162730a904692775bf9429c384df597d9b950c20668a2177fd926aed52541d0915688e351906466111aae44d8c2063fb83
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"discord-api-types@npm:0.37.83":
|
"discord-api-types@npm:0.37.83":
|
||||||
version: 0.37.83
|
version: 0.37.83
|
||||||
resolution: "discord-api-types@npm:0.37.83"
|
resolution: "discord-api-types@npm:0.37.83"
|
||||||
|
@ -1687,10 +1715,10 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"discord-api-types@npm:^0.37.100":
|
"discord-api-types@npm:^0.37.101":
|
||||||
version: 0.37.100
|
version: 0.37.101
|
||||||
resolution: "discord-api-types@npm:0.37.100"
|
resolution: "discord-api-types@npm:0.37.101"
|
||||||
checksum: 10c0/315cfbeb475a98ff711d44cb5dd2aa162730a904692775bf9429c384df597d9b950c20668a2177fd926aed52541d0915688e351906466111aae44d8c2063fb83
|
checksum: 10c0/b29ebf92e5727bbbbadb20ef86a75c4bda4c48eb5b1975f70f63b8cf8bbb31c98a8c204975929da12892df6ec5494507c5550a597dbaecc000793dc408af93f9
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -1701,9 +1729,9 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"discord.js@npm:^14.16.2":
|
"discord.js@npm:^14.16.3":
|
||||||
version: 14.16.2
|
version: 14.16.3
|
||||||
resolution: "discord.js@npm:14.16.2"
|
resolution: "discord.js@npm:14.16.3"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@discordjs/builders": "npm:^1.9.0"
|
"@discordjs/builders": "npm:^1.9.0"
|
||||||
"@discordjs/collection": "npm:1.5.3"
|
"@discordjs/collection": "npm:1.5.3"
|
||||||
|
@ -1712,12 +1740,12 @@ __metadata:
|
||||||
"@discordjs/util": "npm:^1.1.1"
|
"@discordjs/util": "npm:^1.1.1"
|
||||||
"@discordjs/ws": "npm:1.1.1"
|
"@discordjs/ws": "npm:1.1.1"
|
||||||
"@sapphire/snowflake": "npm:3.5.3"
|
"@sapphire/snowflake": "npm:3.5.3"
|
||||||
discord-api-types: "npm:0.37.97"
|
discord-api-types: "npm:0.37.100"
|
||||||
fast-deep-equal: "npm:3.1.3"
|
fast-deep-equal: "npm:3.1.3"
|
||||||
lodash.snakecase: "npm:4.1.1"
|
lodash.snakecase: "npm:4.1.1"
|
||||||
tslib: "npm:^2.6.3"
|
tslib: "npm:^2.6.3"
|
||||||
undici: "npm:6.19.8"
|
undici: "npm:6.19.8"
|
||||||
checksum: 10c0/2b4289d6a3b3f5c2978dbfa840225d2f789eaf161ae85bf12e0125b5096eb64562c170dfc7f0d1ee389beb565cabe45733a27853178b2d0dc78548b5d1a83338
|
checksum: 10c0/d3cfcbad532bdb4414df9d12bb1a2f6ca18fa1113726b0e759d298e0e7fbcccf88ee485ada519b092f72d1004e9c4c792efbf3728a050bcd4202b6046161cc98
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -1937,19 +1965,22 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"eslint@npm:^9.11.0":
|
"eslint@npm:^9.11.1":
|
||||||
version: 9.11.0
|
version: 9.11.1
|
||||||
resolution: "eslint@npm:9.11.0"
|
resolution: "eslint@npm:9.11.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/eslint-utils": "npm:^4.2.0"
|
"@eslint-community/eslint-utils": "npm:^4.2.0"
|
||||||
"@eslint-community/regexpp": "npm:^4.11.0"
|
"@eslint-community/regexpp": "npm:^4.11.0"
|
||||||
"@eslint/config-array": "npm:^0.18.0"
|
"@eslint/config-array": "npm:^0.18.0"
|
||||||
|
"@eslint/core": "npm:^0.6.0"
|
||||||
"@eslint/eslintrc": "npm:^3.1.0"
|
"@eslint/eslintrc": "npm:^3.1.0"
|
||||||
"@eslint/js": "npm:9.11.0"
|
"@eslint/js": "npm:9.11.1"
|
||||||
"@eslint/plugin-kit": "npm:^0.2.0"
|
"@eslint/plugin-kit": "npm:^0.2.0"
|
||||||
"@humanwhocodes/module-importer": "npm:^1.0.1"
|
"@humanwhocodes/module-importer": "npm:^1.0.1"
|
||||||
"@humanwhocodes/retry": "npm:^0.3.0"
|
"@humanwhocodes/retry": "npm:^0.3.0"
|
||||||
"@nodelib/fs.walk": "npm:^1.2.8"
|
"@nodelib/fs.walk": "npm:^1.2.8"
|
||||||
|
"@types/estree": "npm:^1.0.6"
|
||||||
|
"@types/json-schema": "npm:^7.0.15"
|
||||||
ajv: "npm:^6.12.4"
|
ajv: "npm:^6.12.4"
|
||||||
chalk: "npm:^4.0.0"
|
chalk: "npm:^4.0.0"
|
||||||
cross-spawn: "npm:^7.0.2"
|
cross-spawn: "npm:^7.0.2"
|
||||||
|
@ -1982,7 +2013,7 @@ __metadata:
|
||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
eslint: bin/eslint.js
|
eslint: bin/eslint.js
|
||||||
checksum: 10c0/3438a78172bc667dc87bc4ad864671bd93231c82c9d366899ea3a77fc3444c8cdd158e7fe3ca1cfe4cb566045b1b36c0ccae9fc20efeb4b187f1a534075a1177
|
checksum: 10c0/fc9afc31155fef8c27fc4fd00669aeafa4b89ce5abfbf6f60e05482c03d7ff1d5e7546e416aa47bf0f28c9a56597a94663fd0264c2c42a1890f53cac49189f24
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
@ -2899,31 +2930,31 @@ __metadata:
|
||||||
resolution: "muffinbot@workspace:."
|
resolution: "muffinbot@workspace:."
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint/eslintrc": "npm:^3.1.0"
|
"@eslint/eslintrc": "npm:^3.1.0"
|
||||||
"@eslint/js": "npm:^9.11.0"
|
"@eslint/js": "npm:^9.11.1"
|
||||||
"@migan/prettier-config": "npm:^1.2.0"
|
"@migan/prettier-config": "npm:^1.2.0"
|
||||||
"@prisma/client": "npm:^5.19.1"
|
"@prisma/client": "npm:^5.20.0"
|
||||||
"@sapphire/decorators": "npm:^6.1.0"
|
"@sapphire/decorators": "npm:^6.1.0"
|
||||||
"@sapphire/discord.js-utilities": "npm:^7.3.0"
|
"@sapphire/discord.js-utilities": "npm:^7.3.0"
|
||||||
"@sapphire/framework": "npm:^5.2.1"
|
"@sapphire/framework": "npm:^5.2.1"
|
||||||
"@sapphire/pieces": "npm:^4.3.1"
|
"@sapphire/pieces": "npm:^4.3.1"
|
||||||
"@sapphire/utilities": "npm:^3.17.0"
|
"@sapphire/utilities": "npm:^3.17.0"
|
||||||
"@types/node": "npm:^22.5.5"
|
"@types/node": "npm:^22.7.4"
|
||||||
"@types/semver": "npm:^7.5.8"
|
"@types/semver": "npm:^7.5.8"
|
||||||
"@typescript-eslint/eslint-plugin": "npm:^8.6.0"
|
"@typescript-eslint/eslint-plugin": "npm:^8.7.0"
|
||||||
"@typescript-eslint/parser": "npm:^8.6.0"
|
"@typescript-eslint/parser": "npm:^8.7.0"
|
||||||
"@yarnpkg/pnpify": "npm:^4.1.2"
|
"@yarnpkg/pnpify": "npm:^4.1.2"
|
||||||
cross-env: "npm:^7.0.3"
|
cross-env: "npm:^7.0.3"
|
||||||
discord-api-types: "npm:^0.37.100"
|
discord-api-types: "npm:^0.37.101"
|
||||||
discord.js: "npm:^14.16.2"
|
discord.js: "npm:^14.16.3"
|
||||||
dokdo: "npm:^1.0.1"
|
dokdo: "npm:^1.0.1"
|
||||||
dotenv: "npm:^16.4.5"
|
dotenv: "npm:^16.4.5"
|
||||||
eslint: "npm:^9.11.0"
|
eslint: "npm:^9.11.1"
|
||||||
eslint-config-prettier: "npm:^9.1.0"
|
eslint-config-prettier: "npm:^9.1.0"
|
||||||
eslint-plugin-prettier: "npm:^5.2.1"
|
eslint-plugin-prettier: "npm:^5.2.1"
|
||||||
globals: "npm:^15.9.0"
|
globals: "npm:^15.9.0"
|
||||||
mysql2: "npm:^3.11.3"
|
mysql2: "npm:^3.11.3"
|
||||||
prettier: "npm:^3.3.3"
|
prettier: "npm:^3.3.3"
|
||||||
prisma: "npm:^5.19.1"
|
prisma: "npm:^5.20.0"
|
||||||
semver: "npm:^7.6.3"
|
semver: "npm:^7.6.3"
|
||||||
tsup: "npm:^8.3.0"
|
tsup: "npm:^8.3.0"
|
||||||
typescript: "npm:^5.6.2"
|
typescript: "npm:^5.6.2"
|
||||||
|
@ -3247,18 +3278,18 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"prisma@npm:^5.19.1":
|
"prisma@npm:^5.20.0":
|
||||||
version: 5.19.1
|
version: 5.20.0
|
||||||
resolution: "prisma@npm:5.19.1"
|
resolution: "prisma@npm:5.20.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@prisma/engines": "npm:5.19.1"
|
"@prisma/engines": "npm:5.20.0"
|
||||||
fsevents: "npm:2.3.3"
|
fsevents: "npm:2.3.3"
|
||||||
dependenciesMeta:
|
dependenciesMeta:
|
||||||
fsevents:
|
fsevents:
|
||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
prisma: build/index.js
|
prisma: build/index.js
|
||||||
checksum: 10c0/efbe4966fc5450e8c3c7e09f8e9950c2068e90f44b1cbb3584f4e48d7188a4d5230ec8fb12c3b9ba75fa7407fe45c0527123579e121a31ef652512f39c29c2d9
|
checksum: 10c0/8b4ba34421b0552a055e671cecef53a5f244bf79c7fb767c9493f347a1f24f458ed84cdf78e32e067f67b173d98482edf68df1cd6072d523669cf914b4e376a9
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue