Files
cortex-bot/bot.js
Hepller 331df17318 v0.7.0
2021-09-08 23:13:31 +03:00

58 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** __ __ __ ___ ___
* / ' / \ |__) | |__ \_/
* \__. \__/ | \ | |___ / \
*
* @copyright © 2021 hepller
*/
// Импорт модулей и функций
const {VK} = require('vk-io')
const Markov = require('markov-generator')
// Конфиг, паттерн и файл проекта
const config = require('./config')
const data = require(`./data`)
const project = require('./package')
/** VK API */
const vk = new VK({token: config.token, v: 5.131, apiLimit: 1})
// Префиксы для логирования
const succes_prefix = '\u001B[32m>\u001B[0m'
const warn_prefix = '\u001B[33m>\u001B[0m'
const error_prefix = '\u001B[31m>\u001B[0m'
// Сообщения при запуске
console.log(succes_prefix, `Cortex Bot v${project.version}`)
console.log(succes_prefix, 'VK API connection ...')
// Запуск обработчика событий ВК
vk.updates.startPolling().then(() => console.log(succes_prefix, 'Successfully connected'))
// Обработчик сообщений ВК
vk.updates.on('message_new', async ctx => {
// Игнорирование лишних сообщений
if (!ctx.isChat || ctx.isOutbox || ctx.isGroup) return
// Генерация сообщения с определенным шансом
if (Math.random() * 100 < config.chance) {
// Статус набора текста
ctx.setActivity()
/** Сгенерированный текст */
const sentence = new Markov({input: data, minLenght: config.min_words}).makeChain()
// Предупреждение при превышении лимита символов
if (sentence.split('').length > config.max_symbols) return console.warn(warn_prefix, `#${ctx.chatId} Symbols limit exceeded (${sentence.split('').length}/${config.max_symbols})`)
// Отправка сообщения
ctx.send(sentence)
.then(() => console.log(succes_prefix, `#${ctx.chatId} Text generated`))
}
})
// Обработка возможных ошибок
process.on('uncaughtException', error => console.error(error_prefix, `Error: ${error.message}`))
process.on('unhandledRejection', error => console.error(error_prefix, `Error: ${error.message}`))