This commit is contained in:
Hepller
2021-05-28 02:12:58 +03:00
parent ab4090ef4e
commit ef8de0f0f5
4 changed files with 31 additions and 30 deletions

View File

@@ -7,30 +7,25 @@ vk_api:
# Токен # Токен
token: TOKEN token: TOKEN
# Отправка сообщений # Основное
messages: general:
# Шанс генерации # Шанс генерации сообщения
chance: 20 chance: 20
# Минимальное кол-во слов в тексте
min_words: 5
# Максимальное кол-во символов в тексте # Максимальное кол-во символов в тексте
symbols_limit: 250 max_symbols: 250
# ID бесед, в которых бот активен # ID бесед, в которых бот активен
active_chats: all active_chats: all
# Форматирование текста
format:
# Строчные буквы
to_lower_case: true
# Заглавная буква в начале
capitalize_word: true
# Точка в конце
end_dot: true
# Генерация текста
generation:
# Минимальное кол-во слов в генерируемом тексте
min_words: 5
# Настройки БД
database:
# Сохранение сообщений пользователей # Сохранение сообщений пользователей
# * Одинаковые строки не сохраняются # * Одинаковые строки не сохраняются
data_save: true data_save: true
# Формат текста
format:
# Строчные буквы
to_lower_case: true
# Заглавная буква в начале
capitalize_word: true
# Точка в конце
end_dot: true

View File

@@ -82,7 +82,7 @@ vk.updates.on('message_new', async ctx => {
// Игнорирование лишних сообщений // Игнорирование лишних сообщений
if (!ctx.isChat) return if (!ctx.isChat) return
if (config.messages.active_chats != 'all' && !config.messages.active_chats.includes(ctx.chatId)) return if (config.general.active_chats != 'all' && !config.general.active_chats.includes(ctx.chatId)) return
// Логирование сообщений // Логирование сообщений
Logger.info(`#${ctx.chatId} ${ctx.senderId} ${ctx.isOutbox ? '<-' : '->'} ${ctx?.text ? ctx.text : '<no_text>'} ${ctx?.attachments}`) Logger.info(`#${ctx.chatId} ${ctx.senderId} ${ctx.isOutbox ? '<-' : '->'} ${ctx?.text ? ctx.text : '<no_text>'} ${ctx?.attachments}`)
@@ -94,7 +94,7 @@ vk.updates.on('message_new', async ctx => {
ctx.chat = await db.getChat(ctx.chatId) ctx.chat = await db.getChat(ctx.chatId)
// Запись сообщения в БД // Запись сообщения в БД
if (ctx.text && config.database.data_save && !ctx.chat.data.includes(ctx.text)) { if (ctx.text && config.general.data_save && !ctx.chat.data.includes(ctx.text)) {
// Запись в БД // Запись в БД
db.chats.find(chat => chat.id == ctx.chatId).data.push(ctx.text) db.chats.find(chat => chat.id == ctx.chatId).data.push(ctx.text)
@@ -104,22 +104,22 @@ vk.updates.on('message_new', async ctx => {
} }
// Генерация сообщения с определенным шансом // Генерация сообщения с определенным шансом
if (Math.random() * 100 < config.messages.chance) { if (Math.random() * 100 < config.general.chance) {
// Сообщение в консоль о генерации текста // Сообщение в консоль о генерации текста
Logger.info('Генерация текста ...') Logger.info('Генерация текста ...')
// Генерация текста // Генерация текста
// Если данных будет недостаточно произойдет ошибка <<Maximum call stack size exceeded>> // Если данных будет недостаточно произойдет ошибка <<Maximum call stack size exceeded>>
let sentence = new Markov(ctx.chat.data, config.generation.min_words).makeChain() let sentence = new Markov(ctx.chat.data, config.general.min_words).makeChain()
// Форматирование текста // Форматирование текста
if (config.messages.format.to_lower_case) sentence = sentence.toLowerCase() if (config.format.to_lower_case) sentence = sentence.toLowerCase()
if (config.messages.format.capitalize_word) sentence = sentence.charAt(0).toUpperCase() + sentence.slice(1) if (config.format.capitalize_word) sentence = sentence.charAt(0).toUpperCase() + sentence.slice(1)
if (config.messages.format.end_dot) sentence = sentence + '.' if (config.format.end_dot) sentence = sentence + '.'
// Предупреждение при превышении лимита символов // Предупреждение при превышении лимита символов
if (sentence.split('').length > config.messages.max_symbols) return Logger.warn(`#${ctx.chatId} Превышен лимит символов (${sentence.split('').length}/${config.messages.symbols_limit})`) if (sentence.split('').length > config.general.max_symbols) return Logger.warn(`#${ctx.chatId} Превышен лимит символов (${sentence.split('').length}/${config.general.max_symbols})`)
// Статус набора текста // Статус набора текста
await ctx.setActivity() await ctx.setActivity()

View File

@@ -1,6 +1,6 @@
{ {
"name": "cortex-bot", "name": "cortex-bot",
"version": "0.6.4", "version": "0.6.5",
"description": "vk delirium generator bot", "description": "vk delirium generator bot",
"main": "core/core.js", "main": "core/core.js",
"type": "module", "type": "module",

View File

@@ -4,6 +4,12 @@
--- ---
## Важная информация
При недостатке данных для генерации может возникать ошибка `Maximum call stack size exceeded`
---
## Лицензия ## Лицензия
Проект распространяется под лицензией **MIT** Проект распространяется под лицензией **MIT**