Skip to content

MaestroOfAutomation/telegram_gifts_userbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

Инструмент для автоматического мониторинга и покупки подарков в Telegram на основе пользовательских аккаунтов
written on mtcute  •  telegram channel  •  telegram chat

Возможности

  • Мониторит доступность звездных подарков Telegram каждые 0.5 секунды (настраивается) с помощью метода getStarGiftOptions
  • Может автоматически скупать подарки, когда их supply ниже указанного порога пользователю / на канал / в группу
  • Поддерживает несколько аккаунтов Telegram, работающих асинхронно
  • Один аккаунт проверяет доступность подарков, все аккаунты пытаются купить подарки для своих целевых каналов
  • Отправляет уведомления в каналы Telegram о важных событиях (предупреждения, успехи, ошибки)
  • Бот-контроллер Telegram, который отправляет уведомления о новых подарков и предоставляет кнопки для покупки со всех аккаунтов.
  • Поддержка HTTP Proxy под каждый аккаунт

Controller bot screenshot

Требования

  • Node.js 14.x или выше
  • Учетные данные API Telegram (API ID и API Hash)
  • Аккаунты Telegram, авторизованные для использования API
  • (Опционально) Бот Telegram для уведомлений

Установка

  1. Клонируйте этот репозиторий:

    git clone https://github.com/MaestroOfAutomation/telegram_gifts_userbot.git
    cd autogiftsnodejs
    
  2. Установите зависимости:

    npm install
    
  3. Скопируйте пример конфигурационного файла, чтобы создать свою конфигурацию:

    cp example.config.json config.json
    
  4. Отредактируйте файл config.json и добавьте учетные данные вашего аккаунта Telegram и конфигурацию.

Конфигурация

Приложение настраивается с помощью JSON-файла (config.json) в корневом каталоге проекта. Пример конфигурационного файла (example.config.json) предоставляется в качестве шаблона с заполнителями. Фактический файл config.json включен в .gitignore, чтобы предотвратить передачу конфиденциальной информации в репозиторий.

