Конференции
Санкт-Петербург, Россия
28
Июль
Санкт-Петербург, Россия
28
Июль
Санкт-Петербург, Россия
28
Июль
Санкт-Петербург, Россия
28
Июль
Санкт-Петербург, Россия
28
Июль
Санкт-Петербург, Россия
28
Июль
Нью-Йорк, США
28
Июль
Санкт-Петербург, Россия
28
Июль
Санкт-Петербург, Россия
29
Июль
Санкт-Петербург, Россия
29-30
Июль
Санкт-Петербург, Россия
30
Июль
Нью-Йорк, США
04-05
Август
Денвер, США
26
Август
Ивиса, Испания
31-02
Август -
Сентябрь
Будапешт, Венгрия
01-04
Сентябрь
Будапешт, Венгрия
03
Сентябрь
Будапешт, Венгрия
04-05
Сентябрь
Лимассол, Кипр
11-12
Сентябрь
Лиссабон, Португалия
16-18
Сентябрь
Прага, Чехия
26
Сентябрь
Марбелья, Испания
06
Октябрь
Москва, Россия
21-22
Октябрь
Лондон, Великобритания
22-23
Октябрь
г.Ташкент, Узбекистан
13-14
Ноябрь
Мехико, Мексика
22
Ноябрь
Италия
23-26
Ноябрь
Коломбо, Шри-Ланка
30-02
Ноябрь -
Декабрь
Бангкок, Таиланд
03
Декабрь
Бангкок, Таиланд
04-05
Декабрь

Отслеживаем упоминания ключевых слов в чатах и каналах Telegram


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

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

Скрипт предоставляет следующие возможности:

  • Подключение к вашему Telegram-аккаунту с помощью Telethon, что позволяет прослушивать все сообщения в реальном времени.
  • Анализ всех входящих сообщений в каналах, группах и личных чатах на наличие заданных ключевых слов.
  • Автоматическое формирование уведомлений с подробной информацией об отправителе, названии чата, ссылке на сообщение (если это возможно) и другими данными.
  • Отправка уведомлений в заданный целевой чат через бота Telegram, используя библиотеку Aiogram.

Работу скрипта можно настроить на сервере или на своем PC (будет бесплатно). В рамках этого материала рассмотрим вариант настройки на сервере, на Windows и macOS.

Результат работы

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

Исходный код

Создавать и настраивать бота будем используя этот скрипт:

from telethon import TelegramClient, events, types
from aiogram import Bot
import asyncio

# API ID and Hash obtained through my.telegram.org
api_id = 'ВАШ_API_ID'
api_hash = 'ВАШ_API_HASH'

# Your bot token created through BotFather
bot_token = 'ВАШ_BOT_TOKEN'

# Your account phone number
phone_number = 'ВАШ_ТЕЛЕФОННЫЙ_НОМЕР'

# Keywords to monitor
keywords = ['cparip', 'rip']

# Create a Telethon client
client = TelegramClient('session_name', api_id, api_hash)

# Create a bot instance to send messages
bot = Bot(token=bot_token)

