bot/src/Client.ts

67 lines
1.7 KiB
TypeScript
Raw Normal View History

2023-01-25 05:42:09 +00:00
import { ActivityType, Client, GatewayIntentBits, Message } from 'discord.js'
2023-01-24 07:43:52 +00:00
import ChatBot from './ChatBot.js'
import { join, dirname } from 'node:path'
import { fileURLToPath } from 'node:url'
2023-01-24 11:27:40 +00:00
import Dokdo from 'dokdo'
2023-01-23 13:53:02 +00:00
import 'dotenv/config'
2023-01-25 05:42:09 +00:00
function noPerm(msg: Message) {
msg.reply({
content: '당신은 내 남자친구가 아니야!',
allowedMentions: {
repliedUser: false,
parse: [],
users: [],
roles: [],
},
})
}
2023-01-23 13:53:02 +00:00
export default class MuffinAI extends Client {
2023-01-24 07:43:52 +00:00
private chatBot = new ChatBot(
join(dirname(fileURLToPath(import.meta.url)), '..', 'db', 'db.sqlite3')
)
2023-01-23 13:53:02 +00:00
public constructor() {
super({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
})
}
public override login(): Promise<string> {
2023-01-25 05:42:09 +00:00
this.chatBot.train(this, true)
2023-01-23 13:53:02 +00:00
this.once('ready', client => {
client.user!.setActivity({
type: ActivityType.Playing,
name: 'ㅅ살려주세요..!',
})
2023-01-23 14:00:35 +00:00
console.log(`먹힐 준비 완료`)
2023-01-24 03:55:58 +00:00
}).on('messageCreate', msg => {
2023-01-23 13:53:02 +00:00
if (msg.author.bot) return
2023-01-24 11:27:40 +00:00
new Dokdo(this, {
prefix: '멒힌아 ',
2023-01-25 05:42:09 +00:00
noPerm,
2023-01-24 11:27:40 +00:00
aliases: ['테스트'],
owners: ['415135882006495242'],
}).run(msg)
2023-01-24 10:54:49 +00:00
if (msg.content.startsWith('머핀아 ')) this.chatBot.getResponse(msg, true)
else if (msg.content.startsWith('멒힌아 봇꺼')) {
if (msg.author.id !== '415135882006495242') {
2023-01-25 05:42:09 +00:00
noPerm(msg)
2023-01-24 10:54:49 +00:00
return
}
this.destroy()
} else return
2023-01-23 13:53:02 +00:00
})
return super.login()
}
2023-01-24 10:54:49 +00:00
public override destroy() {
this.chatBot.destroy()
super.destroy()
}
2023-01-23 13:53:02 +00:00
}