Обязательная конфигурация

  • maxGiftSupply: Скрипт будет покупать только те подарки, у которых общее количество меньше либо равно этому порогу
  • checkIntervalMs: Интервал проверки доступности подарков (в миллисекундах)
  • telegramAccounts: Массив объектов аккаунтов Telegram, каждый из которых содержит:
    • phoneNumber: Номер телефона аккаунта Telegram
    • targetPeerId: ID получателя, куда будут отправляться подарки - канал / группа. Пользователь должен в ней состоять.
    • manualPeerId (опционально): ID получателя, куда будут ВРУЧНУЮ (через Telegram Controller) отправляться подарки - канал / группа. Пользователь должен в ней состоять.
    • apiId: ID API Telegram для этого аккаунта (https://my.telegram.org/apps)
    • apiHash: Хеш API Telegram для этого аккаунта (https://my.telegram.org/apps)
    • proxy (опционально): HTTP-прокси в формате "IP:PORT:USERNAME:PASSWORD" (например, "123.123.123.123:1234:dddtehni:adddkDDDDzzz")

Опциональная конфигурация

  • autoBuyEnabled: Включает или отключает автоматическую покупку подарков (по умолчанию: true). Если установлено значение false, система будет только отправлять уведомления о новых подарках без их покупки.
  • maxGiftsToBuy: Максимальное количество подарков для покупки на один клиентский аккаунт (по умолчанию: 1)
  • testGiftId: Если указано, этот ID подарка будет включен в фильтр, даже если он уже есть в кеше (установите null для отключения). Используйте 6014697240977737490 для теста (это подарок с запасом 12 000, который распродан). Используйте только строку, а не целочисленный тип!!!
  • notifications: Объект настроек уведомлений:
    • botToken: Токен бота Telegram для отправки уведомлений
    • channelIds: Объект, содержащий ID каналов для разных типов уведомлений:
      • WARNING: ID канала для предупреждающих уведомлений
      • SUCCESS: ID канала для уведомлений об успехе
      • ERROR: ID канала для уведомлений об ошибках
  • controller: Объект настроек бота-контроллера:
    • botToken: Токен бота Telegram для бота-контроллера, который отправляет стикеры и предоставляет кнопки покупки
    • channelId: ID канала, куда бот-контроллер будет отправлять стикеры и информацию о подарках
    • publicChannelId: ID публичного канала для уведомлений о новых подарках

Пример:

{
  "maxGiftSupply": 10000,
  "checkIntervalMs": 500,
  "maxGiftsToBuy": 30,
  "autoBuyEnabled": true,
  "telegramAccounts": [
    {
      "phoneNumber": "+1234567890",
      "targetPeerId": "-100123123123",
      "apiId": 12345,
      "apiHash": "abcdef1234567890abcdef1234567890",
      "proxy": "123.123.123.123:1234:dddtehni:adddkDDDDzzz"
    },
    {
      "phoneNumber": "+0987654321",
      "targetPeerId": "-100456456456",
      "apiId": 67890,
      "apiHash": "fedcba0987654321fedcba0987654321"
    }
  ],
  "testGiftId": "6014697240977737490",
  "notifications": {
    "botToken": "1231231231:AAFj1jijasdfisjdfisjdifjsd",
    "channelIds": {
      "WARNING": "-4116110111",
      "SUCCESS": "-4111103118",
      "ERROR": "-4116119115"
    }
  },
  "controller": {
    "botToken": "1231231231:AAFj1jijasdfisjdfisjdifjsd",
    "channelId": "-4116110111",
    "publicChannelId": "-4116110112"
  }
}

Использование

Запустите приложение:

npm start

Для остановки приложения нажмите Ctrl+C. Чтобы остановить приложение, нажмите Ctrl+C.

Аутентификация

При первом запуске приложения вам будет предложено ввести коды подтверждения для каждого аккаунта Telegram. Эти коды будут отправлены на ваши аккаунты Telegram. После успешной аутентификации данные сессии будут сохранены в каталоге sessions, поэтому вам не нужно будет проходить аутентификацию снова, если данные сессии не будут удалены.

Уведомления

Уведомления журнала

Приложение может отправлять уведомления в каналы Telegram о важных событиях:

  • Предупреждающие уведомления: Отправляются при запуске, остановке приложения или обнаружении новых подарков
  • Уведомления об успехе: Отправляются при успешной покупке подарка
  • Уведомления об ошибках: Отправляются при возникновении ошибок во время покупки подарка или других операций

Чтобы включить уведомления журнала:

  1. Создайте бота Telegram с помощью @BotFather и получите токен бота
  2. Добавьте бота в каналы, где вы хотите получать уведомления
  3. Получите ID каналов для каждого типа уведомлений
  4. Настройте параметры уведомлений в файле config.json (notifications.botToken и notifications.channelIds)

Бот-контроллер

Приложение также включает бот-контроллер Telegram, который:

  • Отправляет стикеры для новых подарков в указанный канал
  • Предоставляет подробную информацию о каждом подарке (ID, название, стоимость в звездах, доступность)
  • Включает встроенные кнопки для покупки разного количества подарков (10, 25, 50, 100 или все)

Чтобы включить бот-контроллер:

  1. Создайте отдельного бота Telegram с помощью @BotFather и получите токен бота
  2. Добавьте бота в канал, где вы хотите получать стикеры подарков и информацию
  3. Убедитесь, что у бота есть разрешение на отправку сообщений и стикеров в канале
  4. Настройте параметры контроллера в файле config.json (controller.botToken и controller.channelId)

Структура проекта

  • index.js: Основная точка входа приложения
  • src/
    • clientManager.js: Управляет соединениями клиентов Telegram
    • config.js: Загружает и проверяет конфигурацию из JSON-файла конфигурации
    • giftService.js: Обрабатывает мониторинг и покупку подарков
    • logger.js: Предоставляет функциональность ведения журнала
    • telegramNotifier.js: Отправляет уведомления в каналы Telegram
    • telegramController.js: Бот Telegram, который отправляет стикеры и предоставляет кнопки покупки

Устранение неполадок

Распространенные проблемы

  • Ограничение скорости: Если вы установите CHECK_INTERVAL_MS слишком низким (< 100 мс), вы можете столкнуться с проблемами ограничения скорости с API Telegram.
  • Сбои аутентификации: Убедитесь, что ваши API ID и API Hash для каждого аккаунта правильные в файле config.json. Если у вас возникают проблемы с кодами подтверждения, попробуйте удалить файлы сессий в каталоге sessions и пройти аутентификацию снова.
  • Сбои покупки подарков: Некоторые подарки могут иметь ограничения (например, требовать Premium), которые препятствуют покупке.

Журналы

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

Вклад в проект

Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять Pull Request.

About

A Telegram userbot that automatically purchases new gifts based on specified criteria.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published