Skip to main content

Telegram Bot API library

Project description

neogram

neogram — это Python-модуль, объединяющий в себе клиент для Telegram Bot API (версия 10.0) и набор клиентов для различных AI-сервисов. Модуль построен поверх curl_cffi для обхода TLS-фингерпринтинга и обеспечивает полную типизацию через dataclass.


Установка

pip install neogram

Зависимости

  • curl_cffi — HTTP-клиент с поддержкой имперсонации браузерных TLS-фингерпринтов
  • beautifulsoup4 — парсинг HTML (для перевода Google Translate в классе Deef)

Структура модуля

neogram/
├── __init__.py      # Публичный API: реэкспорт всех классов
├── fgram.py         # Telegram Bot API клиент (Bot, AsyncBot, типы Telegram)
└── ii.py            # AI-клиенты (OnlySQ, Deef, Qwen, ChatGPT/OpenAI)

Содержание


Telegram Bot API (fgram)

Модуль fgram.py предоставляет полную реализацию Telegram Bot API версии 10.0, включая синхронный (Bot) и асинхронный (AsyncBot) клиенты, автоматическую сериализацию/десериализацию всех типов Telegram и декораторную систему обработчиков обновлений.

Bot — синхронный клиент

from neogram import Bot

bot = Bot(
    token="123456:ABC-DEF...",
    api_url="https://api.telegram.org", # по умолчанию
    timeout=60,  # HTTP-таймаут (секунды)
    impersonate="chrome", # TLS-фингерпринт curl_cffi
    parse_mode=None, # "HTML" или "MarkdownV2"
    proxies=None, # {"http": "...", "https": "..."}
    max_retries=3, # число автоповторов при ошибках транспорта
    retry_on_flood=True, # автоповтор при 429 Flood
)

Параметры конструктора:

Параметр Тип По умолчанию Описание
token str Токен бота от @BotFather (обязательный)
api_url str https://api.telegram.org Базовый URL Telegram API
timeout int 60 HTTP-таймаут запроса в секундах
impersonate str "chrome" TLS-фингерпринт для curl_cffi (например "chrome", "safari")
parse_mode Optional[str] None Режим форматирования по умолчанию ("HTML", "MarkdownV2")
proxies Optional[dict] None Словарь прокси-настроек для curl_cffi
max_retries int 3 Максимальное число автоматических повторов при транспортных ошибках и ошибках сервера
retry_on_flood bool True Автоматический повтор при ошибке 429 (Flood)

Особенности транспорта:

  • Использует curl_cffi.requests.Session с имперсонацией браузерного TLS-фингерпринта
  • Автоматический retry при транспортных ошибках (с exponential backoff до 30 сек)
  • Автоматический retry при 429 Flood (ожидание retry_after + 1 сек)
  • Автоматический retry при серверных ошибках 5xx (с exponential backoff)

AsyncBot — асинхронный клиент

from neogram import AsyncBot

async with AsyncBot(token="123456:ABC-DEF...") as bot:
    me = await bot.get_me()
    await bot.send_message(chat_id=123, text="Hello!")

Наследуется от Bot и предоставляет асинхронные версии всех API-методов. Все методы-корутины — используйте await. Поддерживает асинхронный контекстный менеджер (async with).

Ключевые отличия от синхронного Bot:

  • Использует curl_cffi.requests.AsyncSession вместо Session
  • Все API-методы являются корутинами (async def)
  • Обработчики могут быть как синхронными, так и асинхронными — диспетчер автоматически определяет и awaitит результат
  • Метод aclose() для корректного закрытия сессии
  • Polling и process_update также асинхронны

Система обработчиков (handlers)

neogram использует декораторную систему регистрации обработчиков, аналогичную pyTelegramBotAPI. Первый подходящий обработчик для каждого типа обновления выигрывает.

Декораторы обработчиков

