Я пишу бота Discord, и у меня проблемы с тестированием асинхронной функции. Я хочу проверить это с помощью exec()
, но не могу правильно вызвать функцию.
Я пробовал exec () - использовать функцию как с ожиданием, так и без него. Я просмотрел документацию по API , но это не дало мне глубокого понимания моей проблемы. Используя eval()
, он возвращает объект сопрограммы, но не выполняет его.
Exec () выполняется путем обработки сообщения с помощью асинхронной функции.
async def f(message)
#other stuff
...
...
exec(strip2(message.content, "exec"))
return #exec doesn't return anything, so we return to not send an empty message
Функция async выглядит примерно так:
async def move_message(message_id, old_channel, new_channel):
"""
check the 20 latest messages in old_channel, and if
one of them matches the id, move it to new_channel
"""
print("ok")
async for message in old_channel.history(limit=20):
#do stuff
...
print("good!")
Без await выдает следующую ошибку: ...\commands.py:1: RuntimeWarning: coroutine 'move_message' was never awaited
С await выдает SyntaxError
:
File "<string>", line 1
await move_message(message, message.channel, "admin-test-playground")
^
SyntaxError: invalid syntax
Я хочу, чтобы функция выполнялась правильно, хоть что-то печатала. Но ни "хорошо", ни "хорошо!" печатает с тем, что у меня есть сейчас.