Спам после конф — одно из наиболее раздражающих и, откровенно говоря, бесполезных действий со стороны не самых дальновидных менеджеров партнерок. Впрочем, делают они это не по своей воле, так что не суть. Удалять такие сообщения вручную муторно. Да и никто не запрещает спамерам создать 100500 фейков.
Платная функция от Telegram Premium в какой-то степени решает этот вопрос. Но во-первых, она платная. А платить за защиту от спама — это уже что-то напоминающее рэкет. Во-вторых, если у спамер есть Telegram Premium — он все равно сможет вам писать. Именно поэтому мы решили поделиться с вами антиспам-ботом для Telegram, создать который вы сможете самостоятельно за пару минут.
Какие задачи решает бот для защиты от спама в Telegram
Как очевидно из названия, основная задача бота — защитить вас от спама в личные сообщения. При этом опционально он может делать это тремя способами:
Удаляя спам и блокируя отправителя — для полной защиты от навязчивых пользователей.
Удаляя спам, но не блокируя отправителя — если вы хотите поугарать над спамерами, которые будут видеть, что они не в ЧС, и продолжать спамить.
Блокируя отправителя, но не удаляя спам — если вы боитесь пропустить что-то важное от незнакомцев.
В целом идейно бот был создан в первую очередь для защиты от постконфового спама в стиле «виделись с тобой на конфе», но никто не запрещает использовать его и для защиты от обычного спама, не связанного с арбитражем трафика. Ну и да, в отличие от Telegram Premium — это бесплатно и не дает привилегий другим Premium-пользователям. Отлетят все.
Принцип работы антиспам-бота для Telegram
Принципиально бот относительно простой — он просто проверяет список ваших контактов (тех, что добавлены в самом Telegram, адресную книгу он не трогает) и далее, в зависимости от включенных опций, применяет в отношении спамеров ранее упомянутые комбинации санкций.
Итого, с точки зрения алгоритма, бот делает следующее:
- Авторизуется в вашем профиле через user_api.
- Считывает заданные вами опции работы (блок + удаление / удаление / блок).
- Прослушивает «эфир» и ждет новые сообщения.
- Если сообщение ваше — игнорирует.
- Если сообщение в чате или канале — игнорирует.
- Если сообщение пришло в ЛС — проверяет, не от обычного ли бота (профили nickname_bot) оно. Такие боты не имеют возможности начать диалог первыми, поэтому априори не смогут спамить в классическом смысле этого слова.
- Обновляет список контактов (нужно для того, чтобы вам не пришлось перезапускать бота вручную после добавления в контакты важных вам «незнакомцев» или удаления уже ненужных «знакомцев»)
- Проверяет, есть ли отправитель сообщения в списке ваших контактов.
- Если его нет в контактах — реагирует в соответствии с заданными опциями (блок + удаление / удаление / блок). Если есть — игнорирует.
- Выводит информацию, с которой взаимодействует, в консоль (не несет практической пользы для рядовых пользователей — оставлено для отладки и ваших экспериментов).
Пошаговая инструкция, как создать бота для защиты от спама в ЛС в Telegram
Данный бот, как и все ранее создаваемые нами юзер-боты, использует официальный user_api Telegram, поэтому авторизация происходит с помощью api_id и api_hash. Чтобы их получить, вам необходимо::
- Авторизоваться через кабинет веб-версии.
- Найти и нажать «API development tools», заполнить форму.
- Сохранить присвоенные вам api_id и api_hash в текстовый редактор.
После этого вам нужно настроить свой Python-сервер для взаимодействия с Telegram.
- Далее в его консоли набираем следующие команды:
pip install asyncio
pip install telethon
- После этого открываем корневую директорию сервера. В ней нужно создать .py файл. Например antispam.py
- Открываем этот файл и добавляем в него код бота:
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()
- Подставляем свои значения для api_id и api_hash, которые мы сохраняли в шаге 3. Во флаги delete_message_flag и block_sender_flag ставим нужные вам значения. По умолчанию обе опции активны.
- Сохраняем файл antispam.py
- Запускаем бот, введя в консоль python antispam.py
- Проходим авторизацию бота в Telegram — ждем, пока появится «Please enter your phone (or bot token)», вводим номер телефона, к которому привязан используемый аккаунт, и ждем код от Telegram в ЛС. Когда в консоли появится «Please enter the code you received» — вводим код авторизации.
Бот авторизован и запущен.
Подводя итоги
Как видите, защититься от спама в Telegram гораздо проще, чем кажется, — для этого даже не нужно покупать пресловутый Telegram Premium. А на этом у нас все, в скором времени вас ждет еще несколько интересных программных решений для повседневных арбитражных задач — следите за нашим Telegram-каналом, чтобы ничего не пропустить. Тем более что спам больше не будет отвлекать вас от контента.