Что делать, если возникает ошибка при использовании async def в библиотеке aiogram версии 3.x?

Как правильно вызвать функцию `get_cards` из другого модуля в `main` с использованием библиотеки aiogram 3x и почему возникает ошибка в данном коде?
  • 21 февраля 2024 г. 9:58
Ответы на вопрос 2
Для решения проблемы с ошибкой при использовании async def в библиотеке aiogram версии 3.x, необходимо удостовериться, что все функции и методы, к которым вы обращаетесь с помощью async def, также являются асинхронными. Также убедитесь, что вы используете текущую версию библиотеки aiogram и импортируете его правильно в свой код.

Чтобы вызвать функцию `get_cards` из другого модуля в `main` с использованием библиотеки aiogram 3.x, вам потребуется создать объект класса `Dispatcher` и зарегистрировать обработчик события, который вызовет вашу функцию `get_cards`. 

Пример кода для вызова функции `get_cards` из другого модуля в `main` с использованием библиотеки aiogram 3.x:

```python
from aiogram import Bot, Dispatcher, types
from aiogram.types import Message
from aiogram.utils import executor
from other_module import get_cards

API_TOKEN = 'your_api_token'

# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

# Register a handler for the /get_cards command
@dp.message_handler(commands=['get_cards'])
async def get_cards_handler(message: Message):
    cards = get_cards()
    await message.answer(f'{cards}')

# Start the bot
if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
```

В данном коде создается объект класса `Dispatcher`, затем регистрируется обработчик команды `/get_cards`, который в свою очередь вызывает функцию `get_cards` из другого модуля и отправляет результат пользователю. Ошибка могла возникнуть из-за неправильного импорта или вызова функции в вашем коде.
Вот сама ошибка(походу что-то я сделал не так и огроомная ошибка поменялась в маленькую):
C:\Users\akrav\Desktop\машынки\main.py:183: RuntimeWarning: coroutine 'get_cards' was never awaited
get_cards(message)

Ну там как бы написано...

# def new_card(message: types.Message):
    # get_cards(message)

async def card_handler(message: types.Message):
    await get_cards(message)

P.S. вероятнее всего, там дальше возникнет проблема с декоратором, но это уже другой вопрос...
Похожие вопросы