Конференции
Дели, Индия
25
Август
Мехико, Мексика
27-01
Август -
Сентябрь
Мехико, Мексика
31
Август
Мехико, Мексика
01-03
Сентябрь
Лиссабон, Португалия
01
Сентябрь
Мехико, Мексика
01-03
Сентябрь
Мехико, Мексика
03
Сентябрь
г.Канкун, Мексика
07-08
Сентябрь
Киев, Украина
15
Сентябрь
15
Сентябрь
Лимасол, Кипр
17-18
Сентябрь
Лима, Перу
17-18
Сентябрь
18
Сентябрь
Бухарест, Румыния
21-23
Сентябрь
Тбилиси, Грузия
24-25
Сентябрь
Лиссабон, Португалия
28
Сентябрь
Лас-Вегас, США
28
Сентябрь
Лас-Вегас, США
28-01
Сентябрь -
Октябрь
Эшторил, Португалия
28
Сентябрь
Лиссабон, Португалия
29-01
Сентябрь -
Октябрь
Лиссабон, Португалия
29-01
Сентябрь -
Октябрь
Лиссабон, Португалия
29
Сентябрь
Лиссабон, Португалия
30
Сентябрь
Лиссабон, Португалия
30
Сентябрь
Ереван, Армения
01
Октябрь
Лиссабон, Португалия
01
Октябрь
Лиссабон, Португалия
01
Октябрь
Лиссабон, Португалия
01
Октябрь
Москва, Россия
02
Октябрь
Дакар, Сенегал
14-16
Октябрь
Дакар, Сенегал
14-16
Октябрь
Варшава, Польша
14
Октябрь
София, Болгария
19-20
Октябрь
Лондон, Великобритания
19-21
Октябрь
Копенгаген, Дания
22-23
Октябрь
Копенгаген, Дания
22
Октябрь
Рим, Италия
02-05
Ноябрь
02
Ноябрь
02
Ноябрь
02
Ноябрь
Рим, Италия
02
Ноябрь
03
Ноябрь
Рим, Италия
03
Ноябрь
Рим, Италия
04
Ноябрь
04
Ноябрь
Пномпень, Камбоджа
05-06
Ноябрь
Рим, Италия
05
Ноябрь
09-10
Ноябрь
Канкун, Мексика
24-25
Ноябрь
Шарм-эш-Шейх, Египет
24-25
Ноябрь
Гоа, Индия
24-25
Ноябрь
Коломбо, Шри-Ланка
28
Ноябрь
г.Бангкок, Таиланд
30-02
Ноябрь -
Декабрь
Вена, Австрия
03-04
Декабрь
03
Декабрь
Вена, Австрия
03-04
Декабрь
Вена, Австрия
04
Декабрь
Бангкок, Таиланд
08
Декабрь
г.Бангкок, Таиланд
09-10
Декабрь
Бангкок, Таиланд
10
Декабрь
Дубай, ОАЭ
10
Декабрь
Бангкок, Таиланд
10
Декабрь
Ко Чанг, Таиланд
12-15
Декабрь
Кейптаун, ЮАР
01
Февраль
Габороне, Ботсвана
15-18
Февраль
Габороне, Ботсвана
15
Февраль
Габороне, Ботсвана
17
Февраль
Габороне, Ботсвана
18
Февраль
Мехико, Мексика
24-26
Февраль
Рио-де-Жанейро, Бразилия
02-04
Март
Коломбо, Шри-Ланка
09-11
Март
ОАЭ, Дубай
15-17
Март
Амстердам, Нидерланды
19-21
Апрель
Найроби, Кения
21-23
Апрель
г.Та‑Кали, Мальта
03-05
Май
06-07
Май
Мюнхен, Германия
13-14
Май
Мадрид, Испания
18-20
Май
Дюссельдорф, Германия
18-19
Май
Лимасол, Кипр
10-11
Июнь
Хошимин, Вьетнам
14
Июнь
Торонто, Канада
15-17
Июнь
Лондон, Великобритания
05-06
Июль

Отслеживаем упоминания ключевых слов в чатах и каналах 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://telegram.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://telegram.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://telegram.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.

0 Комментариев
Партнерка - Наша оценка
Вертикали
Мин. сумма
Сайт
VavadaPart обзор
Прямой рекламодатель
Бренды: Vavada Casino
$20/€20/1000₽ выплата
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
фото
NOVA PARTNERS обзор
Прямой рекламодатель
Бренды: LEEBET, BANDA, KUSH, EVA, APEX
$100 выплата
фото
фото
фото
фото
фото
фото
фото
Прямой рекламодатель
Бренды: SpinBetter
$50 выплата
фото
фото
фото
фото
фото
фото
Royal Partners обзор
Прямой рекламодатель
Бренды: FLAGMAN, IRWIN, GIZBO, LEX, MONRO, 1GO, STARDA, IZZI, DRIP, LEGZO, VOLNA, JET, FRESH, SOL, ROX, FUGU, IRIS
$20 выплата
фото
фото
фото
фото
фото
фото
Прямой рекламодатель
Бренды: VOX, Winnita
€100 выплата
фото
фото
Наша партнерская программа c офферами по Gambling и Betting вертикалям. Выплаты в день запроса от $20.
$20 выплата
фото
860 шт
Перейти к офферам
V.Partners обзор
Прямой рекламодатель
Бренды: Vegas, ICE Casino, VERDE Casino, FS Casino, Fiery Play, Slotoro, Hit’N’Spin
€100 выплата
фото
фото
фото
фото
фото