ERROR:asyncio:Task was destroyed but it is pending! (Telethon | Asyncio)

_Rem1X_

Новичок
Автор темы
3
0
Я пытаюсь запрограммировать телеграм-бота, который получает доступ к клиенту Telegram, используя библиотеку Telethon. При запуске кода процедура Telegram Auth запускается через терминал. Пытался через Future обойти, чтобы я мог войти в клиент с помощью Python (без необходимости вводить в терминале), но столкнулся с проблемой "Задача была уничтожена, но она ожидает выполнения!", голову ломаю, но не могу найти причину ошибки.
Сам код:

handlers.py:
@router.message(InputEditActiveAcc.password)
async def edit_acc_time(msg: Message, state: FSMContext):
    await state.update_data(password=msg.text)
    await msg.delete()
    await editacc_message.edit_text("Укажите интервал:")
    await state.set_state(InputEditActiveAcc.time)
   
@router.message(InputEditActiveAcc.time)
async def edit_acc_done(msg: Message, state: FSMContext):
    global time, basedata
   
    time = 0 if isActive else msg.text
    await state.update_data(time=int(time))
    await msg.delete()
    data = await state.get_data()
    await state.clear()
   
    user_id = msg.from_user.id
    user = await db.get_user(user_id)
    db_data = user[2]
   
    data_list = db_data.split("\n")
    for item in data_list:
        basedata = json.loads(item)
        if basedata['number'] == data['edit_number']:
            future_code = Future()
            events[user_id] = future_code

            asyncio.create_task(
                create_session(
                    basedata["client_name"],
                    data['edit_number'],
                    data["password"],
                    basedata['api_id'],
                    basedata['api_hash'],
                    future_code
                ))
            break

    await editacc_message.edit_text(
        text="""
    ⚙️ <b>На аккаунт пришел код!</b>
    [1] Вводите код по одной цифре в каждом сообщении:
    """
    )
    await state.set_state(ClientCode.get_code_1)

@router.message(ClientCode.get_code_1)
. . .

@router.message(ClientCode.get_code_5)
async def generate_code5(msg: Message, state: FSMContext):
    await state.update_data(get_code_5=msg.text)
    data = state.get_data()
    await state.clear()
    await process_create(msg=msg, data=data)

async def process_create(msg: Message, data):
    num_1 = data["get_code_1"]
    num_2 = data["get_code_2"]
    num_3 = data["get_code_3"]
    num_4 = data["get_code_4"]
    num_5 = data["get_code_5"]
    code = num_1 + num_2 + num_3 + num_4 + num_5

    user_id = msg.from_user.id
    future_code = events.get(user_id)

    if future_code:
        future_code.set_result(code)
        del events[user_id]
    else:
        await editacc_message.edit_text("❌ <b>Ошибка:</b> событие не найдено.")
        return

    new_data = json_deactive(basedata, basedata['number'], int(time))
    await db.update_data(user_id, new_data)
   
    await editacc_message.edit_text(f"Статус аккаунта изменён!")

async def create_session(client_name, phone, password, api_id, api_hash, future_code):

    client = TelegramClient(client_name, api_id, api_hash)
    await client.connect()

    if not await client.is_user_authorized():
        try:
            await client.send_code_request(phone)
            code = await asyncio.wait_for(future_code, timeout=300)
            try:
                await client.sign_in(
                    phone=phone,
                    code=code,
                )
                await client.disconnect()
            ...

Код ошибки:

Ошибка:
ERROR:asyncio:Task was destroyed but it is pending!
task: <Task pending name='Task-26' coro=<create_session() done, defined at c:\Users\meles\Projects\TGBot\handlers.py:321> wait_for=<Future cancelled>>