@client.on(events.NewMessage)
async def new_message_listener(event):
    """
    Listen for all new messages in channels and groups.
    """
    # Split the message text into words and check for exact keyword match (case insensitive)
    message_words = event.raw_text.lower().split()
    matched_keyword = next((keyword for keyword in keywords if keyword.lower() in message_words), None)
    if matched_keyword:
        try:
            sender = await event.get_sender()  # Get information about the sender
        except Exception as e:
            sender = None
            print(f"Error getting sender information: {e}")

        # Start forming the message to send
        username = "Unknown sender"
        full_name = "Unknown"
        channel_link = "Link not available"
        chat_title = "Unknown chat"  # Title of the group, channel, or chat

        # Get chat information from the event
        chat = await event.get_chat()

        # Check if the sender is not None
        if sender is None:
            username = "Unknown sender"
            full_name = "Unknown"
        elif isinstance(sender, types.User):
            # For users
            username = f"@{sender.username}" if sender.username else "not available"
            full_name = f"{sender.first_name} {sender.last_name if sender.last_name else ''}".strip()
        elif isinstance(sender, (types.Channel, types.Chat)):
            # For channels or chats
            username = "Channel or group"
            full_name = sender.title if sender.title else "Unknown"

        # Check if chat information is available and fill in the data
        if chat:
            chat_title = chat.title if hasattr(chat, 'title') and chat.title else "Unknown chat"
            # Check if there is a username to form a direct link to the channel or group
            if hasattr(chat, 'username') and chat.username:
                channel_link = f"https://t.me/{chat.username}"
            else:
                channel_link = "Link not available"

        # Form a link to the specific message
        try:
            if isinstance(chat, types.Channel) or isinstance(chat, types.Chat):
                if hasattr(chat, 'username') and chat.username:
                    # If the group or channel has a username, form a direct link to the message
                    message_link = f'https://t.me/{chat.username}/{event.id}'
                else:
                    # If the username is not available, use the chat ID to form the link
                    chat_id_str = str(event.chat_id).replace('-100', '') if event.chat_id < 0 else str(event.chat_id)
                    message_link = f'https://t.me/c/{chat_id_str}/{event.id}'
            else:
                message_link = "Message link not available"
        except Exception as e:
            message_link = "Message link not available"
            print(f"Error forming message link: {e}")

        # Form the notification text
        text = (
            f'<b>Keyword found:</b> {matched_keyword}\n'
            f'<b>Chat title:</b> {chat_title}\n'
            f'<b>Username:</b> {username}\n'
            f'<b>Chat ID:</b> {event.chat_id}\n'
            f'<b>Full name:</b> {full_name}\n'
            f'<b>Message link:</b> <a href="{message_link}">Find message</a>\n'
            f'<b>Channel/Group link:</b> {channel_link}'
        )

        # Send the message to the specified chat via your bot
        target_chat_id = '-1000000000'  # Specify the chat ID where the bot should send notifications
        async with bot:
            try:
                await bot.send_message(chat_id=target_chat_id, text=text, parse_mode='HTML')
            except Exception as e:
                print(f"Error sending message: {e}")

async def main():
    # Start the Userbot
    await client.start(phone_number)
    print("Userbot started and listening to channels and groups...")

    # Userbot will run until manually stopped
    await client.run_until_disconnected()

# Start the client
if __name__ == "__main__":
    with client:
        client.loop.run_until_complete(main())

В этом коде необходимо заменить значения следующих переменных на свои:

api_id = 'ВАШ_API_ID'

api_hash = 'ВАШ_API_HASH'

bot_token = 'ВАШ_BOT_TOKEN'

phone_number = 'ВАШ_TЕЛЕФОННЫЙ_НОМЕР'

target_chat_id = '-1000000000'  # Указываем ID целевого чата

keywords = ['cparip', 'rip'] # Ключевые слова для отслеживания

Получение данных для настройки скрипта

API ID и API Hash

Важно: Не советуем использовать личный Telegram-аккаунт для данного скрипта.

Переходим на http://my.telegram.org, чтобы получить API для Telegram-аккаунта. Вводим номер телефона, привязанный к аккаунту, и нажимаем «Next».

Вводим код, который пришел в Telegram-аккаунт, и нажимаем «Sign In».

Заполняем поля «App title» и «Short name» произвольными значениями. Затем нажимаем «Create application».

Подставляем данные в код, используя значения из полей «App api_id» и «App api_hash»:

  • api_id = 'ВАШ_API_ID'
  • api_hash = 'ВАШ_API_HASH'

Bot Token

  • Создаем бота в Telegram с помощью @BotFather: отправляем команду /newbot, вводим название бота, а затем придумываем и отправляем его юзернейм.
  • Выданный API-токен сохраняем и вставляем в строку: bot_token = 'ВАШ_BOT_TOKEN'.

Телефонный номер

Важно: Не советуем использовать личный Telegram-аккаунт для данного скрипта.

Вписываем номер телефона от Telegram-аккаунта, который будет использоваться для авторизации через Telethon.

  • phone_number = 'ВАШ_TЕЛЕФОННЫЙ_НОМЕР'

ID-чата для уведомлений

  • Создаём канал или группу и с помощью бота @chatidcheck_bot узнаем ID-чата.

  • Приглашаем туда созданного бота и выдаем ему все права администратора.

Заменяем target_chat_id в коде на ID-чата, куда бот должен отправлять уведомления.

Запуск скрипта на VDS-сервере

Покупка сервера

