Создание бота для парсинга конкурсов в Telegram
Traffic Cardinal Traffic Cardinal  написал 06.11.2024

Создание бота для парсинга конкурсов в Telegram

Traffic Cardinal Traffic Cardinal  написал 06.11.2024
6 мин
0
1733
Содержание

Вы наверняка много раз слышали от коллег по цеху, что они что-то выиграли в очередном конкурсе. А может, даже выигрывали сами. Получить iPhone или другой приз за подписку всегда приятно.

banner banner

Тем более что в арбитраже 99% таких розыгрышей — настоящие. Да и проводят их довольно часто, если оценивать температуру в среднем по больнице, так сказать. Но не мониторить же теперь ради этого все каналы 24/7?

Конечно, нет — куда проще поручить парсинг таких постов боту. О том, как его создать, мы и расскажем сегодня. Спойлер: ближе к концу статьи мы дадим наводку на конкурс, в котором можно выиграть iPhone 16 Pro Max.

Какие задачи решает бот для парсинга конкурсов

Данный бот может быть использован для:

  • частичной автоматизации участия в конкурсах;

  • поиска по ключевым словам;

  • мгновенного получения инфы по интересующим темам.

Кстати, два последних пункта — это фича. Изначально бот задуман именно как парсер конкурсов, но какая разница, что парсить?

Принцип работы бота для парсинга конкурсов

Алгоритмически парсер реализован по следующему принципу:

  1. Бот «прослушивает эфир» и реагирует на новые посты.
  2. После получения от Телеги информации о новом посте считывает файлы words.txt и button.txt.
  3. Если 2-я строка в файле YES — использует его, если NO — не использует.
  4. Если в содержимом поста есть фразы, совпадающие с фразами в файлах, — бот делает репост в избранное.

Как видите, ничего сложного.

* Для отсечения возможного мусора советуем после запуска отключить файл words.txt, заменив YES на NO. В этом случае бот будет искать только совпадения в кнопках, игнорируя содержимое постов.

Пошаговая инструкция, как создать бота для парсинга конкурсов в Telegram

С точки зрения программной реализации бот для парсинга конкурсов не является классическим Telegram-ботом. Это скорее юзер-бот, автоматизирующий взаимодействие с Телегой. Поэтому для его работы требуется доступ к юзер-api, через получение api_id и api_hash.

Чтобы это сделать, нужно:

  1. Открыть страницу разработчиков в веб-версии.
  2. Найти раздел в «API development tools» и заполнить соответствующие поля.
  3. Скопировать выданные Телегой api_id и api_hash.
    Следующий шаг — настройка сервера, где будет обрабатываться код бота. Настраиваем сервер. Если своего Python-сервера у вас нет, есть бесплатное решение по этой ссылке. Если сервер уже готов, для настройки следуйте инструкции ниже.
  4. Открываем консоль и вводим:
    pip install asyncio
    pip install telethon
    pip install os

  5. Создаем текстовый файл и сохраняем как bot.py вставляем в него:
    import os
    from telethon import TelegramClient, events
    import re
    api_id = 'api_id сюда'
    api_hash = 'api_hash сюда'
    phone_number = 'ваш номер'
    favorite_chat_id = 'me'
    service_line = "#Используй YES во второй строке, чтобы включить поиск, NO чтобы выключить. Каждую фразу пишите с новой строки."
    valid_switches = ['YES', 'NO']
    def load_keywords(filename, default_word):
    if not os.path.exists(filename):
    with open(filename, 'w') as f:
    f.write(service_line + '\nYES\n' + default_word + '\n')
    with open(filename, 'r') as f:
    lines = [line.strip() for line in f.readlines()]
    if len(lines) == 0 or lines[0] != service_line:
    lines.insert(0, service_line)
    if len(lines) < 2 or lines[1] not in valid_switches:
    lines.insert(1, 'YES')
    with open(filename, 'w') as f:
    f.write('\n'.join(lines) + '\n')
    search_flag = lines[1] == 'YES'
    keywords = [line.lower() for line in lines[2:]]
    return search_flag, keywords
    client = TelegramClient(phone_number, api_id, api_hash)
    def get_button_text(reply_markup):
    buttons_text = []
    if reply_markup:
    for row in reply_markup.rows:
    for button in row.buttons:
    buttons_text.append(button.text)
    return buttons_text
    def has_keyword(text, keywords):
    text_cleaned = re.sub(r'[^\w\s]', '', text.lower())
    return any(keyword in text_cleaned for keyword in keywords)
    @client.on(events.NewMessage)
    async def handler(event):
    search_in_message, message_keywords = load_keywords('words.txt', 'конкурс')
    search_in_button, button_keywords = load_keywords('button.txt', 'участвую')
    message_text = event.raw_text
    buttons_text = get_button_text(event.message.reply_markup)
    message_has_keyword = False
    button_has_keyword = False
    if search_in_message and has_keyword(message_text, message_keywords):
    print(f"Сообщение с ключевыми словами найдено в тексте сообщения!")
    message_has_keyword = True
    if search_in_button and any(has_keyword(button, button_keywords) for button in buttons_text):
    print(f"Сообщение с ключевыми словами найдено в кнопках!")
    button_has_keyword = True
    if message_has_keyword or button_has_keyword:
    await client.forward_messages(favorite_chat_id, event.message)
    print("Сообщение переслано в избранное!")
    async def main():
    await client.start(phone_number)
    print("Бот запущен и ждет сообщений...")
    await client.run_until_disconnected()
    with client:
    client.loop.run_until_complete(main())
  6. Заменяем api_id сюда, api_hash сюда и ваш номер своими значениями.
  7. Сохраняем бот.
  8. Запускаем его.
  9. Видим, что в корневой папке появились файлы words.txt и button.txt — вносим в них слова, которые будут использоваться для поиска. Каждое слово с новой строки. С помощью YES/NO переключаем использование файла.
    Файл button.txt отвечает за поиск по содержимому кнопок, words.txt — за поиск по содержимому самих постов.
    Файл button.txt отвечает за поиск по содержимому кнопок, words.txt — за поиск по содержимому самих постов.
  10. Проверяем работу.

