diff --git a/bot.js b/bot.js index 1287255..25f097b 100644 --- a/bot.js +++ b/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 = ` -🤖 Бот сохраняет всю историю чата - -📊 Команды суммаризации: -/summary_day - суммаризация за сутки -/summary_hours N - за последние N часов -/summary_last N - последние N сообщений - -💡 Примеры: -/summary_hours 6 - за последние 6 часов -/summary_last 50 - последние 50 сообщений - -ℹ️ Бот сохраняет все сообщения и создает живые истории на основе переписки. - -🔧 Поддерживаются все типы сообщений: текст, фото, видео, аудио, документы, стикеры и др. - `.trim(); - - await ctx.reply(helpText, { parse_mode: 'HTML' }); - } +// async sendHelp(ctx) { +// const helpText = ` +// 🤖 Бот сохраняет всю историю чата +// +// 📊 Команды суммаризации: +// /summary_day - суммаризация за сутки +// /summary_hours N - за последние N часов +// /summary_last N - последние N сообщений +// +// 💡 Примеры: +// /summary_hours 6 - за последние 6 часов +// /summary_last 50 - последние 50 сообщений +// +// ℹ️ Бот сохраняет все сообщения и создает живые истории на основе переписки. +// +// 🔧 Поддерживаются все типы сообщений: текст, фото, видео, аудио, документы, стикеры и др. +// `.trim(); +// +// await ctx.reply(helpText, { parse_mode: 'HTML' }); +// } } // Запуск бота diff --git a/infoSender.js b/infoSender.js new file mode 100644 index 0000000..cbb51a2 --- /dev/null +++ b/infoSender.js @@ -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} + */ +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 +}; \ No newline at end of file