Покупаем VDS-сервер на FriendHosting с операционной системой Ubuntu 22.04 bit и Без панели управления. После покупки VDS-сервера, на почту придут данные доступа к серверу (SSH).

Подключение к VDS

Создаем подключение к серверу через SSH:

Используйте терминал на macOS, или установите программу для подключения через SSH на Windows, например, PuTTY.

Подключаемся к серверу по команде:

ssh ЛОГИН@IP-СЕРВЕРА -p ПОРТ

Вводим пароль:

Установка Python и необходимых инструментов

Добавляем Python и его инструменты для работы с виртуальными окружениями и установкой зависимостей:

apt install python3 python3-venv python3-pip -y

Эта команда установит Python 3, инструменты для работы с виртуальными окружениями и пакетный менеджер pip.

Создание папки для проекта

  • Создаем папку для проекта:

mkdir telegram_bot

Папка нужна для удобной работы с проектом.

  • Переходим в созданную папку:

cd telegram_bot

Создание и активация виртуального окружения

  • Создаем виртуальное окружение:

python3 -m venv venv

Виртуальное окружение необходимо для изоляции зависимостей проекта.

  • Активируем виртуальное окружение:

source venv/bin/activate

После активации виртуального окружения, ваша командная строка должна измениться, отображая (venv).

Установка необходимых библиотек

  • Добавляем нужные библиотеки:

pip install telethon aiogram

Эти библиотеки необходимы для работы с Telegram API.

Добавление скрипта на сервер

  • Создаем файл с вашим скриптом:

nano telegram_bot.py

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

  • Добавляем ваш ранее подготовленный код в файл telegram_bot.py. Для этого вставьте его в nano. Для вставки используйте правую кнопку мыши или CTRL+C / CTRL + V.

  • После добавления кода зажмите CTRL + O, чтобы сохранить изменения, затем нажмите «Enter».

  • Чтобы выйти из редактора зажмите CTRL + X.

Запуск бота в фоновом режиме

Чтобы бот продолжал работу после закрытия терминала, используем утилиту screen.

  • Устанавливаем screen:

apt install screen -y

  • Создаем новую сессию screen:

screen -S telegram_bot

  • Запускаем скрипт:

python telegram_bot.py

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

  • Please enter your phone (or bot token): Номер телефона от Telegram
  • Please enter the code you received: Код подтверждения
  • Please enter your password: Код 2FA (Если на аккаунте установлена двухфакторная аутентификация)
  • При успешном запуске в терминале появится сообщение: «Userbot запущен и слушает каналы и группы…».
  • Если бот найдет сообщения с ключевыми словами, он отправит уведомление в указанный чат.

После этого бот начнет работать в данной сессии screen.

  • Отсоединяемся от screen сессии: Зажмите CTRL + A, затем D, чтобы выйти из сессии, оставив ее работающей.
  • Чтобы снова вернуться в screen:

screen -r telegram_bot

Запуск скрипта локально (на PC)

Запуск скрипта локально поможет сэкономить на покупке сервера, но придется держать компьютер включенным, а терминал с запущенным скриптом.

Установка Python

  • Переходим на официальный сайт Python: https://www.python.org/downloads/.
  • Скачиваем и устанавливаем последнюю версию Python.

Важно: На Windows обязательно отмечаем галочку «Add Python to PATH», чтобы Python был доступен в командной строке. На macOS эта настройка обычно выполняется автоматически.

Проверяем установку Python:

  • Windows: Открываем Командную строку и выполняем команду:
python --version
  • macOS: Открываем Терминал и выполняем команду:
python3 --version

Если всё успешно, увидим версию Python, например Python 3.10.0.

Установка Visual Studio Code

  • Скачиваем и устанавливаем Visual Studio Code с официального сайта: https://code.visualstudio.com/.
  • После установки запускаем VS Code.

Установка расширения в Visual Studio Code

  • Запускаем VS Code и переходим на вкладку Extensions (значок квадратов на боковой панели или зажимаем Ctrl+Shift+X).
  • В поиске расширений вводим Python и устанавливаем расширение от Microsoft, которое необходимо для работы с Python в VS Code и запуска нашего скрипта.

Настройка виртуального окружения для проекта

  • Создаем папку для проекта, называем её, например, telegram_bot.
  • Открываем эту папку в Visual Studio Code: выбираем в меню File -> Open Folder (или File -> Open на macOS) и находим созданную папку.

