Где ошибка в коде дискорд бота на Питоне?
@bot.command()
def Stuff (message):
import random
imgs = [
"img_url",
"img_url"
]
send(random.choice(imgs))
При запуске вот такая ошибка:
PS D:\Bots> python bot.py
Traceback (most recent call last):
File "bot.py", line 13, in <module>
@bot.command()
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 1262, in decorator
result = command(*args, **kwargs)(func)
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 1433, in decorator
return cls(func, name=name, **attrs)
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 217, in __init__
raise TypeError('Callback must be a coroutine.')
TypeError: Callback must be a coroutine.
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
В функцию передается обязательный аргумент, содержащий контекст выполнения команды. Правильнее назвать его не просто message, а context или ctx, как в документации.
У этого контекста и вызывается метод send().
И нет необходимости импортировать библиотеку random каждый раз при вызове команды.
Также функция должна быть асинхронной, то есть не просто def, а async def
import random
@bot.command()
async def Stuff(ctx):
imgs = [
"img_url",
"img_url"
]
await ctx.send(random.choice(imgs))