Ошибка OSError: [Errno 22] Invalid argument: Telegram bot
Есть телеграм бот написанный на библиотеке aiogram
.
Есть Сервер Linux Ubuntu 22.04
.
Есть Установленный Docker
на этом сервере.
Есть установленный локальный сервер телеграм.
Когда я запускаю бота из Pycharm
на Windows
или запускаю бота через собранный докер образ,
то при попытке отправить файл боту я получаю следующую ошибку:
OSError: [Errno 22] Invalid argument:
'/home/purch_dep/telegram_bot_local_server/7161680398:<somebottoken>/documents/file_8.xlsx'
Traceback (most recent call last):
Здесь еще много всего Traceback
, если нужно его тоже выложу.
Но если я запускаю бота на самом сервер Linux
(без Docker
-a, просто командой python Bot.py
) то проблем нет никаких, все работает абсолютно корректно.
Подозреваю, что проблема может быть в пути к файлу, но куда именно копать не пойму.
Вот сам код кнопки загрузки в боте:
@router.message(FSMAdmin.brands_upload_file)
async def upload_brands_to_db_by_excel(message: types.Message, state: FSMContext):
print(os.getcwd())
if message.content_type != 'document':
await state.set_state(FSMAdmin.brands_upload_file)
await message.answer(f"<b>Я принимаю только файлы.</b>",
parse_mode=ParseMode.HTML, reply_markup=markup_back)
else:
file_name = message.document.file_name
file_extension = '.' + message.document.file_name.split('.')[-1]
if file_extension != '.xlsx':
await message.answer(f"<b>Я ПРИНИМАЮ ТОЛЬКО ФАЙЛЫ В ФОРМАТЕ .xlsx</b>",
parse_mode=ParseMode.HTML, reply_markup=markup_back)
else:
file_id = message.document.file_id
file = await bot.get_file(file_id)
file_path = file.file_path
print(f"File PATH {file_path}")
server_file_name = file_path.split('/')[-1]
server_file_path = file_path.split('/')[:-1]
server_file_path = '/'.join(server_file_path)
print(f"CURR WORK DIR {os.getcwd()}")
await bot.download_file(file_path=f"{file_path}", destination=f"tmp/{file_name}")
await message.answer('<b>БОТ НАЧАЛ ОБРАБАТЫВАТЬ ДАННЫЕ, ОЖИДАЙТЕ...</b>', parse_mode=ParseMode.HTML)
is_added = add_brands_to_db(get_data_from_downloaded_file(file_name, is_truck_brands=True))
if is_added:
clear_folder([file_name], 'tmp/')
clear_folder([server_file_name], f"{server_file_path}")
await message.answer(f"<b>ДАННЫЕ УСПЕШНО ДОБАВЛЕНЫ В БД.</b>\n\n{emoji.emojize(':file_folder:')}"
f" Добавлен документ: <b><i>{file_name}</i></b>", parse_mode=ParseMode.HTML,
reply_markup=markup_add_constants)
await state.clear()
else:
await message.answer(f"<b>ДАННЫЕ НЕ ДОБАВЛЕНЫ, ОБРАТИТЕСЬ К АДМИНИСТРАТОРУ</b>",
parse_mode=ParseMode.HTML, reply_markup=markup_back)
Всем за ранее спасибо!
вот полный Traceback:OSError: [Errno 22] Invalid argument: '/home/purch_dep/telegram_bot_local_server/7161680398:A/documents/file_8.xlsx' Traceback (most recent call last): File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 309, in _process_update response = await self.feed_update(bot, update, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 158, in feed_update response = await self.update.wrap_outer_middleware( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\middlewares\error.py", line 25, in call return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\middlewares\user_context.py", line 56, in call return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\fsm\middleware.py", line 42, in call return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\event\telegram.py", line 121, in trigger return await wrapped_inner(event, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\event\handler.py", line 43, in call return await wrapped() ^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\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 "C:\Program Files\Purchasing_department\QWEP_daily_prices\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 "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 141, in _wrapped return await self._propagate_event( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 174, in _propagate_event response = await router.propagate_event(update_type=update_type, event=event, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\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 "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 141, in _wrapped return await self._propagate_event( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\router.py", line 166, in _propagate_event response = await observer.trigger(event, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\event\telegram.py", line 121, in trigger return await wrapped_inner(event, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\dispatcher\event\handler.py", line 43, in call return await wrapped() ^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\Bot.py", line 422, in upload_brands_to_db_by_excel await bot.download_file(file_path=f"{file_path}", destination=f"tmp/{file_name}") File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\client\bot.py", line 430, in download_file await self.__download_file(destination=destination, stream=stream) File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\client\bot.py", line 379, in __download_file async for chunk in stream: File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiogram\client\bot.py", line 386, in __aiofiles_reader async with aiofiles.open(file, "rb") as f: File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiofiles\base.py", line 98, in aenter self._obj = await self.coro ^^^^^^^^^^^^^^^^ File "C:\Program Files\Purchasing_department\QWEP_daily_prices\venv\Lib\site-packages\aiofiles\threadpool_init.py", line 94, in _open f = yield from loop.run_in_executor(executor, cb) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Python312\Lib\concurrent\futures\thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ OSError: [Errno 22] Invalid argument: '/home/purch_dep/telegram_bot_local_server/7161680398:/documents/file_8.xlsx'