В чем вся проблемка, я хочу обойти авторизацию в терминале при создании TelegramClienta, пробую, что бы ввод кода выполнялся через телеграмм бота.
Вот мой код обработчика состояния:
@dp.message_handler(state=AccountManagementStateFSM.auth_account_code)
async def process_auth_code(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['auth_code'] = message.text
# Помещаем код авторизации в асинхронную очередь
await shared.auth_code_queue.put(data['auth_code'])
print(f"Код добавлен в auth_code_queue: {data['auth_code']}")
await state.finish()
await message.answer('Спасибо! Код авторизации получен.')
Далее, код я передаю в асинхронную очередь и получаю этот код в файле shared:
import asyncio
auth_code_queue = asyncio.Queue()
async def code_callback():
code = await auth_code_queue.get()
print(f"Received auth code in code_callback: {code}")
return code
И затем хочу использовать в своем основном скрипте, а именно передавая функцию напрямую в которой я возвращаю код:
client_obj = TelegramClient(phone_number, api_id, api_hash)
await client_obj.start(phone=phone_number, code_callback=lambda: code_callback())
Но в чем суть проблемки, код видимо не доходит до моей конечной станции, потому-что я пробовал делать отладки и если на первом этапе код передается в асинхронную очередь, то дальше ничего не происходит и тем самым он не подставляется для авторизации, в чем может быть проблема или же кто-то знает как иначе обойти эту авторизацию, что бы не вводить код вручную в терминале?