Telegram-бот для анализа криптовалют: мониторинг и резюме

Этот проект описывает создание Telegram-бота, анализирующего информацию о криптовалютах из публичных каналов. Бот предоставляет краткое резюме рыночной ситуации, упрощая мониторинг большого потока сообщений.

Функциональность

Бот взаимодействует через интерфейс Telegram. Пользователь отправляет команду, например: /sum @waleAlertIO "просуммировать общую динамику". Бот анализирует указанный канал (@waleAlertIO в примере), обрабатывает сообщения и выдает краткий отчет о ситуации на крипторынке. Например, он может сообщить о крупных транзакциях эфириума или биткоина. Другой пример команды: /sum @ваш_канал "о чём пишет автор данных постов". В этом случае бот анализирует посты указанного канала и суммирует темы, о которых пишет автор.

Реализация

Проект написан на платформе Node.js и состоит из нескольких файлов. Используются библиотеки Telegram для взаимодействия с Telegram и GigaChat от Сбера для обработки естественного языка. Фреймворк Telegraf обеспечивает функциональность Telegram-бота.

Авторизация в Telegram

Для авторизации используется библиотека Telegram. Необходимо создать приложение в Telegram (my.telegram.org, API Development Tools), получить API ID и API hash, затем авторизоваться, используя номер телефона и пароль. Процесс авторизации генерирует Client Session Save — строку, которая сохраняется в конфигурационном файле (config.js) для последующего использования. Рекомендуется использовать отдельный аккаунт для безопасности.

Обработка команд и получение данных

Функция run() запускает бота и обрабатывает команду /sum. Она извлекает из команды Channel ID и остальной текст, определяющий задачу для анализа (например, «просуммировать общую динамику»). Функция получает список сообщений из указанного канала (с ограничением по количеству, по умолчанию 10), преобразует их в строку и передает в языковую модель.

Работа с GigaChat

Для работы с GigaChat необходимо получить Client ID и Client Secret, зашифровать их в Base64 и использовать для авторизации. Функция отправляет запрос к GigaChat API, используя полученный токен. В запросе указывается модель, системное сообщение (контекст) и сообщения из Telegram-канала. Ответ от GigaChat обрабатывается и отправляется пользователю.

Мониторинг новых сообщений

Метод watchNewMess() отслеживает появление новых сообщений в канале. Он использует event handler для подписки на события новых сообщений, обеспечивая обработку в режиме реального времени. Этот обработчик необходимо добавить до подключения к Telegram-клиенту.

Развертывание

Для постоянной работы бота рекомендуется развертывание на облачном сервере (например, Selectel). Процесс включает: размещение проекта на GitHub, создание виртуального сервера (рекомендуется shed конфигурация для экономии ресурсов), установку git, Node.js (с помощью nvm), npm и pm2, запуск бота в фоновом режиме с помощью pm2 start main.js.

Созданный бот — удобный инструмент для автоматического анализа данных из Telegram-каналов, позволяющий отслеживать динамику рынка криптовалют и получать краткие обзоры. Использование облачного сервера обеспечивает непрерывную работу. Проект может быть расширен путем добавления новых функций и улучшения анализа данных.

Что будем искать? Например,программа