Декоратор Тип обновления Аргументы фильтрации
@bot.message_handler(...) message commands, content_types, regexp, func, chat_types, user_ids, chat_ids
@bot.edited_message_handler(...) edited_message commands, content_types, regexp, func, chat_types, user_ids, chat_ids
@bot.channel_post_handler(...) channel_post commands, content_types, regexp, func, chat_types, chat_ids
@bot.edited_channel_post_handler(...) edited_channel_post commands, content_types, regexp, func, chat_types
@bot.callback_query_handler(...) callback_query func, data
@bot.inline_handler(...) inline_query func, regexp
@bot.my_chat_member_handler(...) my_chat_member func
@bot.chat_member_handler(...) chat_member func
@bot.chat_join_request_handler(...) chat_join_request func
@bot.poll_handler(...) poll func
@bot.poll_answer_handler(...) poll_answer func
@bot.pre_checkout_query_handler(...) pre_checkout_query func
@bot.shipping_query_handler(...) shipping_query func
@bot.business_message_handler(...) business_message commands, content_types, regexp, func
@bot.edited_business_message_handler(...) edited_business_message commands, content_types, regexp, func
@bot.deleted_business_messages_handler(...) deleted_business_messages func
@bot.chosen_inline_result_handler(...) chosen_inline_result func
@bot.message_reaction_handler(...) message_reaction func
@bot.message_reaction_count_handler(...) message_reaction_count func
@bot.chat_boost_handler(...) chat_boost func
@bot.removed_chat_boost_handler(...) removed_chat_boost func
@bot.purchased_paid_media_handler(...) purchased_paid_media func

Обработчик ошибок

@bot.error_handler
def on_error(update, exception):
    print(f"Ошибка: {exception}")

Программная регистрация

bot.register_handler("message", my_handler, commands=["start"], chat_types=["private"])

Фильтрация обработчиков

Фильтры передаются в декоратор и проверяются при диспетчеризации обновлений. Обновление проходит, только если все фильтры совпадают.

Фильтр Тип Описание
commands Optional[List[str]] Список команд (без /). Проверяет, что текст начинается с /команда
content_types Optional[List[str]] Тип контента сообщения ("text", "photo", "document" и т.д.)
regexp Optional[str] Regex-паттерн для проверки message.text или message.caption
func Optional[Callable] Произвольная функция-предикат, принимает объект обновления
chat_types Optional[List[str]] Тип чата ("private", "group", "supergroup", "channel")
user_ids Optional[List[int]] Белый список ID пользователей
chat_ids Optional[List[int]] Белый список ID чатов
data Optional[Union[str, Callable]] Для callback_query — точное совпадение или regex для callback_query.data

StopPropagation: выбросьте StopPropagation внутри обработчика, чтобы остановить дальнейшую обработку текущего обновления.

Polling и Webhook

Polling (long polling)

# Синхронный
bot.polling(timeout=30, none_stop=True, interval=0.0)

# Бесконечный polling (none_stop=True по умолчанию)
bot.infinity_polling()

# Остановка polling
bot.stop_polling()
Параметр Тип По умолчанию Описание
timeout int 30 Таймаут long polling в секундах
allowed_updates Optional[List[str]] None Список типов обновлений для получения
none_stop bool True Не останавливаться при ошибках API
interval float 0.0 Задержка между запросами (секунды)

Webhook

# Синхронный
@app.post("/webhook")
def webhook():
    bot.process_update(request.json)
    return "ok"

# Асинхронный
@app.post("/webhook")
async def webhook():
    await bot.process_update(request.json)
    return "ok"

Исключения

TelegramAPIError (алиас: TelegramError)

Выбрасывается при ошибке от Telegram API.

Атрибут Тип Описание
error_code int HTTP-подобный код ошибки (400, 401, 403, 429, 500 и т.д.)
description str Человекочитаемое описание ошибки
parameters dict Дополнительные параметры (например {"retry_after": 30})
method str Имя API-метода, вызвавшего ошибку
retry_after Optional[int] Удобный shortcut для parameters.get("retry_after")

StopPropagation

Выбросьте внутри обработчика, чтобы остановить диспетчеризацию дальнейших обработчиков для текущего обновления.

TelegramObject — базовый класс типов

Все типы Telegram API наследуются от TelegramObject (dataclass) и предоставляют:

  • from_dict(data: dict) -> TelegramObject — десериализация из JSON (автоматическое переименование полей: typetype_val, fromfrom_user и т.д.)
  • to_dict() -> dict — сериализация в JSON (обратное переименование)
  • Автоматический dispatch union-типов — полиморфные поля (например MessageOrigin, ChatMember) автоматически десериализуются в правильный подкласс на основе поля-дискриминатора

InputFile — загрузка файлов

from neogram import InputFile

# Из пути к файлу
f1 = InputFile("/path/to/photo.jpg")

# Из байтов
f2 = InputFile(b"raw bytes data", filename="document.pdf")

# Из файлового объекта
with open("audio.mp3", "rb") as fh:
    f3 = InputFile(fh)

