diff --git a/src/Client.ts b/src/Client.ts index 3f89f37..71751af 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,4 +1,10 @@ -import { ActivityType, Client, Collection, GatewayIntentBits } from 'discord.js' +import { + ActivityType, + Client, + Collection, + GatewayIntentBits, + TextChannel, +} from 'discord.js' import { Command, noPerm, ChatBot } from './modules' import Dokdo from 'dokdo' import { readdirSync } from 'node:fs' @@ -9,7 +15,7 @@ const prefix = '멒힌아 ' export default class MuffinAI extends Client { public chatBot = new ChatBot() - private modules: Collection = new Collection() + #modules: Collection = new Collection() public constructor() { super({ intents: [ @@ -26,7 +32,7 @@ export default class MuffinAI extends Client { readdirSync(join(__dirname, 'Commands')).forEach(file => { const a = require(join(__dirname, 'Commands', file)) const b: Command = new a.default() - this.modules.set(b.name, b) + this.#modules.set(b.name, b) }) this.once('ready', client => { @@ -44,18 +50,21 @@ export default class MuffinAI extends Client { owners: ['415135882006495242'], }).run(msg) if (msg.content.startsWith('머핀아 ')) { - msg.channel.sendTyping() - setTimeout( - async () => msg.channel.send(await this.chatBot.getResponse(msg)), - 1000 - ) + if (msg.channel instanceof TextChannel) { + if (msg.channel.nsfw) return + await msg.channel.sendTyping() + setTimeout( + async () => msg.channel.send(await this.chatBot.getResponse(msg)), + 1000 + ) + } } else if (msg.content.startsWith(prefix)) { const args: string[] = msg.content .slice(prefix.length) .trim() .split('/ +/g') - const command = this.modules.get(args.toString()) + const command = this.#modules.get(args.toString()) if (!command) return if (command.noPerm && msg.author.id !== '415135882006495242') return await noPerm(msg) diff --git a/src/modules/ChatBot.ts b/src/modules/ChatBot.ts index 4451bb5..388717f 100644 --- a/src/modules/ChatBot.ts +++ b/src/modules/ChatBot.ts @@ -4,15 +4,7 @@ import Database from './Database' type TrainType = 'muffinOnly' | 'All' export default class ChatBot { - get trainType(): TrainType { - return this._trainType - } - - set trainType(value: TrainType) { - this._trainType = value - } public db = new Database(process.env.DB_PATH!) - private _trainType: TrainType = 'muffinOnly' public async getResponse(msg: Message): Promise { const request = msg.content.replace('머핀아 ', '') @@ -21,16 +13,6 @@ export default class ChatBot { if (!response) response = '살ㄹ려주세요' console.log(`⌨️ㅣ${request}`) console.log(`🍰ㅣ${response}`) - // .then(rows => { - // const request = msg.content.replace('머핀아 ', '') - // response = rows[Math.floor(Math.random() * rows.length)].text - // if (!response) response = '살ㄹ려주세요' - // if (sendMsg) { - // msg.channel.sendTyping() - // setTimeout(() => msg.channel.send(response), 1000) - // } - // }) - // .catch(console.error) return response } diff --git a/src/modules/Database.ts b/src/modules/Database.ts index dbef264..4b7da22 100644 --- a/src/modules/Database.ts +++ b/src/modules/Database.ts @@ -12,16 +12,16 @@ interface ResponseData { } export default class Database { - private sqliteDB: sqlite3.Database + #sqliteDB: sqlite3.Database public constructor(dbPath: string) { const a = sqlite3.verbose() - this.sqliteDB = new a.Database(dbPath) + this.#sqliteDB = new a.Database(dbPath) } public all(): Promise { return new Promise((resolve, reject) => { - this.sqliteDB.serialize(() => { - this.sqliteDB.all('SELECT * FROM statement;', (err, rows) => { + this.#sqliteDB.serialize(() => { + this.#sqliteDB.all('SELECT * FROM statement;', (err, rows) => { if (err) reject(err) resolve([...rows]) }) @@ -34,10 +34,10 @@ export default class Database { params: any[], callBack: (err: Error | null) => void ) { - this.sqliteDB.run(sql, params, callBack) + this.#sqliteDB.run(sql, params, callBack) } public close() { - this.sqliteDB.close() + this.#sqliteDB.close() } } diff --git a/tsconfig.json b/tsconfig.json index 31ad7be..deb77a8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,7 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "es2021", + "target": "es2022", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */