Я пытаюсь отправить большой файл с помощью локального сервера API. Но когда файл загружается, я получаю сообщение об ошибке aiogram.Exceptions.TelegramNetworkError: HTTP-клиент говорит: ошибка тайм-аута запроса.
import asyncio
import logging
import sys
import json
from aiogram import Bot, Dispatcher, html
from aiogram.client.default import DefaultBotProperties
from aiogram.client import telegram
from aiogram.enums import ParseMode
from aiogram.filters import CommandStart
from aiogram.types import Message, BufferedInputFile, InputFile, FSInputFile, URLInputFile
from aiogram.client.session.aiohttp import AiohttpSession
with open('secrets.json', 'r') as f:
secrets=json.loads(f.read())
token = secrets['token']
session = AiohttpSession(
api=telegram.TelegramAPIServer.from_base('http://127.0.0.1:4200')
)
dp = Dispatcher()
@dp.message()
async def echo_handler(message: Message) -> None:
"""
Handler will forward receive a message back to the sender
By default, message handler will handle all message types (like a text, photo, sticker etc.)
"""
with open("./storage/Background Main.mov", 'rb') as f:
inputFile=FSInputFile("./storage/Background Main.mov")
await message.answer('sending test')
await message.answer_document(inputFile)
async def main() -> None:
bot = Bot(token=token, default=DefaultBotProperties(parse_mode=ParseMode.HTML), session=session)
await dp.start_polling(bot, polling_timeout=90)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
asyncio.run(main())
Я написал эту небольшую программу, чтобы попытаться воспроизвести ошибку в библиотеке aoigram. Сначала я использовал Telebot. Итак, я просто пытаюсь отправить файл размером 1,5 ГБ. Когда моя программа пытается отправить файл, кажется, что сначала он копируется на локальный сервер, а затем локальный сервер начинает загрузку на сервер Telegram. Я вижу загрузку сети в это время (у меня полоса пропускания 200 Мбит/с). Но через 30-60 секунд возникает ошибка, однако даже после сбоя программы файл загрузится в Telegram и придет в сообщении. Полный код ошибки в Python:
INFO:aiogram.event:Update id=871987320 is not handled. Duration 60500 ms by bot id=8178713988
ERROR:aiogram.event:Cause exception while process update id=871987320 by bot id=8178713988
TelegramNetworkError: HTTP Client says - Request timeout error
Traceback (most recent call last):
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\client\session\aiohttp.py", line 181, in make_request
async with session.post(
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiohttp\client.py", line 1353, in __aenter__
self._resp = await self._coro
^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiohttp\client.py", line 684, in _request
await resp.start(conn)
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiohttp\client_reqrep.py", line 994, in start
with self._timer:
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiohttp\helpers.py", line 713, in __exit__
raise asyncio.TimeoutError from None
TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 309, in _process_update
response = await self.feed_update(bot, update, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 158, in feed_update
response = await self.update.wrap_outer_middleware(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\middlewares\error.py", line 25, in __call__
return await handler(event, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\middlewares\user_context.py", line 56, in __call__
return await handler(event, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\fsm\middleware.py", line 42, in __call__
return await handler(event, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\event\telegram.py", line 121, in trigger
return await wrapped_inner(event, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\event\handler.py", line 43, in call
return await wrapped()
^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 276, in _listen_update
return await self.propagate_event(update_type=update_type, event=event, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 146, in propagate_event
return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 141, in _wrapped
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 166, in _propagate_event
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\event\telegram.py", line 121, in trigger
return await wrapped_inner(event, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\event\handler.py", line 43, in call
return await wrapped()
^^^^^^^^^^^^^^^
File "G:\Python\TelegramProject\timeout_test.py", line 54, in echo_handler
await message.answer_document(inputFile)
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\methods\base.py", line 84, in emit
return await bot(self)
^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\client\bot.py", line 488, in __call__
return await self.session(self, method, timeout=request_timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\client\session\base.py", line 254, in __call__
return cast(TelegramType, await middleware(bot, method))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\client\session\aiohttp.py", line 186, in make_request
raise TelegramNetworkError(method=method, message="Request timeout error")
aiogram.exceptions.TelegramNetworkError: HTTP Client says - Request timeout error
Я использую Win10, аргументы командной строки https://github.com/tdlib/telegram-bot-api: «telegram-bot-api.exe --api-id=ID --api-hash="HASH" --local -p 4200 -s 4201 -c 100 --max-webhook-connections=250 -l log.txt -v 2"
Я попробовал отправить запрос на локальный сервер вручную, и он мне ответил. То есть сервер живой. Если я поставлю -v 2, то это можно будет увидеть в логах. Если я ставлю 3, то файл журнала слишком большой и в нем слишком сложно что-то понять. Журналы
Я пытаюсь отправить большой файл с помощью локального сервера API. Но когда файл загружается, я получаю сообщение об ошибке aiogram.Exceptions.TelegramNetworkError: HTTP-клиент говорит: ошибка тайм-аута запроса. [code]import asyncio import logging import sys import json from aiogram import Bot, Dispatcher, html from aiogram.client.default import DefaultBotProperties from aiogram.client import telegram from aiogram.enums import ParseMode from aiogram.filters import CommandStart from aiogram.types import Message, BufferedInputFile, InputFile, FSInputFile, URLInputFile from aiogram.client.session.aiohttp import AiohttpSession with open('secrets.json', 'r') as f: secrets=json.loads(f.read()) token = secrets['token'] session = AiohttpSession( api=telegram.TelegramAPIServer.from_base('http://127.0.0.1:4200') ) dp = Dispatcher()
@dp.message() async def echo_handler(message: Message) -> None: """ Handler will forward receive a message back to the sender
By default, message handler will handle all message types (like a text, photo, sticker etc.) """ with open("./storage/Background Main.mov", 'rb') as f: inputFile=FSInputFile("./storage/Background Main.mov")
async def main() -> None: bot = Bot(token=token, default=DefaultBotProperties(parse_mode=ParseMode.HTML), session=session) await dp.start_polling(bot, polling_timeout=90) if __name__ == "__main__": logging.basicConfig(level=logging.INFO, stream=sys.stdout) asyncio.run(main()) [/code] Я написал эту небольшую программу, чтобы попытаться воспроизвести ошибку в библиотеке aoigram. Сначала я использовал Telebot. Итак, я просто пытаюсь отправить файл размером 1,5 ГБ. Когда моя программа пытается отправить файл, кажется, что сначала он копируется на локальный сервер, а затем локальный сервер начинает загрузку на сервер Telegram. Я вижу загрузку сети в это время (у меня полоса пропускания 200 Мбит/с). Но через 30-60 секунд возникает ошибка, однако даже после сбоя программы файл загрузится в Telegram и придет в сообщении. Полный код ошибки в Python: [code]INFO:aiogram.event:Update id=871987320 is not handled. Duration 60500 ms by bot id=8178713988 ERROR:aiogram.event:Cause exception while process update id=871987320 by bot id=8178713988 TelegramNetworkError: HTTP Client says - Request timeout error Traceback (most recent call last): File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\client\session\aiohttp.py", line 181, in make_request async with session.post( File "g:\Python\TelegramProject\venv\Lib\site-packages\aiohttp\client.py", line 1353, in __aenter__ self._resp = await self._coro ^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiohttp\client.py", line 684, in _request await resp.start(conn) File "g:\Python\TelegramProject\venv\Lib\site-packages\aiohttp\client_reqrep.py", line 994, in start with self._timer: File "g:\Python\TelegramProject\venv\Lib\site-packages\aiohttp\helpers.py", line 713, in __exit__ raise asyncio.TimeoutError from None TimeoutError
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 309, in _process_update response = await self.feed_update(bot, update, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 158, in feed_update response = await self.update.wrap_outer_middleware( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\middlewares\error.py", line 25, in __call__ return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\middlewares\user_context.py", line 56, in __call__ return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\fsm\middleware.py", line 42, in __call__ return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\event\telegram.py", line 121, in trigger return await wrapped_inner(event, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\event\handler.py", line 43, in call return await wrapped() ^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 276, in _listen_update return await self.propagate_event(update_type=update_type, event=event, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 146, in propagate_event return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 141, in _wrapped ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 166, in _propagate_event ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\event\telegram.py", line 121, in trigger return await wrapped_inner(event, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\dispatcher\event\handler.py", line 43, in call return await wrapped() ^^^^^^^^^^^^^^^ File "G:\Python\TelegramProject\timeout_test.py", line 54, in echo_handler await message.answer_document(inputFile) File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\methods\base.py", line 84, in emit return await bot(self) ^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\client\bot.py", line 488, in __call__ return await self.session(self, method, timeout=request_timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\client\session\base.py", line 254, in __call__ return cast(TelegramType, await middleware(bot, method)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "g:\Python\TelegramProject\venv\Lib\site-packages\aiogram\client\session\aiohttp.py", line 186, in make_request raise TelegramNetworkError(method=method, message="Request timeout error") aiogram.exceptions.TelegramNetworkError: HTTP Client says - Request timeout error [/code] Я использую Win10, аргументы командной строки https://github.com/tdlib/telegram-bot-api: «telegram-bot-api.exe --api-id=ID --api-hash="HASH" --local -p 4200 -s 4201 -c 100 --max-webhook-connections=250 -l log.txt -v 2" Я попробовал отправить запрос на локальный сервер вручную, и он мне ответил. То есть сервер живой. Если я поставлю -v 2, то это можно будет увидеть в логах. Если я ставлю 3, то файл журнала слишком большой и в нем слишком сложно что-то понять. Журналы
Я пытаюсь отправить большой файл с помощью локального сервера API. Но когда файл загружается, я получаю сообщение об ошибке aiogram.Exceptions.TelegramNetworkError: HTTP-клиент говорит: ошибка тайм-аута запроса.
import asyncio
import logging
import...
Внезапно мой предыдущий код больше не работает с 3 мая 2023 года. Я ничего намеренно не менял. Но мой телеграмм-бот больше не отправляет сообщения.
Я думаю, это либо некоторая несовместимость из-за обновления через anaconda-navigator, которое я...
Я пытаюсь написать сценарий Nodejs, используя telegram библиотека (v2.x), чтобы купить подарок Telegram Stars для моей собственной учетной записи пользователя.
Я могу успешно подключиться, войти в систему и получить список доступных подарков,...
У меня есть бот Telegram для сотрудников компании, который позволяет администратору отправлять сообщения всем сотрудникам (более 10 тысяч пользователей). Список всех сотрудников Chat_id хранится в базе данных и с помощью определенной команды...
Я новичок в создании ботов, поэтому я создал очень простой бот Telegram, и он отлично работает, но не могу понять, как заставить бота отправлять сообщения каждые n минут или n часов при запуске команды /start_auto. p>
Я нашел обходной путь с помощью...