【发布时间】:2021-02-08 20:05:35
【问题描述】:
我正在尝试使用 Discord 机器人多次运行 task.loop,但是由于循环已经在运行,因此这不起作用。
我在another question找到了这个答案:
async def loop(name):
print(name)
names = ["Jon", "Joseph"]
loops = {name: tasks.loop(seconds=10)(name) for name in names}
但是,我想不通。 我不明白如何自动创建一个新循环,这个程序总是出现这个错误:
Traceback (most recent call last):
File "main.py", line 11, in <module>
loops = {name: tasks.loop(seconds=10)(name) for name in names}
File "main.py", line 11, in <dictcomp>
loops = {name: tasks.loop(seconds=10)(name) for name in names}
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/tasks/__init__.py", line 506, in decorator
return Loop(func, **kwargs)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/tasks/__init__.py", line 76, in __init__
raise TypeError('Expected coroutine function, not {0.__name__!r}.'.format(type(self.coro)))
TypeError: Expected coroutine function, not 'str'.
我复制了代码试一试,然后粘贴到一个新程序中,现在看起来像这样:
import discord
from discord.ext import tasks
async def loop(name):
print(name)
names = ["Jon", "Joseph"]
loops = {name: tasks.loop(seconds=10)(name) for name in names}#What exactly does this line do?
我必须改变什么才能让这个错误消失并且循环可以多次执行?
【问题讨论】:
-
伙计们,按 -1 然后甚至没有解释为什么在评论中根本没有帮助。
标签: python-3.x discord.py