I’m making a telegram bot which allows users to upload files to cloud drive. When user sends file, bot replies with inline keyboard with two options of destination folders on my cloud drive. When users clicks on button I save file on my computers ssd, then I need to get this file’s name in my callback function. I tried using Finite State Machine and CallbackData, but didn’t succeed. Here’s some code of mine
@dp.message_handler(content_types=types.ContentTypes.DOCUMENT)
async def handle_document(message: types.Message):
with open('verificated_users', 'r') as f:
verificated_users = f.readlines()
if str(message.from_user.id) in list(map(lambda x: x.strip(), verificated_users)):
await message.document.download(f'tmp_files/{message.document.file_name}')
await message.reply('Choose destination folder:', reply_markup=get_keyboard_markup())
else:
await message.answer('You don`t have access to bot')
@dp.callback_query_handler(lambda x: x.data.startswith('folder'))
async def keyboard_callback_handler(query: types.CallbackQuery):
selected_folder = FOLDER1 if query.data == 'folder1' else FOLDER2
file_name = <???>
upload_file_to_disk(file_name=file_name, folder=selected_folder)
await query.message.reply(f'Chosen folder: {selected_folder}.')