Создание виртуального окружения:

  • Windows: Открываем терминал в VS Code (View -> Terminal) и создаем виртуальное окружение командой:
python -m venv venv
  • macOS: Открываем терминал в VS Code (Terminal -> New Terminal) и создаем виртуальное окружение командой:
python3 -m venv venv

Это создаст виртуальное окружение с именем venv в папке проекта.

Активация виртуального окружения

  • Windows: Выполняем команду:
.\venv\Scripts\activate
  • macOS: Выполняем команду:
source venv/bin/activate

После активации в начале строки терминала должно появиться (venv), что подтверждает успешную активацию виртуального окружения.

Установка необходимых библиотек

В открытом терминале в VS Code устанавливаем библиотеки Telethon и Aiogram:

  • Windows:
pip install telethon aiogram
  • На macOS может потребоваться использовать pip3:
pip3 install telethon aiogramм

Проверяем установку библиотек:

pip list

В списке установленных библиотек должны быть видны telethon и aiogram.

Создание Python файла и вставка кода

  • В Visual Studio Code в папке Telegram_Bot создаем новый файл, называем его telegram_bot.py

  • Вставляем в него ранее подготовленный код:

Важно: Перед запуском скрипта, убедитесь, что ваш файл сохранен.

Сохранение файла в VS Code на Windows:

  • Сочетание клавиш: Нажмите Ctrl + S, чтобы сохранить текущий файл.

Через меню: Вы также можете перейти в меню в верхней части окна:

  • Нажмите Файл (File).
  • Выберите Сохранить (Save).

Сохранение файла в VS Code на macOS:

  • Сочетание клавиш: Нажмите Cmd (⌘) + S, чтобы сохранить текущий файл.

Через меню: Также можно воспользоваться верхним меню:

  • Нажмите File.
  • Выберите Save.

Запуск скрипта на PC

Windows: Убедитесь, что виртуальное окружение активировано (venv) должно быть в начале строки терминала). Выполняем команду:

python telegram_bot.py

macOS: Аналогично, если окружение активировано, выполняем:

python3 telegram_bot.py

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

  • Please enter your phone (or bot token): Номер телефона от Telegram
  • Please enter the code you received: Код подтверждения
  • Please enter your password: Код 2FA (Если на аккаунте установлена двухфакторная аутентификация)
  • При успешном запуске в терминале появится сообщение: «Userbot запущен и слушает каналы и группы…».
  • Если бот найдет сообщения с ключевыми словами, он отправит уведомление в указанный чат.

Возможные проблемы и их решения

Ошибка подключения к Telegram:

  • Убедитесь, что интернет-соединение стабильно и что ваш IP не заблокирован Telegram. Зачастую не хочет дружить с VPN.

Бот не отслеживает новые сообщения:

  • Проверьте терминал: если соединение прервано, перезапустите скрипт.

Проблемы с библиотеками:

  • Убедитесь, что все нужные библиотеки установлены, и что виртуальное окружение правильно активировано.

Проблемы с правами бота:

  • Проверьте, чтобы у бота были все необходимые права для отправки сообщений в целевой чат.

Выбор интерпретатора Python в VS Code:

  • Иногда VS Code может не видеть нужный интерпретатор Python. Нажимаем на версию Python в левом нижнем углу и выбираем интерпретатор, находящийся в папке venv.

CPARIP


Like it? Share with your friends!
0 Комментариев
Партнерка - Наша оценка
Вертикали
Мин. сумма
Сайт
Vavadapart обзор
Партнёрская программа онлайн-казино Vavada. Это прямой рекламодатель. На рынке с 2017 года. Сотрудничают по RevShare (до 50%) и CPA.
1000 рублей/$20/€20 выплата
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
Наша партнерская программа c офферами по Gambling и Betting вертикалям. Выплаты в день запроса от $20.
$20 выплата
фото
810 шт
Перейти к офферам
V.Partners обзор
Прямой рекламодатель популярных в Европе казино и беттинг брендов: Vulkan Vegas, ICE Casino, VERDE Casino, Vulkan Bet и Hit'N'Spin. Партнерка основана в 2016 году. Работают по СРА, RevShare, Hybrid и принимают трафик с более чем 55 стран.
€100 выплата
фото
фото
фото
фото
фото
фото