138 lines
3.8 KiB
JavaScript
138 lines
3.8 KiB
JavaScript
const TelegramBot = require('node-telegram-bot-api')
|
|
const fs = require('fs')
|
|
|
|
const filter = require('./src/filter.js')
|
|
const sender = require('./src/sender.js')
|
|
|
|
const commandManager = require('./src/commandManager.js')
|
|
|
|
const bot_token = fs.readFileSync('./bot-token.txt', 'utf8').trim()
|
|
const bot = new TelegramBot(bot_token, { polling: true })
|
|
|
|
const DEVELOPER = 121605312
|
|
|
|
let exception = {}
|
|
|
|
const command = new commandManager()
|
|
|
|
const syncException = (err, data) => {
|
|
if (err)
|
|
console.log(err)
|
|
|
|
try {
|
|
exception = JSON.parse(data)
|
|
} catch (err) {
|
|
exception = {}
|
|
}
|
|
}
|
|
|
|
const init = () => {
|
|
sender.init(bot)
|
|
fs.readFile('./exception.txt', syncException)
|
|
fs.watch('./exception.txt', { encoding: 'buffer' }, (event, filename) => {
|
|
if (filename) {
|
|
fs.readFile('./exception.txt', syncException)
|
|
}
|
|
})
|
|
}
|
|
|
|
try {
|
|
init()
|
|
} catch (err) {
|
|
fs.writeFile('./exception.txt', '{}', (err) => {
|
|
if (!err) {
|
|
init()
|
|
}
|
|
})
|
|
}
|
|
|
|
bot.on('message', message => {
|
|
const user = message.from
|
|
const text = message.text
|
|
const date = message.date * 1000
|
|
|
|
if (!text || Math.abs(Date.now() - date) > 5000) {
|
|
return
|
|
}
|
|
/*
|
|
if (user.id != DEVELOPER) {
|
|
return
|
|
}*/
|
|
|
|
if (text[0] === '/') {
|
|
let name = text.replace(/\//, '')
|
|
|
|
if (/@jolbon_emoji_bot/g.test(text))
|
|
name = name.replace(/@jolbon_emoji_bot.{0,}/g, '')
|
|
else
|
|
name = name.replace(/ .{0,}/g, '')
|
|
|
|
let parameter = []
|
|
if (/ /g.test(text)) {
|
|
parameter = text.split(' ')
|
|
parameter.shift()
|
|
}
|
|
|
|
const c = command.getCommand(name)
|
|
switch (name) {
|
|
case 'off':
|
|
c.execute(message, parameter).then(data => {
|
|
sender.send(message.chat.id, data + '님이 사용을 하지 안심시오ㅠㅠㅠ', message.message_id)
|
|
}).catch(err => {
|
|
sender.send(message.chat.id, '않이~~ ' + err + '님은 이미 사용 중단 하셨슴시오 ㅡㅡ', message.message_id)
|
|
})
|
|
break
|
|
case 'on':
|
|
c.execute(message, parameter).then(data => {
|
|
sender.send(message.chat.id, data + '님이 내 의지에 굴복하셧슴시오~~ 사용 허가 했심시오~~~', message.message_id)
|
|
}).catch(err => {
|
|
sender.send(message.chat.id, '호고곡~! ' + err + '님은 이미 사용중이심시오~~', message.message_id)
|
|
})
|
|
break
|
|
case 'clear':
|
|
c.execute(message, parameter).then(data => {
|
|
sender.send(message.chat.id, '원격으로 목록을 지웠슴시오~~', message.message_id)
|
|
}).catch(err => {
|
|
sender.send(message.chat.id, '았~~!! ' + err + '님으 권한은 없는것 갓심시오~~', message.message_id)
|
|
})
|
|
break
|
|
case 'list':
|
|
c.execute(message, parameter).then(data => {
|
|
sender.send(message.chat.id, '졸본콘을 사용 않하는 나데기들임니다;;\n' + data, message.message_id)
|
|
}).catch(err => {
|
|
sender.send(message.chat.id, '았~~!! ' + err + '님으 권한은 없는것 갓심시오~~', message.message_id)
|
|
})
|
|
break
|
|
}
|
|
}
|
|
|
|
const roomException = exception[message.chat.id]
|
|
if (roomException != undefined) {
|
|
if (roomException.includes(user.id)) {
|
|
return
|
|
}
|
|
}
|
|
|
|
; (async () => {
|
|
let result = await filter.correct(text)
|
|
result = filter.spacing(result, /[^ㄱ-ㅎ][ㄱ-ㅎ]/g)
|
|
result = filter.spacing(result, /[ㄱ-ㅎ][^ㄱ-ㅎ]/g)
|
|
result = filter.spacing(result, /[ㄱ-ㅎ가-힣][a-zA-Z]/g)
|
|
result = filter.spacing(result, /[a-zA-Z][ㄱ-ㅎ가-힣]/g)
|
|
|
|
if (result != '') {
|
|
let replyId = message.message_id
|
|
|
|
if (message.reply_to_message) {
|
|
replyId = message.reply_to_message.message_id
|
|
}
|
|
|
|
sender.sendSticker(message.chat.id, result, replyId)
|
|
}
|
|
})()
|
|
})
|
|
|
|
bot.on('polling_error', (error) => {
|
|
console.log(error)
|
|
})
|