feat: добавлены новые примеры с вносом небольших правок#154
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Pull request overview
PR добавляет и обновляет примеры использования SDK в examples/ (в т.ч. скачивание медиа, ручная подача событий, управление приватным чатом), а также правит логику скачивания файлов, чтобы download_file/_fetch_content_stream не падал на валидном aiohttp.ClientResponse с closed=True, если response не был явно released.
Changes:
- Добавлены новые примеры
12_*,13_*,14_*и обновлёнexamples/README.md(структурирование/нумерация). - Обновлён пример
05_media_bot.py(использованиеlogo.png, отправка фото из bytes черезInputMediaBuffer, action для аудио). - Изменена проверка в
_fetch_content_streamсresponse.closedнаresponse._releasedи расширены тесты на этот кейс.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
maxapi/connection/base.py |
Меняет условие, при котором скачивание запрещено (ориентируется на response._released). |
tests/test_download_file.py |
Добавляет/уточняет тесты на чтение stream при closed=True и запрет чтения при released=True. |
examples/README.md |
Добавляет разделы для новых примеров и правит оглавление. |
examples/11_download_urls.py |
Уточняет инструкции запуска и улучшает извлечение URL вложений (в т.ч. для видео). |
examples/12_private_chat_management_bot.py |
Новый пример управления участниками приватного чата и чтения Chat.link. |
examples/13_manual_events_bot.py |
Новый пример ручной подачи событий в Dispatcher без polling/webhook. |
examples/14_download_media_bot.py |
Новый минимальный пример скачивания медиа (file/bytes/BytesIO). |
examples/05_media_bot.py |
Перевод примера на logo.png, буферную отправку и корректный SenderAction для аудио. |
Comments suppressed due to low confidence (1)
tests/test_download_file.py:1033
- После изменения сообщения в
_fetch_content_streamтест нужно синхронизировать с новым текстомDownloadFileError, иначе он будет падать по несовпадению regex.
with pytest.raises(
DownloadFileError, match="response соединение закрыто"
):
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| if getattr(response, "_released", False) is True: | ||
| raise DownloadFileError("response соединение закрыто") |
There was a problem hiding this comment.
При closed не работало =(
Проверю повторно
| assert response.closed is True | ||
| assert response._released is False |
closes #73, closes #78
Что изменено
examples/:12_private_chat_management_bot.py— управление участниками закрытого чата: список, добавление, удаление, блокировка, чтениеChat.link.13_manual_events_bot.py— ручная подача событий вDispatcherбез polling/webhook.14_download_media_bot.py— минимальный пример скачивания медиа черезdownload_file,download_bytes,download_bytes_io.examples/README.md: добавлены разделы для новых примеров и исправлена нумерация.05_media_bot.py:/photoи/uploadиспользуютlogo.png;/bufferотправляетlogo.pngиз bytes черезInputMediaBuffer;SenderAction.SENDING_AUDIO.{"photos": {...}},{"photos": "..."}и{"token": "..."}.download_fileбольше не падает на валидном aiohttp response сclosed=True, если response не был явно released.