Найти тему
AppsForMobile

Что такое Client API и почему он лучше чем Bot API

Оглавление

В 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.

-2
-3

Плюсы 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-канал — подписывайтесь ;).