
Инструмент для автоматического мониторинга и покупки подарков в Telegram на основе пользовательских аккаунтов
written on mtcute
•
telegram channel
•
telegram chat
- Мониторит доступность звездных подарков Telegram каждые 0.5 секунды (настраивается) с помощью метода
getStarGiftOptions - Может автоматически скупать подарки, когда их supply ниже указанного порога пользователю / на канал / в группу
- Поддерживает несколько аккаунтов Telegram, работающих асинхронно
- Один аккаунт проверяет доступность подарков, все аккаунты пытаются купить подарки для своих целевых каналов
- Отправляет уведомления в каналы Telegram о важных событиях (предупреждения, успехи, ошибки)
- Бот-контроллер Telegram, который отправляет уведомления о новых подарков и предоставляет кнопки для покупки со всех аккаунтов.
- Поддержка HTTP Proxy под каждый аккаунт
- Node.js 14.x или выше
- Учетные данные API Telegram (API ID и API Hash)
- Аккаунты Telegram, авторизованные для использования API
- (Опционально) Бот Telegram для уведомлений
-
Клонируйте этот репозиторий:
git clone https://github.com/MaestroOfAutomation/telegram_gifts_userbot.git cd autogiftsnodejs -
Установите зависимости:
npm install -
Скопируйте пример конфигурационного файла, чтобы создать свою конфигурацию:
cp example.config.json config.json -
Отредактируйте файл
config.jsonи добавьте учетные данные вашего аккаунта Telegram и конфигурацию.
Приложение настраивается с помощью JSON-файла (config.json) в корневом каталоге проекта. Пример конфигурационного файла (example.config.json) предоставляется в качестве шаблона с заполнителями. Фактический файл config.json включен в .gitignore, чтобы предотвратить передачу конфиденциальной информации в репозиторий.
maxGiftSupply: Скрипт будет покупать только те подарки, у которых общее количество меньше либо равно этому порогуcheckIntervalMs: Интервал проверки доступности подарков (в миллисекундах)telegramAccounts: Массив объектов аккаунтов Telegram, каждый из которых содержит:phoneNumber: Номер телефона аккаунта TelegramtargetPeerId: 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 о важных событиях:
- Предупреждающие уведомления: Отправляются при запуске, остановке приложения или обнаружении новых подарков
- Уведомления об успехе: Отправляются при успешной покупке подарка
- Уведомления об ошибках: Отправляются при возникновении ошибок во время покупки подарка или других операций
Чтобы включить уведомления журнала:
- Создайте бота Telegram с помощью @BotFather и получите токен бота
- Добавьте бота в каналы, где вы хотите получать уведомления
- Получите ID каналов для каждого типа уведомлений
- Настройте параметры уведомлений в файле
config.json(notifications.botToken и notifications.channelIds)
Приложение также включает бот-контроллер Telegram, который:
- Отправляет стикеры для новых подарков в указанный канал
- Предоставляет подробную информацию о каждом подарке (ID, название, стоимость в звездах, доступность)
- Включает встроенные кнопки для покупки разного количества подарков (10, 25, 50, 100 или все)
Чтобы включить бот-контроллер:
- Создайте отдельного бота Telegram с помощью @BotFather и получите токен бота
- Добавьте бота в канал, где вы хотите получать стикеры подарков и информацию
- Убедитесь, что у бота есть разрешение на отправку сообщений и стикеров в канале
- Настройте параметры контроллера в файле
config.json(controller.botToken и controller.channelId)
index.js: Основная точка входа приложенияsrc/clientManager.js: Управляет соединениями клиентов Telegramconfig.js: Загружает и проверяет конфигурацию из JSON-файла конфигурацииgiftService.js: Обрабатывает мониторинг и покупку подарковlogger.js: Предоставляет функциональность ведения журналаtelegramNotifier.js: Отправляет уведомления в каналы TelegramtelegramController.js: Бот Telegram, который отправляет стикеры и предоставляет кнопки покупки
- Ограничение скорости: Если вы установите
CHECK_INTERVAL_MSслишком низким (< 100 мс), вы можете столкнуться с проблемами ограничения скорости с API Telegram. - Сбои аутентификации: Убедитесь, что ваши API ID и API Hash для каждого аккаунта правильные в файле
config.json. Если у вас возникают проблемы с кодами подтверждения, попробуйте удалить файлы сессий в каталогеsessionsи пройти аутентификацию снова. - Сбои покупки подарков: Некоторые подарки могут иметь ограничения (например, требовать Premium), которые препятствуют покупке.
Приложение записывает информацию в консоль. Для более подробного устранения неполадок включите уведомления, чтобы получать сообщения об ошибках в ваших каналах Telegram.
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять Pull Request.
