feat: добавить модуль вывода справочной информации и интегрировать его в бота

- Вынесен текст справки и функция отправки справочного сообщения в отдельный модуль infoSender.js
- При старте бота в личных сообщениях автоматически отправляется справка
- Добавлена проверка на групповой чат для команды /summy и общего обработчика сообщений
- В коде бота закомментирована устаревшая функция sendHelp с примером старой справки
- Обновлен формат отправки справки с Markdown на более структурированный и информативный текст
This commit is contained in:
Vufer 2025-06-30 21:16:43 +03:00
parent 9f32e97eca
commit f8b98de8b0
2 changed files with 106 additions and 20 deletions

59
bot.js
View File

@ -7,6 +7,7 @@ const logger = require('./logger.js');
const callAI = require("./requestAI");
const {searchInPrompts, saveInPrompts} = require("./promptResponser");
const INSTRUCTIONS = require("./promptGen");
const {sendHelp} = require("./infoSender");
require('dotenv').config();
const char = {name:'marina'}
class TelegramHistoryBot {
@ -71,11 +72,26 @@ class TelegramHistoryBot {
}
setupHandlers() {
const isGroupChat = (ctx) => {
return ctx.chat.type === 'group' || ctx.chat.type === 'supergroup';
};
this.bot.start(async (ctx) => {
if (isGroupChat(ctx)) {
return; // Игнорируем в группах
}
await sendHelp(ctx);
});
this.bot.command('summy', async (ctx) => {
if (!(await this.isAdmin(ctx))) {
await ctx.deleteMessage()
return
}
if (!isGroupChat(ctx)) {
await ctx.reply('❗ Эта команда работает только в группах');
return;
}
const message = ctx.message.text || '';
await ctx.deleteMessage();
const args = message.replace(/^\/summy(@\w+)?\s*/, ''); // удаляет /summy и возможный @botname
@ -156,6 +172,9 @@ class TelegramHistoryBot {
// Общий обработчик сообщений (исключая команды)
this.bot.on('message', async (ctx) => {
// Пропускаем все команды
if (!isGroupChat(ctx)) {
return;
}
if (ctx.message.text && ctx.message.text.startsWith('/')) {
return;
}
@ -513,26 +532,26 @@ ${conversationFlow}`;
return summary;
}
async sendHelp(ctx) {
const helpText = `
🤖 <b>Бот сохраняет всю историю чата</b>
📊 <b>Команды суммаризации:</b>
/summary_day - суммаризация за сутки
/summary_hours N - за последние N часов
/summary_last N - последние N сообщений
💡 <b>Примеры:</b>
/summary_hours 6 - за последние 6 часов
/summary_last 50 - последние 50 сообщений
Бот сохраняет все сообщения и создает живые истории на основе переписки.
🔧 Поддерживаются все типы сообщений: текст, фото, видео, аудио, документы, стикеры и др.
`.trim();
await ctx.reply(helpText, { parse_mode: 'HTML' });
}
// async sendHelp(ctx) {
// const helpText = `
// 🤖 <b>Бот сохраняет всю историю чата</b>
//
// 📊 <b>Команды суммаризации:</b>
// /summary_day - суммаризация за сутки
// /summary_hours N - за последние N часов
// /summary_last N - последние N сообщений
//
// 💡 <b>Примеры:</b>
// /summary_hours 6 - за последние 6 часов
// /summary_last 50 - последние 50 сообщений
//
// Бот сохраняет все сообщения и создает живые истории на основе переписки.
//
// 🔧 Поддерживаются все типы сообщений: текст, фото, видео, аудио, документы, стикеры и др.
// `.trim();
//
// await ctx.reply(helpText, { parse_mode: 'HTML' });
// }
}
// Запуск бота

67
infoSender.js Normal file
View File

@ -0,0 +1,67 @@
/**
* Модуль для отправки справочной информации
*/
const helpText = `
🚀 **САММАРИ БОТ** - *Ваш умный помощник для переписок!*
*Полностью бесплатный сервис от [Rockzo.ru](https://rockzo.ru)*
🎭 **Магия персонажей в действии!**
Превратите скучную переписку в увлекательный анализ через призму любимых персонажей!
🔥 **Главная команда:**
\`/summy [ваш запрос]\` - создайте уникальную суммаризацию!
💡 **Примеры использования:**
\`/summy Проанализируй последние 50 сообщений как Шерлок Холмс\`
\`/summy Виталий Бианки, за последние сутки\`
\`/summy Расскажи как Стив Джобс о наших идеях за 3 часа\`
\`/summy Оцени дискуссию глазами психолога, 100 сообщений\`
🎨 **Не бойтесь экспериментировать!**
Пробуйте разных персонажей: от классиков до современных героев
Задавайте необычные ракурсы анализа
Выбирайте ЛИБО количество сообщений, ЛИБО временной период
Придумывайте креативные подходы к анализу!
**Важная информация:**
🏢 Работает только в группах и каналах
👑 Требуются права администратора для использования
💬 В личке доступна только эта справка
🆓 **Абсолютно бесплатно навсегда!**
📊 Указывайте либо количество сообщений, либо временной период (не комбинируйте!)
🌟 *Превратите каждую переписку в произведение искусства!*
---
💻 Разработано с командой **[Rockzo.ru](https://rockzo.ru)**
`;
/**
* Отправляет справочное сообщение пользователю
* @param {Object} ctx - Контекст Telegraf
* @returns {Promise<void>}
*/
async function sendHelp(ctx) {
try {
await ctx.reply(helpText, { parse_mode: 'Markdown' });
} catch (error) {
// Если Markdown не работает, отправляем обычный текст
const plainText = helpText.replace(/[`*_]/g, '');
await ctx.reply(plainText);
}
}
/**
* Получить текст справки (без отправки)
* @returns {string} Текст справки
*/
function getHelpText() {
return helpText;
}
module.exports = {
sendHelp,
getHelpText
};