Самая распространенная задача на фрилансе и в то же время очень полезная — это скрипт для мониторинга ключевых слов из любого количества чатов или групп. Скрипт, который не только ищет ключевые слова в новых сообщениях, но еще и уведомляет ваш профиль в Телеграме и ставит реакцию на это сообщение.
from pyrogram import Client, filters import asyncio # Укажите свои API ID и API Hash для подключения к Telegram API api_id = 1111 api_hash = "" # Создание клиента Pyrogram для взаимодействия с Telegram app = Client("my_session", api_id=api_id, api_hash=api_hash) # Список чатов, в которых будет производиться поиск сообщений chats = ['group1', 'group2', 'group3'] # Список ключевых слов для поиска в сообщениях words = ['word1', 'word2'] # Функция для проверки сообщений на наличие ключевых слов async def check_message(client, message): print(f"Новое сообщение из {message.chat.title}: {message.text}") # Вывод каждого нового сообщения в консоль for word in words: if word in message.text: chat_link = f"https://t.me/{message.chat.username}" if message.chat.username else "Приватный чат" sender = f"@{message.from_user.username}" if message.from_user.username else "Неизвестный отправитель" text = f"Чат: {chat_link}\nНайдена фраза: {word}\nОтправитель: {sender}\nСообщение полностью: {message.text}" print(text) # Замените '@username' на имя вашего чата или вашего пользователя для получения уведомлений await client.send_message('@username', text) await asyncio.sleep(5) # Задержка перед отправкой реакции # await client.send_reaction(message.chat.id, message.id, "👍") @app.on_message(filters.chat(chats) & filters.text) async def message_handler(client, message): await check_message(client, message) # Запускаем клиента Pyrogram app.run()
Данный код будет присылать на указанный username сообщение вида:
Чат: https://t.me/name_group Найдена фраза: word1 Отправитель: @****** Сообщение полностью: word1 ...
Через 5 секунд после формирования и отправки сообщения, на оригинальное сообщение будет установлена реакция «👍».
Давайте выделим ключевые моменты в этом коде.
Списки для мониторинга:
chats = [...] words = ['word1', 'word2']
Списки чатов chats, в которых будет производиться поиск, и ключевые слова words, которые будут искаться в сообщениях. В данном случае мы ищем символ точки и запятой, эти символы выбраны как самые часто встречаемые, чтобы не ждать появления других слов. Вы можете указать любое количество других ключевых слов.
Отправка сообщения и установка реакции:
await client.send_message('@username', text) await asyncio.sleep(5) await client.send_reaction(message.chat.id, message.id, "👍")
Отправляется сообщение в чат @username с информацией о найденном сообщении. Затем, после задержки в 5 секунд, устанавливается реакция «палец вверх» на исходное сообщение. Здесь вы можете указать свой профиль чтобы сразу же получить уведомление о ключевом слове. Вы так же можете изменить реакцию на любую из списка, или совсем убрать эту строку.
Обработчик новых сообщений:
@app.on_message(filters.chat(chats) & filters.text) async def message_handler(client, message): await check_message(client, message)
Этот декоратор назначает функцию message_handler в качестве обработчика для всех новых текстовых сообщений в указанных чатах. Функция вызывает check_message для каждого нового сообщения.
Сценарии применения этого кода.
Этот код может быть полезен в различных областях. Вы можете использовать его для мониторинга упоминаний своих продуктов или брендов в публичных чатах, это позволяет собирать обратную связь и оперативно реагировать на вопросы или проблемы клиентов.
Для исследователей и аналитиков этот код может быть полезен для сбора данных об упоминаниях определенных тем или ключевых слов, что помогает в анализе тенденций и общественного мнения. В чатах поддержки или информационных группах код может автоматически реагировать на часто задаваемые вопросы, содержащие определенные ключевые слова, улучшая тем самым качество обслуживания.
В образовательной сфере этот инструмент может быть использован для отслеживания вопросов студентов, связанных с определенными темами или концепциями, и автоматической отправки релевантных ресурсов или ответов. Наконец, маркетологи могут использовать этот код для отслеживания обсуждений определенных продуктов, услуг или тем, что помогает в понимании потребностей и интересов целевой аудитории. Это обеспечивает ценные входные данные для маркетинговых стратегий и исследований рынка.