我希望使用cogs对命令进行分类,并且不必重新启动整个机器人来更新某些命令
因此,我添加了cogs并添加了我的第一个命令,一切都正常:命令运行了,我可以更新并重新加载它,而无需重新启动我的bot,但我注意到async def coroutine无论如何都没有运行
我尝试使用asyncio.run()而不是wait,但没有帮助。我将协同程序和命令添加回主文件,一切正常。我没有收到任何错误消息,它只是拒绝运行。我想知道我做错了什么,因为我对cogs很陌生
Cogs文件:
class MembersCog(commands.Cog):
def __init__(self, client):
self.client = client
async def printfunc(self):
print("coroutine just ran") #This never runs.
@commands.command()
async def test(self, ctx):
print("command just ran")
await printfunc()
def setup(client):
client.add_cog(MembersCog(client))
在类中定义方法时,您需要通过
self
关键字访问它,这样程序就知道它在引用自己类中的方法(有点过分/不必要的方法,但它解释了概念)类内调用方法的示例:
然后使用这个类:
如果您将
self.add_miles(x)
更改为add_miles(x)
并运行c.drive()
方法,它将抛出一个NameError
异常,因为它不知道add_miles()
是什么相关问题 更多 >
编程相关推荐