Python cog中的discord.py状态
我到处找这个问题,但都找不到答案 我刚刚开始学习discord.py,之前对python的了解很少,所以如果这个问题看起来很简单,我很抱歉,我已经用YouTube教程学习了大约12个小时 所以我的问题是如何在一个齿轮内有一个移动的状态?我一直收到一个错误,上面写着“AttributeError:module'discord.ext.commands'没有属性'event'” cog代码是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
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()
,以便缓存加载完毕。现在应该可以按您的预期工作了。另外,请接受这个答案,而不是我以前的答案,这样其他看到这篇文章的人可以看到这个工作答案。非常感谢,我非常感谢你的帮助!你实际上是一个活生生的传奇。非常感谢你!哈哈,没问题,祝你好运!