# Использование
bot.send_document(chat_id=123, document=InputFile("/path/to/file.pdf"))

API-методы Bot

Ниже приведён полный список API-методов, доступных в Bot (синхронно) и AsyncBot (асинхронно с await). Все методы возвращают типизированные объекты Telegram.

Обновления и подключение

Метод Возвращает Описание
get_updates(offset, limit, timeout, allowed_updates) List[Update] Получение обновлений через long polling
set_webhook(url, certificate, ...) bool Установка webhook
delete_webhook(drop_pending_updates) bool Удаление webhook
get_webhook_info() WebhookInfo Информация о текущем webhook
get_me() User Информация о боте
log_out() bool Выход из облачного Bot API
close() bool Закрытие экземпляра бота на локальном сервере

Отправка сообщений

Метод Возвращает Описание
send_message(chat_id, text, ...) Message Отправка текстового сообщения
forward_message(chat_id, from_chat_id, message_id, ...) MessageId Пересылка сообщения
forward_messages(chat_id, from_chat_id, message_ids, ...) List[MessageId] Пересылка нескольких сообщений
copy_message(chat_id, from_chat_id, message_id, ...) MessageId Копирование сообщения
copy_messages(chat_id, from_chat_id, message_ids, ...) List[MessageId] Копирование нескольких сообщений
send_photo(chat_id, photo, ...) Message Отправка фото
send_audio(chat_id, audio, ...) Message Отправка аудио
send_document(chat_id, document, ...) Message Отправка документа
send_video(chat_id, video, ...) Message Отправка видео
send_animation(chat_id, animation, ...) Message Отправка анимации (GIF)
send_voice(chat_id, voice, ...) Message Отправка голосового сообщения
send_video_note(chat_id, video_note, ...) Message Отправка видео-заметки (кружочек)
send_live_photo(chat_id, live_photo, photo, ...) Message Отправка живого фото
send_paid_media(chat_id, star_count, media, ...) Message Отправка платного медиа
send_media_group(chat_id, media, ...) List[Message] Отправка группы медиа
send_location(chat_id, latitude, longitude, ...) Message Отправка локации
send_venue(chat_id, latitude, longitude, title, address, ...) Message Отправка места
send_contact(chat_id, phone_number, first_name, ...) Message Отправка контакта
send_poll(chat_id, question, options, ...) Message Отправка опроса
send_checklist(business_connection_id, chat_id, checklist, ...) Message Отправка чек-листа
send_dice(chat_id, ...) Message Отправка кубика
send_message_draft(chat_id, draft_id, ...) Message Отправка черновика сообщения
send_chat_action(chat_id, action, ...) bool Отправка действия «печатает…»

Реакции и действия

Метод Возвращает Описание
set_message_reaction(chat_id, message_id, reaction, is_big) bool Установка реакции на сообщение

Редактирование и удаление

Метод Возвращает Описание
edit_message_text(text, ...) Message Редактирование текста сообщения
edit_message_caption(...) Message Редактирование подписи к медиа
edit_message_reply_markup(...) Message Редактирование inline-клавиатуры
delete_message(chat_id, message_id) bool Удаление сообщения
delete_messages(chat_id, message_ids) bool Удаление нескольких сообщений
delete_message_reaction(chat_id, message_id, ...) bool Удаление реакции

Ответы на запросы

Метод Возвращает Описание
answer_callback_query(callback_query_id, ...) bool Ответ на callback-запрос
answer_inline_query(inline_query_id, results, ...) bool Ответ на inline-запрос
answer_guest_query(guest_query_id, result) bool Ответ на guest-запрос

Профили пользователей

Метод Возвращает Описание
get_user_profile_photos(user_id, ...) UserProfilePhotos Фото профиля пользователя
get_user_profile_audios(user_id, ...) UserProfileAudios Аудио профиля пользователя
set_user_emoji_status(user_id, ...) bool Установка emoji-статуса

Файлы

Метод Возвращает Описание
get_file(file_id) File Получение информации о файле

Чаты: администрирование участников

Метод Возвращает Описание
ban_chat_member(chat_id, user_id, ...) bool Бан участника
unban_chat_member(chat_id, user_id, ...) bool Разбан участника
restrict_chat_member(chat_id, user_id, permissions, ...) bool Ограничение участника
promote_chat_member(chat_id, user_id, ...) bool Повышение участника
set_chat_administrator_custom_title(...) bool Установка кастомного титула админа
set_chat_member_tag(chat_id, user_id, tag) bool Установка тега участника
ban_chat_sender_chat(chat_id, sender_chat_id) bool Бан канала-отправителя
unban_chat_sender_chat(chat_id, sender_chat_id) bool Разбан канала-отправителя

