Проверить соответствие всех моделей с Telegram Bot API
Провести ревизию всех моделей *Request и *Response на соответствие официальной документации Telegram Bot API.
Многие модели содержат неполные или упрощенные схемы, не охватывающие все параметры, поддерживаемые API.
В таблице указана часть проблем, обнаруженных в моделях. Другие потенциальные несоответствия (отсутствие опциональных полей, устаревшие поля, неправильные типы и значения по умолчанию) могут быть не учтены.
Обнаруженные расхождения:
| Модель | Поле | Проблема | Правильное значение / поведение |
|---|---|---|---|
| SendMessageRequest | chat_id |
Только int, должно быть int или str | int или str |
| SendMessageRequest | message_thread_id |
Неверный тип: bool или None | int или None |
| SendMessageRequest | disable_web_page_preview |
Удалено из API, заменено на link_preview_options
|
Удалить или заменить |
| SendMessageRequest | allow_sending_without_reply |
Устарело, входит в reply_parameters
|
Удалить |
| SendMessageRequest | reply_parameters |
Отсутствует | Добавить: ReplyParameters
|
| SendLocationRequest | chat_id |
Только int | int или str |
| SendLocationRequest | heading |
Неверный диапазон: ge=0, должно быть от 1 до 360 | ge=1, le=360 |
| SendLocationRequest | reply_parameters |
Отсутствует | Добавить |
| SendBytesPhotoRequest | chat_id |
Только int | int или str |
| SendBytesPhotoRequest | reply_to_message_id |
Устарело | Удалить |
| SendBytesPhotoRequest | allow_sending_without_reply |
Устарело | Удалить |
| SendBytesPhotoRequest | reply_parameters |
Отсутствует | Добавить |
| SendBytesPhotoRequest | filename |
Внутреннее поле, не должно сериализоваться в payload | Исключить при model_dump
|
| SendUrlPhotoRequest | chat_id |
Только int | int или str |
| SendUrlPhotoRequest | reply_to_message_id |
Устарело | Удалить |
| SendUrlPhotoRequest | allow_sending_without_reply |
Устарело | Удалить |
| SendUrlPhotoRequest | reply_parameters |
Отсутствует | Добавить |
| SendUrlPhotoRequest | filename |
Не используется в JSON | Удалить |
| SendBytesDocumentRequest | chat_id |
Только int | int или str |
| SendBytesDocumentRequest | reply_to_message_id |
Устарело | Удалить |
| SendBytesDocumentRequest | allow_sending_without_reply |
Устарело | Удалить |
| SendBytesDocumentRequest | reply_parameters |
Отсутствует | Добавить |
| SendBytesDocumentRequest | filename |
Не должно попадать в form_fields
|
Исключить через exclude
|
| SendBytesDocumentRequest |
thumbnail тип |
Смешанная логика | bytes или None (str — только в JSON) |
| SendBytesDocumentRequest |
thumbnail обработка |
Не добавляется в files
|
Добавить в files
|
| SendUrlDocumentRequest | chat_id |
Только int | int или str |
| SendUrlDocumentRequest | reply_to_message_id |
Устарело | Удалить |
| SendUrlDocumentRequest | allow_sending_without_reply |
Устарело | Удалить |
| SendUrlDocumentRequest | reply_parameters |
Отсутствует | Добавить |
| SendUrlDocumentRequest | filename |
Не используется в JSON | Удалить |
| SendUrlDocumentRequest |
thumbnail тип |
bytes невалиден в JSON | str или None |
| DeleteMessageRequest | chat_id |
Только int | int или str |
| EditMessageTextRequest | chat_id |
Используется StrictInt/StrictStr/None, избыточно | int или str |
| EditMessageTextRequest | disable_web_page_preview |
Устарело | Удалить или заменить |
| CHAT_ID_REGEXP | — | Не допускает @channelusername
|
Обновить для поддержки @username
|
| EditMessageReplyMarkupRequest | chat_id |
То же | int или str |
| EditMessageCaptionRequest | chat_id |
То же | int или str |
| EditBytesMessageMediaRequest | chat_id |
То же | int или str |
| EditUrlMessageMediaRequest | chat_id |
То же | int или str |
| SetWebhookRequest | url |
Можно усилить валидацию | HttpUrl |
| SetWebhookRequest | ip_address |
Можно усилить валидацию | IPvAnyAddress |
| SetWebhookRequest | secret_token |
Можно усилить валидацию | max_length=256, regex |
| AnswerCallbackQueryRequest | url |
Можно усилить валидацию | HttpUrl |
| AnswerCallbackQueryRequest | show_alert |
Тип bool или None, но None излишне | bool (по умолчанию False) |
| AnswerCallbackQueryRequest | cache_time |
Тип int или None, но None излишне | int = 0 |
| GetUpdatesRequest | timeout |
Тип int или None, но None излишне | int = Field(default=0, ge=0) |
| GetUpdatesRequest | drop_pending_updates |
Отсутствует | Добавить: bool или None |
Edited by Павел Колотов