Бот для отписки от каналов после конфы
Traffic Cardinal Traffic Cardinal  написал 11.11.2025

Бот для отписки от каналов после конфы

Traffic Cardinal Traffic Cardinal  написал 11.11.2025
5 мин
0
30
Содержание

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

banner banner

Какие задачи решает бот для отписки от каналов после конфы

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

Принцип работы бота для отписки от каналов после конфы

Алгоритмически бот не то что прост — в кои-то веки тривиален! И это не окраска эмоциями ради окраски — он действительно до ужаса простой. Весь алгоритм сводится к:

  1. Проверке, есть ли файл before_channels.json
  2. Созданию его, если его нет, и записыванию в него всех каналов, на которые подписан профиль.
  3. Считыванию каналов из файла, если он есть, и выходу из всех каналов, которые в файле не записаны, с последующим удалением самого файла.

И все! Как видите, всего 3 шага. Если даже это не простота — что вообще есть простота? Впрочем, полезности данного бота простота создания не отнимает. Скорее, даже наоборот. Впрочем, перейдем к созданию.

Пошаговая инструкция, как сделать бот отписки от каналов после конфы

Начинаем с базы — развертывания сервера и получения реквизитов для авторизации.

В целом вы можете развернуть любой сервак, который поддерживает Python, и залить на него бот. Но так как данный бот работает сессионно и не предусматривает постоянного нахождения онлайн, то как будто бы проще развернуть все прямо на своей машине. Но дело ваше. Если решите разворачивать на своем железе, но не знаете как — вот вам гайд, как развернуть сервер на домашнем ПК.

Теперь нам нужны реквизиты. Для этого:

  1. Открываем веб-версию.
  2. Ищем «API development tools».
  3. Заполняем каждое поле формы.
  4. Копипастим api_id api_hash. Куда? Дело ваше.

После этого:

1. Создаем bot.py на серваке.

2. Текстовым редактором добавляем в пустой файл код:

from telethon import TelegramClient

import json

import os

API_ID = ваш api_id

API_HASH = "ваш api_hash"

FILE = "before_channels.json"

SESSION = "auto_leave_channels"

client = TelegramClient(SESSION, API_ID, API_HASH)

async def save_current_channels():

dialogs = await client.get_dialogs()

channels = {d.id: d.name for d in dialogs if d.is_channel and not d.is_group}

with open(FILE, "w", encoding="utf-8") as f:

json.dump(channels, f, ensure_ascii=False, indent=2)

print(f"[+] Сохранено {len(channels)} каналов — это состояние ДО конференции.")

print("Теперь иди подписывайся на всё подряд — потом просто запусти этот же скрипт снова.")

async def leave_new_channels():

with open(FILE, "r", encoding="utf-8") as f:

before = json.load(f)

dialogs = await client.get_dialogs()

after = {d.id: d.name for d in dialogs if d.is_channel and not d.is_group}

new_channels = {cid: name for cid, name in after.items() if str(cid) not in before}

if not new_channels:

print("[=] Новых каналов не найдено — всё чисто.")

return

print(f"[!] Найдено {len(new_channels)} новых каналов. Начинаю отписку...\n")

for cid, name in new_channels.items():

try:

await client.delete_dialog(int(cid))

print(f"[-] Отписался от: {name}")

except Exception as e:

print(f"[x] Ошибка при отписке от {name}: {e}")

os.remove(FILE)

print("\n[✔] Готово! Все новые каналы покинут. Файл состояния удалён.")

async def main():

if not os.path.exists(FILE):

await save_current_channels()

else:

await leave_new_channels()

with client:

client.loop.run_until_complete(main())

3. Меняем API_ID = ваш api_id и API_HASH = "ваш api_hash" на свои.

4. Сохраняем.

5. Проверяем, все ли работает, инициируя выполнение команды python bot.py в консоли сервера.

Демонстрация работы

Запускаем бот и дожидаемся, пока он сохранит файл
Запускаем бот и дожидаемся, пока он сохранит файл

Вступаем в каналы, как если бы это было на конфе
Вступаем в каналы, как если бы это было на конфе

Запускаем бот еще раз «после конфы»
Запускаем бот еще раз «после конфы»

Проверяем, отписал ли он нас — отписал. Все работает
Проверяем, отписал ли он нас — отписал. Все работает

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

Как видите, столь раздражающего действия, как ручная отписка от каналов после конкурсов, вполне можно избежать, если быть подписанным на нас!

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