Кейс - Что такое Client API и почему он лучше чем Bot API | BLB - Big little Business

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

Giftman

Специалист
06.02.2020
37
26
18
В 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.

scale_1200

scale_1200




Плюсы 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

Статья взята отсюда - источник
 
  • Like
Реакции: Olii и Balanchik

Olii

Профессионал
01.03.2020
97
701
93
У клиент апи дохрена ограничений, не согласен с автором. Ботапи для таких дел лучше, он во многом более безопасный, хоть и ограниченный в правах. Зато где есть права можно спокойно спамить запросами. И тг будет закрывать на это глаза.