Чаты: настройки

Метод Возвращает Описание
set_chat_permissions(chat_id, permissions, ...) bool Установка прав чата
export_chat_invite_link(chat_id) str Экспорт ссылки-приглашения
create_chat_invite_link(chat_id, ...) ChatInviteLink Создание ссылки-приглашения
edit_chat_invite_link(chat_id, invite_link, ...) ChatInviteLink Редактирование ссылки-приглашения
create_chat_subscription_invite_link(...) ChatInviteLink Создание платной подписки
edit_chat_subscription_invite_link(...) ChatInviteLink Редактирование платной подписки
revoke_chat_invite_link(chat_id, invite_link) ChatInviteLink Отзыв ссылки-приглашения
approve_chat_join_request(chat_id, user_id) bool Одобрение заявки на вступление
decline_chat_join_request(chat_id, user_id) bool Отклонение заявки на вступление
set_chat_photo(chat_id, photo) bool Установка фото чата
delete_chat_photo(chat_id) bool Удаление фото чата
set_chat_title(chat_id, title) bool Установка названия чата
set_chat_description(chat_id, description) bool Установка описания чата
pin_chat_message(chat_id, message_id, ...) bool Закрепление сообщения
unpin_chat_message(chat_id, ...) bool Открепление сообщения
unpin_all_chat_messages(chat_id) bool Открепление всех сообщений
leave_chat(chat_id) bool Выход из чата
get_chat(chat_id) ChatFullInfo Получение информации о чате
get_chat_administrators(chat_id, ...) List[ChatMember] Список администраторов
get_chat_member_count(chat_id) Any Количество участников
get_chat_member(chat_id, user_id) ChatMember Информация об участнике
get_user_personal_chat_messages(user_id, limit) List[Message] Личные сообщения пользователя

Форумы (топики)

Метод Возвращает Описание
get_forum_topic_icon_stickers() List[Sticker] Стикеры для иконок топиков
create_forum_topic(chat_id, name, ...) ForumTopic Создание топика
edit_forum_topic(chat_id, message_thread_id, ...) bool Редактирование топика
close_forum_topic(chat_id, message_thread_id) bool Закрытие топика
reopen_forum_topic(chat_id, message_thread_id) bool Повторное открытие топика
delete_forum_topic(chat_id, message_thread_id) bool Удаление топика
unpin_all_forum_topic_messages(...) bool Открепление всех сообщений в топике
edit_general_forum_topic(chat_id, name) bool Редактирование общего топика
close_general_forum_topic(chat_id) bool Закрытие общего топика
reopen_general_forum_topic(chat_id) bool Повторное открытие общего топика
hide_general_forum_topic(chat_id) bool Скрытие общего топика
unhide_general_forum_topic(chat_id) bool Отображение общего топика
unpin_all_general_forum_topic_messages(chat_id) bool Открепление всех сообщений общего топика

Команды бота и настройки

Метод Возвращает Описание
set_my_commands(commands, scope, language_code) bool Установка команд бота
delete_my_commands(scope, language_code) bool Удаление команд бота
get_my_commands(scope, language_code) List[BotCommand] Получение команд бота
set_my_name(name, language_code) bool Установка имени бота
get_my_name(language_code) BotName Получение имени бота
set_my_description(description, language_code) bool Установка описания бота
get_my_description(language_code) BotDescription Получение описания бота
set_my_short_description(...) bool Установка краткого описания
get_my_short_description(language_code) BotShortDescription Получение краткого описания
set_my_profile_photo(photo) bool Установка фото профиля бота
remove_my_profile_photo() bool Удаление фото профиля бота
set_chat_menu_button(chat_id, menu_button) bool Установка кнопки меню
get_chat_menu_button(chat_id) MenuButton Получение кнопки меню
set_my_default_administrator_rights(...) bool Установка прав админа по умолчанию
get_my_default_administrator_rights(...) ChatAdministratorRights Получение прав админа по умолчанию

Подарки и верификация

Метод Возвращает Описание
get_available_gifts() Gifts Список доступных подарков
send_gift(gift_id, ...) bool Отправка подарка
gift_premium_subscription(user_id, ...) bool Подарок Premium-подписки
verify_user(user_id, ...) bool Верификация пользователя
verify_chat(chat_id, ...) bool Верификация чата
remove_user_verification(user_id) bool Снятие верификации пользователя
remove_chat_verification(chat_id) bool Снятие верификации чата

