Python cog中的discord.py状态

Python cog中的discord.py状态,python,discord.py,Python,Discord.py,我到处找这个问题,但都找不到答案 我刚刚开始学习discord.py,之前对python的了解很少,所以如果这个问题看起来很简单,我很抱歉,我已经用YouTube教程学习了大约12个小时 所以我的问题是如何在一个齿轮内有一个移动的状态?我一直收到一个错误,上面写着“AttributeError:module'discord.ext.commands'没有属性'event'” cog代码是 import discord import os from discord.ext import comma

我到处找这个问题,但都找不到答案

我刚刚开始学习discord.py,之前对python的了解很少,所以如果这个问题看起来很简单,我很抱歉,我已经用YouTube教程学习了大约12个小时

所以我的问题是如何在一个齿轮内有一个移动的状态?我一直收到一个错误,上面写着“AttributeError:module'discord.ext.commands'没有属性'event'”

cog代码是

import discord
import os
from discord.ext import commands
from itertools import cycle

status = cycle(['First status', 'Second status', 'Third status'])

class status(commands.Cog):

    def __init__(self, client):
        self.client = client

        @tasks.loop(seconds=3)
        async def change_status():
            await commands.change_presence(activity=discord.Game(next(status)))

        @commands.event
        async def on_ready():
            change_status.start()
            print('Bot ready')


def setup(client):
    client.add_cog(status(client))

提前感谢您的帮助

经过一番研究,我已经能够修复您遇到的错误。然而,我一直无法真正改变状态;这可能是因为我没有正确使用
change\u presence()
方法。尽管如此,我至少可以帮你摆脱这个错误,你可以从中吸取教训。下面是我在代码中指出的先前错误的合并,以及将消除错误消息的代码

导入不一致
导入操作系统
从discord.ext导入命令、任务
从itertools导入周期
类状态(commands.Cog):
定义初始化(自我,客户机):
self.client=client
self.status=循环([‘第一状态’、‘第二状态’、‘第三状态’]))
@tasks.loop(秒=3.0)
异步def更改_状态(自身):
打印('更改状态')
等待self.client.change_presence(活动=discord.Game(下一步(self.status)))
@commands.Cog.listener()
异步def on_就绪(自):
self.change_status.start()
def设置(客户端):
客户。添加_cog(状态(客户))

导致错误的原因是
@commands.event
不存在。相反,您必须使用
@commands.Cog.listener()
,这就是为什么错误显示
“discord.ext.commands”没有属性“event”
。我发现了一个关于你遇到的相同问题的讨论,而这个人实际上能够解决它,所以我建议你仔细阅读并亲自尝试一下。我将删除我以前的答案,因为这个答案包含了我指出的所有内容。另外,如果您接受这个答案,我将不胜感激,因为它确实消除了您所问的错误。

我找到了答案!以下是最终代码:

导入不一致
导入操作系统
从discord.ext导入命令、任务
从itertools导入周期
类状态(commands.Cog):
定义初始化(自我,客户机):
self.client=client
self.status=循环([‘第一状态’、‘第二状态’、‘第三状态’]))
打印(“cog加载”)
@tasks.loop(秒=3.0)
异步def更改_状态(自身):
等待self.client.change_presence(活动=discord.Game(下一步(self.status)))
@commands.Cog.listener()
异步def on_就绪(自):
等待self.client。等待,直到准备就绪()
self.change_status.start()
def设置(客户端):
客户。添加_cog(状态(客户))

与之前的回答相比,我改变了两件事:首先,需要向后缩进
change\u status
on\u ready
函数,以便将它们从构造函数
类status(commands.Cog)
的缩进块中删除。这将允许函数在加载cog时实际运行。其次,我必须添加
await self.client.wait,直到在
on\u ready
函数的开头添加
on\u ready()
,以便缓存加载完毕。现在应该可以按您的预期工作了。另外,请接受这个答案,而不是我以前的答案,这样其他看到这篇文章的人可以看到这个工作答案。

非常感谢,我非常感谢你的帮助!你实际上是一个活生生的传奇。非常感谢你!哈哈,没问题,祝你好运!