Skip to main content
CactusLib предоставляет прямой доступ к низкоуровневому API Telegram через CactusUtils.Telegram.
Это API для продвинутых пользователей. Неправильное его использование может привести к ошибкам “FLOOD_WAIT” или другим ограничениям со стороны Telegram.

`CactusUtils.Telegram.send_request

Основной метод для отправки запросов.

Атрибуты

org.telegram.tgnet.TLObject
required
Объект запроса, например, TLRPC.TL_users_getUsers().
bool
default:"True"
Если True, метод будет ждать ответа от сервера и вернет результат. Если False, вернет req_id немедленно.
int
default:"10"
Максимальное время ожидания ответа в секундах.
bool
default:"True"
Если True, в случае ошибки от API будет выброшено исключение TLRPCException. Если False, метод вернет объект Result с заполненным полем .error.
callable
Функция, которая будет вызвана с результатом, если wait_response=False.
Все методы и классы реквестов можно найти здесь.

Пример: получение фотографий профиля пользователя

avatars.plugin

Для продвинутых сценариев CactusLib предоставляет класс-помощник CactusUtils.Telegram. Он значительно упрощает прямое взаимодействие с методами Telegram API (TLRPC), предлагая синхронный способ выполнения запросов, более привычный для разработчиков и готовые методы-обертки для популярных запросов. Вместо использования callback-функций, теперь вы можете отправлять запросы и получать результат напрямую, обрабатывая ошибки через стандартный механизм try...except или самостоятельно без этого. Класс доступен через self.utils.Telegram.

Синхронный запрос (стандартное поведение)

Это основной способ использования. Выполнение кода приостанавливается до получения ответа или истечения таймаута.

Запрос “Fire-and-Forget” (без ожидания ответа)

Используйте wait_response=False, если вам не важен результат запроса, и вы не хотите блокировать выполнение кода.

Использование callback (как обычно)

Если вы предпочитаете использовать callback-функции, вы можете передать их в метод send как аргумент callback.

Вспомогательные методы

tlrpc_object(request_class, **kwargs)

Ключевой метод-помощник для создания и заполнения любого объекта запроса TLRPC. Вместо того чтобы писать:
Можно написать короче:

Готовые методы-обертки

Эти методы упрощают вызов популярных эндпоинтов API. Они используют send “под капотом”, поэтому вы можете передавать в них его аргументы (timeout, raise_errors и т.д.).

search_messages(...)

Выполняет поиск сообщений в диалоге по множеству критериев.
  • dialog_id (int): ID диалога для поиска.
  • query (str): Текстовый запрос.
  • from_id (int): ID отправителя.
  • filter (SearchFilter): Фильтр типа сообщений (см. ниже).
  • limit (int): Количество сообщений для возврата.
  • offset (int): Смещение для начала поиска.
Возвращает список объектов org.telegram.messenger.MessageObject. SearchFilter - это Enum для удобного выбора фильтра. Примеры значений: SearchFilter.PHOTO_VIDEO, SearchFilter.URL, SearchFilter.MUSIC, SearchFilter.EMPTY и другие.

get_chat(...) и get_channel(...)

Получают полную информацию о чате или канале.

get_user_photos(...)

Получает фотографии профиля пользователя.

get_sticker_set_by_short_name(...)

Получает информацию о наборе стикеров по его короткому имени. Короткое имя - это часть URL стикерпака, например, CactusPlugins в t.me/addstickers/CactusPlugins.

delete_messages(messages, chat_id, ...)

Удаляет сообщения в чате.
  • messages (List[int]): Список ID сообщений для удаления.
  • chat_id (int): ID чата, в котором нужно удалить сообщения.

Доступ к кэшу

Эти методы получают данные из локального кэша приложения и работают мгновенно.
  • get_user(user_id): Возвращает объект TLRPC.User.
  • input_user(user_id): Возвращает TLRPC.InputUser для использования в запросах.
  • peer(peer_id): Возвращает TLRPC.Peer.
  • input_peer(peer_id): Возвращает TLRPC.InputPeer для использования в запросах.