feat: добавить модуль вывода справочной информации и интегрировать его в бота
- Вынесен текст справки и функция отправки справочного сообщения в отдельный модуль infoSender.js - При старте бота в личных сообщениях автоматически отправляется справка - Добавлена проверка на групповой чат для команды /summy и общего обработчика сообщений - В коде бота закомментирована устаревшая функция sendHelp с примером старой справки - Обновлен формат отправки справки с Markdown на более структурированный и информативный текст
This commit is contained in:
parent
9f32e97eca
commit
f8b98de8b0
59
bot.js
59
bot.js
@ -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
67
infoSender.js
Normal 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
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user