Traffic Cardinal Traffic Cardinal написал 12.03.2024

Создаем антиспам-бота для Telegram

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

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

banner banner

Платная функция от Telegram Premium в какой-то степени решает этот вопрос. Но во-первых, она платная. А платить за защиту от спама — это уже что-то напоминающее рэкет. Во-вторых, если у спамер есть Telegram Premium — он все равно сможет вам писать. Именно поэтому мы решили поделиться с вами антиспам-ботом для Telegram, создать который вы сможете самостоятельно за пару минут.

Какие задачи решает бот для защиты от спама в Telegram

Как очевидно из названия, основная задача бота — защитить вас от спама в личные сообщения. При этом опционально он может делать это тремя способами:

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

  • Удаляя спам, но не блокируя отправителя — если вы хотите поугарать над спамерами, которые будут видеть, что они не в ЧС, и продолжать спамить.

  • Блокируя отправителя, но не удаляя спам — если вы боитесь пропустить что-то важное от незнакомцев.

В целом идейно бот был создан в первую очередь для защиты от постконфового спама в стиле «виделись с тобой на конфе», но никто не запрещает использовать его и для защиты от обычного спама, не связанного с арбитражем трафика. Ну и да, в отличие от Telegram Premium — это бесплатно и не дает привилегий другим Premium-пользователям. Отлетят все.

Принцип работы антиспам-бота для Telegram

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

Итого, с точки зрения алгоритма, бот делает следующее:

  1. Авторизуется в вашем профиле через user_api.
  2. Считывает заданные вами опции работы (блок + удаление / удаление / блок).
  3. Прослушивает «эфир» и ждет новые сообщения.
  4. Если сообщение ваше — игнорирует.
  5. Если сообщение в чате или канале — игнорирует.
  6. Если сообщение пришло в ЛС — проверяет, не от обычного ли бота (профили nickname_bot) оно. Такие боты не имеют возможности начать диалог первыми, поэтому априори не смогут спамить в классическом смысле этого слова.
  7. Обновляет список контактов (нужно для того, чтобы вам не пришлось перезапускать бота вручную после добавления в контакты важных вам «незнакомцев» или удаления уже ненужных «знакомцев»)
  8. Проверяет, есть ли отправитель сообщения в списке ваших контактов.
  9. Если его нет в контактах — реагирует в соответствии с заданными опциями (блок + удаление / удаление / блок). Если есть — игнорирует.
  10. Выводит информацию, с которой взаимодействует, в консоль (не несет практической пользы для рядовых пользователей — оставлено для отладки и ваших экспериментов).

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

Данный бот, как и все ранее создаваемые нами юзер-боты, использует официальный user_api Telegram, поэтому авторизация происходит с помощью api_id и api_hash. Чтобы их получить, вам необходимо::

  1. Авторизоваться через кабинет веб-версии.
  2. Найти и нажать «API development tools», заполнить форму.
  3. Сохранить присвоенные вам api_id и api_hash в текстовый редактор.

После этого вам нужно настроить свой Python-сервер для взаимодействия с Telegram.

  1. Далее в его консоли набираем следующие команды:

pip install asyncio

pip install telethon

  1. После этого открываем корневую директорию сервера. В ней нужно создать .py файл. Например antispam.py
  2. Открываем этот файл и добавляем в него код бота:

from telethon.sync import TelegramClient

from telethon.tl.functions.contacts import GetContactsRequest

from telethon.tl.functions.contacts import BlockRequest

from telethon.events import NewMessage

api_id = 'ваш API ID' # Замените на ваш API ID

api_hash = 'ваш API Hash' # Замените на ваш API Hash

delete_message_flag = 1 # Флаг для удаления сообщений: 1 - удалять, 0 - не удалять

block_sender_flag = 1 # Флаг для блокировки отправителя: 1 - блокировать, 0 - не блокировать

client = TelegramClient('session_name', api_id, api_hash)

async def get_contacts():

await client.start()

result = await client(GetContactsRequest(0))

contacts = result.users

return contacts

async def update_contacts():

global contacts_list

contacts_list = await get_contacts()

contacts_list = client.loop.run_until_complete(get_contacts())

@client.on(NewMessage)

async def message_handler(event):

message = event.message

if message.is_private:

me = await client.get_me() # Получаем информацию о собственном аккаунте

if message.sender_id != me.id: # Сравниваем sender_id с идентификатором собственного аккаунта

print("Received message:", message.text)

await update_contacts() # Обновляем список контактов

sender_in_contacts = False

for user in contacts_list:

if user.id == message.sender_id:

sender_in_contacts = True

break

if not sender_in_contacts:

if delete_message_flag == 1:

await client.delete_dialog(message.sender_id) # Удаляем переписку с пользователем

print("Deleted dialog with:", message.sender_id)

if block_sender_flag == 0:

await client(BlockRequest(message.sender_id)) # Блокируем отправителя

client.start()

client.run_until_disconnected()

  1. Подставляем свои значения для api_id и api_hash, которые мы сохраняли в шаге 3. Во флаги delete_message_flag и block_sender_flag ставим нужные вам значения. По умолчанию обе опции активны.
  2. Сохраняем файл antispam.py
  3. Запускаем бот, введя в консоль python antispam.py
  4. Проходим авторизацию бота в Telegram — ждем, пока появится «Please enter your phone (or bot token)», вводим номер телефона, к которому привязан используемый аккаунт, и ждем код от Telegram в ЛС. Когда в консоли появится «Please enter the code you received» — вводим код авторизации.

Бот авторизован и запущен.

Подводя итоги

Как видите, защититься от спама в Telegram гораздо проще, чем кажется, — для этого даже не нужно покупать пресловутый Telegram Premium. А на этом у нас все, в скором времени вас ждет еще несколько интересных программных решений для повседневных арбитражных задач — следите за нашим Telegram-каналом, чтобы ничего не пропустить. Тем более что спам больше не будет отвлекать вас от контента.

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