Мониторинг в реальном времени сообщений в группах



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

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 для каждого нового сообщения.

Сценарии применения этого кода.

Этот код может быть полезен в различных областях. Вы можете использовать его для мониторинга упоминаний своих продуктов или брендов в публичных чатах, это позволяет собирать обратную связь и оперативно реагировать на вопросы или проблемы клиентов.

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

В образовательной сфере этот инструмент может быть использован для отслеживания вопросов студентов, связанных с определенными темами или концепциями, и автоматической отправки релевантных ресурсов или ответов. Наконец, маркетологи могут использовать этот код для отслеживания обсуждений определенных продуктов, услуг или тем, что помогает в понимании потребностей и интересов целевой аудитории. Это обеспечивает ценные входные данные для маркетинговых стратегий и исследований рынка.



Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: