const TelegramBot = require("node-telegram-bot-api") const { getModules, addModule, findModules } = require("../lib/module-store") const { isAdmin } = require("../lib/auth") const token = "123456"// <-- ЗАМЕНИТЕ ЭТО! if (token === "123456" || !token) { console.error("Пожалуйста, замените '123456' на реальный токен вашего бота в scripts/bot.js.") process.exit(1) } const bot = new TelegramBot(token, { polling: true }) console.log("Telegram bot started...") bot.onText(/\/start/, (msg) => { const chatId = msg.chat.id bot.sendMessage( chatId, "Привет! Я бот для управления модулями Exteragram. Используйте /search для поиска модулей или /admin для доступа к админ-панели (если вы администратор).", ) }) bot.onText(/\/admin/, (msg) => { const chatId = msg.chat.id if (isAdmin(msg.from.id)) { bot.sendMessage( chatId, "Добро пожаловать в админ-панель! Отправьте мне файл модуля, чтобы добавить его. Вы также можете переслать мне сообщение с файлом из другого канала.", ) } else { bot.sendMessage(chatId, "У вас нет прав администратора.") } }) bot.onText(/\/search/, (msg) => { const chatId = msg.chat.id bot.sendMessage(chatId, "Введите название модуля для поиска:") }) bot.on("message", async (msg) => { const chatId = msg.chat.id const text = msg.text if (text && !text.startsWith("/") && !msg.document && !msg.forward_from_chat) { const searchResults = findModules(text) if (searchResults.length > 0) { const inlineKeyboard = searchResults.map((module) => [ { text: module.name, callback_data: `send_module_${module.id}` }, ]) bot.sendMessage(chatId, "Найденные модули:", { reply_markup: { inline_keyboard: inlineKeyboard, }, }) } else { bot.sendMessage(chatId, "Модули по вашему запросу не найдены.") } } }) bot.on("document", async (msg) => { const chatId = msg.chat.id const document = msg.document if (isAdmin(msg.from.id)) { const moduleName = document.file_name.replace(/\.exteragram_module$/, "") const fileId = document.file_id const sourceChannel = msg.forward_from_chat ? msg.forward_from_chat.title : "Direct Upload" addModule({ name: moduleName, file_id: fileId, source_channel: sourceChannel }) bot.sendMessage(chatId, `Модуль "${moduleName}" успешно добавлен!`) } else { bot.sendMessage(chatId, "У вас нет прав для загрузки модулей.") } }) bot.on("forward", async (msg) => { const chatId = msg.chat.id if (isAdmin(msg.from.id) && msg.document) { const document = msg.document const moduleName = document.file_name.replace(/\.exteragram_module$/, "") const fileId = document.file_id const sourceChannel = msg.forward_from_chat ? msg.forward_from_chat.title : "Unknown Channel" addModule({ name: moduleName, file_id: fileId, source_channel: sourceChannel }) bot.sendMessage(chatId, `Модуль "${moduleName}" из канала "${sourceChannel}" успешно добавлен!`) } else if (isAdmin(msg.from.id) && !msg.document) { bot.sendMessage(chatId, "Пересланное сообщение не содержит документа.") } }) bot.on("inline_query", async (inlineQuery) => { const query = inlineQuery.query const searchResults = findModules(query) const results = searchResults.map((module) => ({ type: "document", id: module.id, title: module.name, document_file_id: module.file_id, caption: `Модуль: ${module.name}\nИсточник: ${module.source_channel}`, })) bot.answerInlineQuery(inlineQuery.id, results, { cache_time: 0 }) }) bot.on("callback_query", async (callbackQuery) => { const message = callbackQuery.message const data = callbackQuery.data const chatId = message.chat.id if (data.startsWith("send_module_")) { const moduleId = data.replace("send_module_", "") const modules = getModules() const moduleToSend = modules.find((m) => m.id === moduleId) if (moduleToSend) { bot.sendDocument(chatId, moduleToSend.file_id, { caption: `Вот ваш модуль: ${moduleToSend.name}\nИсточник: ${moduleToSend.source_channel}`, }) bot.answerCallbackQuery(callbackQuery.id, { text: "Модуль отправлен!" }) } else { bot.answerCallbackQuery(callbackQuery.id, { text: "Модуль не найден.", show_alert: true }) } } }) bot.on("polling_error", (error) => { console.error("Polling error:", error) })