Бизнес-подключения

Метод Возвращает Описание
get_business_connection(business_connection_id) BusinessConnection Информация о бизнес-подключении
read_business_message(...) bool Чтение бизнес-сообщения
delete_business_messages(...) bool Удаление бизнес-сообщений
set_business_account_name(...) bool Установка имени бизнес-аккаунта
set_business_account_username(...) bool Установка имени пользователя бизнес-аккаунта
set_business_account_bio(...) bool Установка био бизнес-аккаунта
set_business_account_profile_photo(...) bool Установка фото бизнес-аккаунта
remove_business_account_profile_photo(...) bool Удаление фото бизнес-аккаунта
set_business_account_gift_settings(...) bool Настройки подарков бизнес-аккаунта
get_business_account_star_balance(...) StarAmount Баланс звёзд бизнес-аккаунта
transfer_business_account_stars(...) bool Перевод звёзд
get_business_account_gifts(...) OwnedGifts Список подарков бизнес-аккаунта

Управляемые боты

Метод Возвращает Описание
get_managed_bot_token(user_id) str Получение токена управляемого бота
replace_managed_bot_token(user_id) str Замена токена управляемого бота
get_managed_bot_access_settings(user_id) BotAccessSettings Настройки доступа управляемого бота
set_managed_bot_access_settings(user_id, ...) BotAccessSettings Установка настроек доступа

Boost, стикеры, звёзды, игры и другие

Метод Возвращает Описание
get_user_chat_boosts(chat_id, user_id) UserChatBoosts Boost-ы пользователя в чате
set_chat_sticker_set(chat_id, sticker_set_name) bool Установка набора стикеров
delete_chat_sticker_set(chat_id) bool Удаление набора стикеров

Полный список методов включает также все методы для работы со стикерами, звёздами (Star Transactions), играми, платными медиа, паспортными данными и др. — всего более 150 API-методов, соответствующих Bot API 10.0.

Типы Telegram API

Модуль определяет все типы Telegram Bot API 10.0 как dataclass-ы с _FIELD_META для автоматической сериализации. Ниже перечислены основные группы типов (полный список — в __all__ модуля):

Базовые: TelegramObject, Update, User, Chat, ChatFullInfo, Message, MessageId

Сообщения: MessageEntity, TextQuote, ExternalReplyInfo, ReplyParameters, MessageOrigin*, LinkPreviewOptions, InaccessibleMessage, MaybeInaccessibleMessage

Медиа: PhotoSize, Animation, Audio, Document, Video, VideoNote, Voice, LivePhoto, File, VideoQuality

Платные медиа: PaidMediaInfo, PaidMedia*, InputPaidMedia*

Опросы: Poll, PollOption, PollAnswer, PollMedia, InputPollOption, InputPollMedia, InputPollOptionMedia

Клавиатуры: InlineKeyboardMarkup, InlineKeyboardButton, ReplyKeyboardMarkup, KeyboardButton, ReplyKeyboardRemove, ForceReply, KeyboardButtonRequestUsers, KeyboardButtonRequestChat, KeyboardButtonPollType

Inline: InlineQuery, InlineQueryResult*, InputMessageContent*, ChosenInlineResult

Чаты: ChatPermissions, ChatPhoto, ChatInviteLink, ChatAdministratorRights, ChatMember*, ChatJoinRequest, ChatLocation, ChatShared, ChatBackground

Реакции: ReactionType*, ReactionCount, MessageReactionUpdated, MessageReactionCountUpdated

Форумы: ForumTopic, ForumTopicCreated, ForumTopicEdited, ForumTopicClosed, ForumTopicReopened, GeneralForumTopic*

Подарки: Gift, Gifts, GiftInfo, GiftBackground, UniqueGift*, OwnedGift*, AcceptedGiftTypes

Бизнес: BusinessConnection, BusinessBotRights, BusinessIntro, BusinessLocation, BusinessOpeningHours*, BusinessMessagesDeleted

Boost: ChatBoost, ChatBoostSource*, ChatBoostUpdated, ChatBoostRemoved, UserChatBoosts

Платежи: Invoice, LabeledPrice, ShippingAddress, ShippingOption, ShippingQuery, OrderInfo, SuccessfulPayment, RefundedPayment, PreCheckoutQuery

