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) })