В Telegram вы можете использовать как Client API, так и Bot API. Client API позволяет создавать "юзерботов". Юзерботы — это специальные аккаунты, которые помечены как пользователи, но могут выполнять автоматизированные функции. Помимо этого можно использовать и вход по токену, но об этом как-нибудь в другой статье.
Использование
Для использования и создания я выбрал библиотеку Pyrogram. Она имеет понятную документацию и позволяет легко создавать юзерботов. Установку библиотеки производим простой командой в консоли:
pip3 install pyrogram
Создаем подключение
Чтобы получить специальный файл — сессию, нужно выполнить определенный код:
from pyrogram import Client
app = Client("Session", api_id=Ваш api_id, api_hash="Ваш api_hash")
После выполнения этого кода будет создан файл-сессия у вас запросят номер телефона и код, который придет.
Спрашивается, откуда взять api_id и api_hash. Надо зайти в Telegram, зарегистрироваться, войти под своим аккаунтов и забрать аpi_id и api_hash.
Плюсы Client API
При использовании Client API мы можем сделать то, что не могут делать обычные боты или пользователи:
- Мы можем видеть сообщения от ботов (в случае регистрации через токен)
- Быстрое удаление сообщений
- Способность видеть VIA-сообщения
- Возможность творить со своим аккаунтов то, что позволяет код. В любое время
- Более быстрая обработка сообщений
Пишем код
Для примера я решил создать простого бота, который будет удалять сообщения через цикл. Напишем код, который будет отвечать на команду /start:
@bot.on_message(Filters.command("start"))
def start(client, message):
bot.send_message(message.chat.id, 'Привет! Данный бот создан для очистки групп от сообщений')
@bot.on_message(Filters.command("cleandown"))
def clean_down(chat, message):
try:
begin_timer = time.time()
start = message.reply_to_message.message_id
chat = message.chat.id
end = message.message_id
pending = int(end) - int(start)
bot.send_message(message.chat.id, 'Чистка была запущена! Найдено сообщений: <b>{}</b>'.format(pending) + '. <b>\nВ среднем 500 сообщений удаляются за минуту</b>', parse_mode='HTML')
print(chat)
i = start
while i < end:
bot.delete_messages(chat, i)
i = i + 1
if i == end:
middle_timer = time.time()
end_timer = int(middle_timer) - int(begin_timer)
bot.delete_messages(chat, i)
bot.delete_messages(chat, i + 1)
bot.delete_messages(chat, i + 2)
bot.send_message(chat, 'Чистка была успешно завершена! Удалено сообщений: <b>{}</b>'.format(pending) + '\nЧистка длилась (секунд): <b>{}</b>'.format(end_timer) , parse_mode='HTML')
except Exception as e:
bot.send_message(message.chat.id, str(e))
Как видите, удаление было произведено с помощью обычного цикла. Удаляется реплейнутое сообщение, и всё, что после него.
Для удобства я опубликовал полный код на Pastebin
Если тебе понравилась статья, обязательно подпишись и поставь лайк. Остались вопросы? Смело спрашивайте о них в комментариях– обязательно отвечу :). Также у меня есть Telegram-канал — подписывайтесь ;).