Демонстрация работы

Стартовые настройки на момент начала тестов
Стартовые настройки на момент начала тестов

Для проверки работоспособности написали соответствующие посты в тестовых каналах — все работает. Отключаем поиск по содержимому, чтобы не копаться в мусоре
Для проверки работоспособности написали соответствующие посты в тестовых каналах — все работает. Отключаем поиск по содержимому, чтобы не копаться в мусоре

За 5 минут работы бот подхватил 3 конкурса — 2 арбитражных и один не связанный с трафиком. В целом, учитывая, что для тестов использовалось всего 4 варианта текста на кнопке, неплохо. Но советуем выписывать все варианты, которые заметите, — у каждого канала своя стилистика.

P. S. А еще в процессе тестов автор заметил конкурс от Traffic Caridnal и BROCONF (крайний правый скриншот). Не забудьте залететь в него — ведь итоги будут уже совсем скоро. Кстати, говорят, что на Cardinal Conf 2 iPhone 16 Pro Max будут разыгрывать 🤫 — так что обязательно следите за нашим Telergam-каналом, чтобы не пропустить розыгрыш. Тем более что парсер конкурсов у вас уже есть.

ТОП партнерских программ
Год основания: 2014
Leadbit Nutra - опытная партнерская программа с 900+ офферов на ТОПовые ГЕО. Для вебмастеров представлены COD и Trials&SS офферы на любой вкус.

Ключевые особенности:
- эксклюзивные рекламодатели
- огромный выбор офферов по всему миру
- индивидуальные условия для партнеров
- дружелюбные персональные менеджеры
- программа лояльности с ценными призами
  • Вертикали: 1
  • Офферы: 76
  • Минимум: 50 $
Год основания: 2016
Официальная партнерская программа букмекерской конторы MostBet. Программа запущена в 2016 году. За это время несколько тысяч партнеров привели в Mostbet более 15 000 000 игроков со всего мира. Партнерка специализируется на онлайн-казино и беттинге, а выплаты происходят по моделям CPA и RevShare. У продукта Mostbet есть ряд важных преимуществ, которые неизменно привлекают азартных игроков и позволяют достигать высоких Retention Rate и LTV. Например, на сайте можно найти около 1300 слотов и прочих продуктов казино.

Преимущества:
- Досрочные выплаты по запросу;
- Экспертная поддержка менеджеров,
- Высокая конверсия и LTV;
- Уникальные промо-материалы и прелендинги;
- собственный трекер приложения;
- Демо-счет для игроков на любую сумму;
- Персональный промокод для привлечения игроков.
- Минимальная выплата: 50 $
- Периодичность выплат: по запросу
- Реферальная система: 0%
  • Вертикали: 1
  • Офферы: 8
  • Минимум: 50 $
Год основания: 2013
Shakes.pro — крупная партнерская сеть с 2013 года, отбирает самые выгодные nutra-офферы по всему миру (включая in-house). Является частью крупного холдинга. Забудь о бесконечном поиске офферов! Здесь тебе предлагают только то, что уже приносит реальные деньги на все страны.

Основные преимущества

Гарантированный и высокий апрув. Команда сама решит все вопросы с рекламодателями и поделится качественными промо с локализацией.
3 программы лояльности, с которыми ты будешь получать ценные призы за каждый лид.
Ежеквартальные подборки офферов с подробной аналитикой, которые успешнее других по доходам.
  • Вертикали: 1
  • Офферы: 23
  • Минимум: 3000 ₽
Год основания: 2014
Не нашли подходящий оффер? Не беда, подключим под вас

Работать можно со многими источниками трафика. Поможем со всем необходимым для работы. Наша главная цель - обеспечение комфортных и качественных условий работы как для вебмастеров, так и для рекламодателей.

Ключевые особенности:
• Family партнерка. Решим любые боли наших вебмастеров
• Индивидуальные условия работы по любым офферам. Наличие капов
• Выплаты по запросу, без выходных и праздников
• Собственный store с шикарными призами
• Выдаем прилы под iOS/android, готовые крео под залив, аудитории таргетинга
• Максимально подробная статистика, обновляемая в режиме Real-Time
• Саппорт, личный менеджер 24/7
  • Вертикали: 2
  • Офферы: 649
  • Минимум: 50 $
LGaming — это партнерская сеть в вертикали беттинг и гемблинг с более чем 1000 активными офферами от 200 рекламодателей. В партнерке доступен инхаус-продукт BetAndreas. Сеть LGaming создана командой, за плечами которой несколько лет опыта в гемблинг-вертикали CPA-сети Leadbit. Партнерская сеть предлагает проверенные креативы с высоким конвертом и рекомендации по проливу от отдела баинга. Также у компании есть собственный бренд и партнерский сервис по выдаче виртуальных карт.
  • Вертикали: 1
  • Офферы: 1000+
  • Минимум: 100 $
Комментарии
0
Написать комментарий

Здравствуйте! У вас включен блокировщик рекламы, часть сайта не будет работать!