import { SapphireClient, container, LogLevel } from '@sapphire/framework' import { GatewayIntentBits, type Snowflake } from 'discord.js' import { ChatBot, NODE_ENV, MaaDatabase } from './modules' import { version } from '../package.json' import config from '../config.json' container.config = config container.prefix = config.bot.prefix container.version = version container.database = new MaaDatabase() container.chatBot = new ChatBot(container.database) container.dokdoAliases = ['dokdo', 'dok', 'Dokdo', 'Dok', '테스트'] export default class MuffinBot extends SapphireClient { public constructor() { super({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, ], loadMessageCommandListeners: true, defaultPrefix: container.prefix, logger: { level: NODE_ENV === 'development' ? LogLevel.Debug : LogLevel.Info, }, allowedMentions: { roles: [], users: [], repliedUser: true, }, }) } public override async login(): Promise { await container.chatBot.train(this) return super.login(config.bot.token) } } declare module '@sapphire/pieces' { interface Container { database: MaaDatabase chatBot: ChatBot prefix: string version: string dokdoAliases: string[] config: { bot: { owner_ID: Snowflake token: string } train: { user_ID: Snowflake } mysql: { user: string host: string password: string database: string port: number } } } } declare module '@sapphire/framework' { interface DetailedDescriptionCommandObject { usage: string examples?: string[] } }