v0.6.4
This commit is contained in:
22
core/core.js
22
core/core.js
@@ -12,11 +12,15 @@ import Markov from 'markov-generator'
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import Logger from './logger.js'
|
import Logger from './logger.js'
|
||||||
|
|
||||||
|
// Пути к файлам
|
||||||
|
const data_path = 'data.json'
|
||||||
|
const config_path = 'config.yml'
|
||||||
|
|
||||||
/** Конфиг */
|
/** Конфиг */
|
||||||
let config = YAML.parse(fs.readFileSync('config.yml', 'utf8'))
|
let config = YAML.parse(fs.readFileSync(config_path, 'utf8'))
|
||||||
|
|
||||||
// БД и файл проекта
|
// БД и файл проекта
|
||||||
const db = JSON.parse(fs.readFileSync('data.json', 'utf8'))
|
const db = JSON.parse(fs.readFileSync(data_path, 'utf8'))
|
||||||
const project = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
const project = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
||||||
|
|
||||||
/** VK API */
|
/** VK API */
|
||||||
@@ -27,7 +31,7 @@ const vk = new VK({token: config.vk_api.token, v: 5.130, apiLimit: 1})
|
|||||||
* @param {object} data БД
|
* @param {object} data БД
|
||||||
*/
|
*/
|
||||||
db.write = (data) => {
|
db.write = (data) => {
|
||||||
fs.writeFileSync('data.json', JSON.stringify(data, null, '\t'))
|
fs.writeFileSync(data_path, JSON.stringify(data, null, '\t'))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,10 +65,10 @@ Logger.info(`Cortex Bot v${project.version}`)
|
|||||||
Logger.info('Подключение к VK API ...')
|
Logger.info('Подключение к VK API ...')
|
||||||
|
|
||||||
// Перезагрузка конфигурации при её изменении
|
// Перезагрузка конфигурации при её изменении
|
||||||
watchFile('./config.yml', async () => {
|
fs.watchFile(config_path, async () => {
|
||||||
|
|
||||||
// Парсинг
|
// Парсинг
|
||||||
config = YAML.parse(fs.readFileSync('config.yml', 'utf8'))
|
config = YAML.parse(fs.readFileSync(config_path, 'utf8'))
|
||||||
|
|
||||||
// Запись в лог
|
// Запись в лог
|
||||||
Logger.info('Конфигурация перезагружена')
|
Logger.info('Конфигурация перезагружена')
|
||||||
@@ -107,7 +111,7 @@ vk.updates.on('message_new', async ctx => {
|
|||||||
|
|
||||||
// Генерация текста
|
// Генерация текста
|
||||||
// Если данных будет недостаточно произойдет ошибка <<Maximum call stack size exceeded>>
|
// Если данных будет недостаточно произойдет ошибка <<Maximum call stack size exceeded>>
|
||||||
let sentence = new Markov(getChat().data, config.generation.min_words).makeChain()
|
let sentence = new Markov(ctx.chat.data, config.generation.min_words).makeChain()
|
||||||
|
|
||||||
// Форматирование текста
|
// Форматирование текста
|
||||||
if (config.messages.format.to_lower_case) sentence = sentence.toLowerCase()
|
if (config.messages.format.to_lower_case) sentence = sentence.toLowerCase()
|
||||||
@@ -115,17 +119,17 @@ vk.updates.on('message_new', async ctx => {
|
|||||||
if (config.messages.format.end_dot) sentence = sentence + '.'
|
if (config.messages.format.end_dot) sentence = sentence + '.'
|
||||||
|
|
||||||
// Предупреждение при превышении лимита символов
|
// Предупреждение при превышении лимита символов
|
||||||
if (sentence.split('').length > config.messages.symbols_limit) return Logger.warn(`#${ctx.chatId} Превышен лимит символов (${sentence.split('').length}/${config.messages.symbols_limit})`)
|
if (sentence.split('').length > config.messages.max_symbols) return Logger.warn(`#${ctx.chatId} Превышен лимит символов (${sentence.split('').length}/${config.messages.symbols_limit})`)
|
||||||
|
|
||||||
// Статус набора текста
|
// Статус набора текста
|
||||||
await ctx.setActivity()
|
await ctx.setActivity()
|
||||||
|
|
||||||
// Задержка перед отправкой сообщений
|
// Задержка перед отправкой сообщений
|
||||||
// Высчитывается на основе количества символов в сгенерированном тексте для имитации написания
|
// Высчитывается на основе количества символов в тексте для имитации написания
|
||||||
await new Promise(resolve => setTimeout(resolve, sentence.split('').length * 2 + '00'))
|
await new Promise(resolve => setTimeout(resolve, sentence.split('').length * 2 + '00'))
|
||||||
|
|
||||||
// Отправка сообщения
|
// Отправка сообщения
|
||||||
await ctx.send(sentence)
|
ctx.send(sentence)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ export default class Logger {
|
|||||||
* @param {string} text - Текст сообщения
|
* @param {string} text - Текст сообщения
|
||||||
*/
|
*/
|
||||||
static info(text) {
|
static info(text) {
|
||||||
console.log(`${getTimeString()} INFO - ${text}`.replace(/\n/g, '\\n'))
|
console.log(`${getTimeString()} INFO - ${text}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cortex-bot",
|
"name": "cortex-bot",
|
||||||
"version": "0.6.3",
|
"version": "0.6.4",
|
||||||
"description": "vk delirium generator bot",
|
"description": "vk delirium generator bot",
|
||||||
"main": "core/core.js",
|
"main": "core/core.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -14,7 +14,9 @@
|
|||||||
"keywords": [
|
"keywords": [
|
||||||
"vk",
|
"vk",
|
||||||
"bot",
|
"bot",
|
||||||
"markov"
|
"markov",
|
||||||
|
"delirium",
|
||||||
|
"generator"
|
||||||
],
|
],
|
||||||
"author": "hepller",
|
"author": "hepller",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
Reference in New Issue
Block a user