Звёзды: StarAmount, StarTransaction, StarTransactions, TransactionPartner*, RevenueWithdrawalState*, AffiliateInfo

Паспорт: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError*

Игры: Game, CallbackGame, GameHighScore

Прочее: WebhookInfo, BotCommand, BotCommandScope*, BotName, BotDescription, BotShortDescription, MenuButton*, MaskPosition, Sticker, StickerSet, InputSticker, Story*, Dice, Contact, Venue, Location, ProximityAlertTriggered, WebAppData, WebAppInfo, SentWebAppMessage, WriteAccessAllowed, ResponseParameters, CallbackQuery


AI-клиенты (ii)

Модуль ii.py предоставляет набор клиентов для различных AI-сервисов. Все клиенты используют curl_cffi для HTTP-запросов с возможностью имперсонации браузерных TLS-фингерпринтов.

OnlySQ

Клиент API OnlySQ для генерации текста и изображений.

from neogram import OnlySQ

ai = OnlySQ(key="your-api-key")

__init__(key: str)

Параметр Тип Описание
key str API-ключ OnlySQ (получить: https://my.onlysq.ru/)

get_models(modality, can_tools, can_think, can_stream, status, max_cost, return_names) -> List[str]

Получает и фильтрует доступные модели OnlySQ.

Параметр Тип По умолчанию Описание
modality Optional[Union[str, List[str]]] None Модальность модели (фильтр)
can_tools Optional[bool] None Поддержка tool calling
can_think Optional[bool] None Поддержка режима размышлений
can_stream Optional[bool] None Поддержка стриминга
status Optional[str] None Статус модели
max_cost Optional[float] None Максимальная стоимость
return_names bool False Возвращать имена вместо ключей

generate_answer(model, messages, timeout) -> str

Генерация текстового ответа. Автоматический retry (3 попытки) при серверных ошибках 5xx с exponential backoff.

Параметр Тип По умолчанию Описание
model str "gpt-5.2-chat" Имя модели
messages Optional[List[dict]] None Список сообщений (обязательный)
timeout int 120 Таймаут запроса (секунды)

Возвращает: строку с текстом ответа или строку с ошибкой ("Error: ...").

generate_image(model, prompt, ratio, filename) -> bool

Генерация изображения.

Параметр Тип По умолчанию Описание
model str "flux" Имя модели генерации
prompt Optional[str] None Текстовый промпт (обязательный)
ratio str "16:9" Соотношение сторон
filename str "image.png" Имя файла для сохранения

Возвращает: True при успешной генерации и сохранении, False при ошибке.


Deef

Набор утилит: перевод, сокращение ссылок, фоновые задачи, запросы к Perplexity AI, Toolbaz и DeepInfra.

from neogram import Deef

deef = Deef()

translate(text, lang) -> str

Перевод текста через Google Translate (мобильная версия).

Параметр Тип По умолчанию Описание
text Optional[str] None Текст для перевода
lang str "en" Целевой язык

short_url(long_url) -> str

Сокращение ссылки через clck.ru.

Параметр Тип По умолчанию Описание
long_url Optional[str] None Длинная ссылка

run_in_bg(func, *args, **kwargs) -> threading.Thread

Запускает функцию в фоновом daemon-потоке. Возвращает объект Thread. Ошибки внутри функции логируются, но не пробрасываются.

encode_base64(path) -> Optional[str]

Кодирует содержимое файла в base64-строку.

Параметр Тип Описание
path Optional[str] Путь к файлу (обязательный)

perplexity_ask(prompt, model) -> dict

Запрос к Perplexity AI через SSE (Server-Sent Events). Автоматически получает конфигурацию моделей, выбирает подходящую и парсит потоковый ответ.

Параметр Тип По умолчанию Описание
prompt Optional[str] None Текст запроса (обязательный)
model str "auto" Название модели (например "o3pro", "turbo", "auto")

Возвращает:

  • При успехе: {"text": "ответ", "urls": ["url1", ...]}
  • При ошибке: {"text": "Error", "urls": []}

toolchat(prompt, model) -> str

Генерация ответа через Toolbaz. Автоматически получает токен и отправляет запрос.

Параметр Тип По умолчанию Описание
prompt Optional[str] None Текст запроса (обязательный)
model str "toolbaz-v4.5-fast" Название модели

Доступные модели: gemini-3-flash, gemini-3.1-flash-lite, gemini-2.5-pro, gemini-2.5-flash, deepseek-v3.1, deepseek-v3, deepseek-r1, gpt-5.2, gpt-5, gpt-oss-120b, o3-mini, gpt-4o-latest, claude-sonnet-4, grok-4-fast, toolbaz-v4.5-fast, toolbaz-v4, Llama-4-Maverick

deepinfra(messages, model, temperature, max_tokens, timeout) -> dict

Чат-запрос к DeepInfra API.

Параметр Тип По умолчанию Описание
messages List[dict] Список сообщений в формате OpenAI
model str "zai-org/GLM-5.1" Идентификатор модели
temperature float 0.7 Температура генерации (0.0–1.0)
max_tokens int 4000 Максимальное число токенов в ответе
timeout int 30 Таймаут запроса (секунды)

Возвращает: dict — JSON-ответ от DeepInfra при успехе, {"error": "..."} при ошибке.


Qwen

Клиент для работы с моделями Qwen через chat.qwen.ai. Поддерживает текст, изображения, поиск, deep research и другие режимы.

from neogram import Qwen

qwen = Qwen()

__init__(proxy: Optional[str] = None)

Параметр Тип По умолчанию Описание
proxy Optional[str] None URL прокси-сервера

fetch_models() -> List[Dict]

Возвращает список доступных моделей с кэшированием (TTL 10 минут). Каждая модель содержит поля: id, name, capabilities (vision, thinking, search), chat_types, thinking_format, is_visitor_active.

chat(model, messages, stream, ctype, size, think) -> Union[str, Iterator]

Чат с моделями Qwen. Поддерживает автоматическую загрузку изображений, смену модели при отсутствии vision-поддержки, и автопереключение режима чата.

Параметр Тип По умолчанию Описание
model str "qwen3.6-plus" Имя модели
messages Optional[List[dict]] None Список сообщений в формате OpenAI
stream bool False True — вернуть итератор чанков, False — полный ответ строкой
ctype str "t2t" Режим чата: t2t, search, t2i, deep_research, artifacts, learn, image_edit
size Optional[str] None Размер для t2i/image_edit (например "16:9", "9:16", "1:1")
think bool True Включить режим размышлений

Возвращает:

  • str — если stream=False
  • Iterator — если stream=True (yield str или dict с type="thinking" / type="image")

Поддерживаемые типы чата (ctype): t2t, search, t2i, deep_research, artifacts, learn, image_edit

Поддержка изображений: Если в последнем сообщении пользователя есть image_url, но модель не поддерживает vision, клиент автоматически переключится на vision-совместимую модель.

Гостевой режим: Клиент автоматически генерирует LZW-сжатые cookies (ssxmod_itna) и получает bx-umidtoken для авторизации запросов без аккаунта. При загрузке изображений используется Alibaba Cloud OSS через STS-токены.


ChatGPT / OpenAI

Универсальный клиент для OpenAI-совместимых API. OpenAI — алиас для ChatGPT.

from neogram import ChatGPT, OpenAI

client = ChatGPT(
    url="https://api.openai.com/v1",
    headers={"Authorization": "Bearer sk-..."},
    impersonate="chrome")

# OpenAI — то же самое
client = OpenAI(
    url="https://api.openai.com/v1",
    headers={"Authorization": "Bearer sk-..."})

__init__(url: str, headers: dict, impersonate: Optional[str] = None)

Параметр Тип По умолчанию Описание
url str Базовый URL API (например https://api.openai.com/v1)
headers dict HTTP-заголовки (обычно Authorization)
impersonate Optional[str] None TLS-фингерпринт для curl_cffi

Поддерживает контекстный менеджер (with ChatGPT(...) as client:).

generate_chat_completion(model, messages, temperature, max_tokens, stream, **kwargs) -> dict

Генерация ответа в чате.

Параметр Тип По умолчанию Описание
model str Имя модели
messages list Список сообщений
temperature Optional[float] None Температура генерации
max_tokens Optional[int] None Максимальное число токенов
stream bool False Потоковый режим

generate_image(prompt, n, size, response_format, **kwargs) -> dict

Генерация изображения.

Параметр Тип По умолчанию Описание
prompt str Текстовый промпт
n int 1 Количество изображений
size str "1024x1024" Размер изображения
response_format str "url" Формат ответа ("url" или "b64_json")

generate_embedding(model, input_data, user, **kwargs) -> dict

Генерация embedding-вектора.

Параметр Тип По умолчанию Описание
model str Имя модели
input_data Union[str, list] Входные данные
user Optional[str] None Идентификатор пользователя

generate_transcription(file, model, language, prompt, response_format, temperature, **kwargs) -> Union[dict, str]

Транскрипция аудио (Speech-to-Text).

Параметр Тип По умолчанию Описание
file BinaryIO Аудиофайл
model str Имя модели
language Optional[str] None Язык аудио
prompt Optional[str] None Подсказка для модели
response_format str "json" Формат ответа
temperature float 0 Температура

generate_translation(file, model, prompt, response_format, temperature, **kwargs) -> Union[dict, str]

Перевод аудио на английский.

Параметр Тип По умолчанию Описание
file BinaryIO Аудиофайл
model str Имя модели
prompt Optional[str] None Подсказка для модели
response_format str "json" Формат ответа
temperature float 0 Температура

get_models() -> dict

Получение списка доступных моделей.


Быстрый старт

Telegram бот (синхронный)

from neogram import Bot

bot = Bot(token="YOUR_BOT_TOKEN")

@bot.message_handler(commands=["start"])
def on_start(message):
    bot.send_message(chat_id=message.chat.id, text="Привет!")

@bot.message_handler(content_types=["text"])
def on_text(message):
    bot.send_message(chat_id=message.chat.id, text=f"Вы написали: {message.text}")

bot.infinity_polling()

Telegram бот (асинхронный)

import asyncio
from neogram import AsyncBot

bot = AsyncBot(token="YOUR_BOT_TOKEN")

@bot.message_handler(commands=["start"])
async def on_start(message):
    await bot.send_message(chat_id=message.chat.id, text="Привет!")

async def main():
    async with bot:
        await bot.infinity_polling()

asyncio.run(main())

AI-генерация текста

from neogram import OnlySQ

ai = OnlySQ(key="your-onlysq-key")
answer = ai.generate_answer(
    model="gpt-5.2-chat",
    messages=[{"role": "user", "content": "Расскажи о Python"}]
)
print(answer)

Qwen чат

from neogram import Qwen

qwen = Qwen()
result = qwen.chat(
    model="qwen3.6-plus",
    messages=[{"role": "user", "content": "Привет!"}]
)
print(result)

Перевод и утилиты

from neogram import Deef

deef = Deef()

# Перевод
translated = deef.translate("Hello world", lang="ru")

# Сокращение ссылки
short = deef.short_url("https://example.com/very/long/url")

# Фоновая задача
thread = deef.run_in_bg(some_function, arg1, arg2)

OpenAI-совместимый API

from neogram import ChatGPT

client = ChatGPT(
    url="https://api.openai.com/v1",
    headers={"Authorization": "Bearer sk-..."}
)

response = client.generate_chat_completion(
    model="gpt-5,5",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response["choices"][0]["message"]["content"])

Версия API

  • Telegram Bot API: 10.0 (константа API_VERSION)
  • Поддерживаются все типы и методы, включая новые возможности: бизнес-подключения, управляемые боты, подарки, уникальные подарки, чек-листы, платные медиа, live photo, direct messages, guest queries и другие

Логирование

Модуль использует стандартный logging.getLogger("neogram"). Настройте уровень логирования для получения отладочной информации:

import logging
logging.basicConfig(level=logging.DEBUG)

Лицензия

Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neogram-10.1.tar.gz (130.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neogram-10.1-py3-none-any.whl (106.4 kB view details)

Uploaded Python 3

File details

Details for the file neogram-10.1.tar.gz.

File metadata

  • Download URL: neogram-10.1.tar.gz
  • Upload date:
  • Size: 130.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for neogram-10.1.tar.gz
Algorithm Hash digest
SHA256 60b74451cb98809a90a11260b84437adb43998e93954b50dbc7ec6cb60b1095e
MD5 47280068648fbe7aed7e0959ef02277e
BLAKE2b-256 f8903b93f36e008cae8dca2ad00967f9cc95b38533356491161cb576af390c7c

See more details on using hashes here.

File details

Details for the file neogram-10.1-py3-none-any.whl.

File metadata

  • Download URL: neogram-10.1-py3-none-any.whl
  • Upload date:
  • Size: 106.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for neogram-10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ff0f260c3fb8b5f6a86ea88ccd8af23e91446f30c5435b1d3e4aa8fcdfba5f9b
MD5 67273b66d3af661b0f373eb89f2d6677
BLAKE2b-256 0aa0a1ddf71edef84dde222f4a2ab65ff5c0f97e56b6cf091b0cc9d59dfb339b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page