Jolbon-Emoji-Bot/index.js
2018-09-29 18:07:57 +09:00

124 lines
3.1 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')
const bot = new TelegramBot(bot_token, { polling: true })
const sender = new Sender(bot)
let exception = [
''
]
const command = new commandManager()
fs.readFile('./exception.txt', (err, data) => {
if (err) {
console.log(err)
}
exception = []
const line = (data + '').split('\r\n')
for (const l of line) {
exception.push(l)
}
})
fs.watch('./exception.txt', { encoding: 'buffer' }, (event, filename) => {
if (filename) {
fs.readFile('./exception.txt', (err, data) => {
if (err) {
console.log(err)
}
exception = []
const line = (data + '').split('\r\n')
for (const l of line) {
exception.push(l)
}
})
}
})
bot.on('message', message => {
const user = message.from.username
const text = message.text
const date = message.date
if (!text || Number(new Date()) - date < 5000) {
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(user, 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(user, 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 'list':
c.execute(user, parameter).then(data => {
sender.send(message.chat.id, data, message.message_id)
}).catch(err => {
sender.send(message.chat.id, 'ERROR: ' + err, message.message_id)
})
break
}
}
for (const e of exception) {
if (user == e) {
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)
})