I need to implement multiple file uploads in one message. I couldn't find how to do it in the official documentation.
For example, I implemented only loading one file at a time and storing them in a separate directory.
Now the code works in such a way that it saves files in a directory and writes the file number, so I understand how many are saved.
import os
import asyncio
import logging
from aiogram.types import Message
from aiogram import Bot, Dispatcher, types, Router, F
from aiogram.types import BotCommand, BotCommandScopeDefault
from aiogram.filtersmand import Command
router: Router = Router()
logging.basicConfig(level=logging.INFO)
bot = Bot(token="")
dp = Dispatcher()
EXTENSION = '<>'
FILE = ''
counter_files = 0
UPLOAD_FOLDER = "uploads/"
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@dp.message(Command("start"))
async def cmd_start(message: types.Message):
await message.answer("Hello!")
@dp.message(Command("check_status"))
async def cmd_start(message: types.Message):
await message.answer("File: " + FILE)
@dp.message(Command("message"))
async def cmd_start(message: types.Message):
await message.answer("Message: " + message.text)
@dp.message(F.document)
async def get_doc(message: types.Message, bot: Bot):
global FILE, counter_files
file = await bot.get_file(message.document.file_id)
file_path = file.file_path
if file_path.endswith(EXTENSION):
destination = os.path.join(UPLOAD_FOLDER, f'file_{counter_files}.{EXTENSION}')
await bot.download_file(file_path, destination)
FILE = destination
counter_files += 1
await message.answer(f"Your {FILE} is success downloaded!")
else:
await message.answer(f"Format is wrong! Download {EXTENSION}")
async def set_commands():
commands = [BotCommand(command='start', description='start chating'),
BotCommand(command='check_status', description='check status'),
BotCommand(command='message', description='your message'),]
await bot.set_my_commands(commands, BotCommandScopeDefault())
async def main():
await set_commands()
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())