.
This commit is contained in:
parent
56b3841592
commit
f19e307109
4 changed files with 25 additions and 34 deletions
|
@ -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 { Command, noPerm, ChatBot } from './modules'
|
||||||
import Dokdo from 'dokdo'
|
import Dokdo from 'dokdo'
|
||||||
import { readdirSync } from 'node:fs'
|
import { readdirSync } from 'node:fs'
|
||||||
|
@ -9,7 +15,7 @@ const prefix = '멒힌아 '
|
||||||
|
|
||||||
export default class MuffinAI extends Client {
|
export default class MuffinAI extends Client {
|
||||||
public chatBot = new ChatBot()
|
public chatBot = new ChatBot()
|
||||||
private modules: Collection<string, Command> = new Collection()
|
#modules: Collection<string, Command> = new Collection()
|
||||||
public constructor() {
|
public constructor() {
|
||||||
super({
|
super({
|
||||||
intents: [
|
intents: [
|
||||||
|
@ -26,7 +32,7 @@ export default class MuffinAI extends Client {
|
||||||
readdirSync(join(__dirname, 'Commands')).forEach(file => {
|
readdirSync(join(__dirname, 'Commands')).forEach(file => {
|
||||||
const a = require(join(__dirname, 'Commands', file))
|
const a = require(join(__dirname, 'Commands', file))
|
||||||
const b: Command = new a.default()
|
const b: Command = new a.default()
|
||||||
this.modules.set(b.name, b)
|
this.#modules.set(b.name, b)
|
||||||
})
|
})
|
||||||
|
|
||||||
this.once('ready', client => {
|
this.once('ready', client => {
|
||||||
|
@ -44,18 +50,21 @@ export default class MuffinAI extends Client {
|
||||||
owners: ['415135882006495242'],
|
owners: ['415135882006495242'],
|
||||||
}).run(msg)
|
}).run(msg)
|
||||||
if (msg.content.startsWith('머핀아 ')) {
|
if (msg.content.startsWith('머핀아 ')) {
|
||||||
msg.channel.sendTyping()
|
if (msg.channel instanceof TextChannel) {
|
||||||
|
if (msg.channel.nsfw) return
|
||||||
|
await msg.channel.sendTyping()
|
||||||
setTimeout(
|
setTimeout(
|
||||||
async () => msg.channel.send(await this.chatBot.getResponse(msg)),
|
async () => msg.channel.send(await this.chatBot.getResponse(msg)),
|
||||||
1000
|
1000
|
||||||
)
|
)
|
||||||
|
}
|
||||||
} else if (msg.content.startsWith(prefix)) {
|
} else if (msg.content.startsWith(prefix)) {
|
||||||
const args: string[] = msg.content
|
const args: string[] = msg.content
|
||||||
.slice(prefix.length)
|
.slice(prefix.length)
|
||||||
.trim()
|
.trim()
|
||||||
.split('/ +/g')
|
.split('/ +/g')
|
||||||
|
|
||||||
const command = this.modules.get(args.toString())
|
const command = this.#modules.get(args.toString())
|
||||||
if (!command) return
|
if (!command) return
|
||||||
if (command.noPerm && msg.author.id !== '415135882006495242')
|
if (command.noPerm && msg.author.id !== '415135882006495242')
|
||||||
return await noPerm(msg)
|
return await noPerm(msg)
|
||||||
|
|
|
@ -4,15 +4,7 @@ import Database from './Database'
|
||||||
type TrainType = 'muffinOnly' | 'All'
|
type TrainType = 'muffinOnly' | 'All'
|
||||||
|
|
||||||
export default class ChatBot {
|
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!)
|
public db = new Database(process.env.DB_PATH!)
|
||||||
private _trainType: TrainType = 'muffinOnly'
|
|
||||||
|
|
||||||
public async getResponse(msg: Message): Promise<string> {
|
public async getResponse(msg: Message): Promise<string> {
|
||||||
const request = msg.content.replace('머핀아 ', '')
|
const request = msg.content.replace('머핀아 ', '')
|
||||||
|
@ -21,16 +13,6 @@ export default class ChatBot {
|
||||||
if (!response) response = '살ㄹ려주세요'
|
if (!response) response = '살ㄹ려주세요'
|
||||||
console.log(`⌨️ㅣ${request}`)
|
console.log(`⌨️ㅣ${request}`)
|
||||||
console.log(`🍰ㅣ${response}`)
|
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
|
return response
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,16 +12,16 @@ interface ResponseData {
|
||||||
}
|
}
|
||||||
|
|
||||||
export default class Database {
|
export default class Database {
|
||||||
private sqliteDB: sqlite3.Database
|
#sqliteDB: sqlite3.Database
|
||||||
public constructor(dbPath: string) {
|
public constructor(dbPath: string) {
|
||||||
const a = sqlite3.verbose()
|
const a = sqlite3.verbose()
|
||||||
this.sqliteDB = new a.Database(dbPath)
|
this.#sqliteDB = new a.Database(dbPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
public all(): Promise<ResponseData[]> {
|
public all(): Promise<ResponseData[]> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
this.sqliteDB.serialize(() => {
|
this.#sqliteDB.serialize(() => {
|
||||||
this.sqliteDB.all('SELECT * FROM statement;', (err, rows) => {
|
this.#sqliteDB.all('SELECT * FROM statement;', (err, rows) => {
|
||||||
if (err) reject(err)
|
if (err) reject(err)
|
||||||
resolve([...rows])
|
resolve([...rows])
|
||||||
})
|
})
|
||||||
|
@ -34,10 +34,10 @@ export default class Database {
|
||||||
params: any[],
|
params: any[],
|
||||||
callBack: (err: Error | null) => void
|
callBack: (err: Error | null) => void
|
||||||
) {
|
) {
|
||||||
this.sqliteDB.run(sql, params, callBack)
|
this.#sqliteDB.run(sql, params, callBack)
|
||||||
}
|
}
|
||||||
|
|
||||||
public close() {
|
public close() {
|
||||||
this.sqliteDB.close()
|
this.#sqliteDB.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
|
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
|
||||||
|
|
||||||
/* Language and Environment */
|
/* Language and Environment */
|
||||||
"target": "es2021",
|
"target": "es2022",
|
||||||
/* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
/* 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. */
|
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
||||||
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
||||||
|
|
Loading…
Reference in a new issue