python - Discord.py ctx.guild.edit 有效,但 self.bot.guild.edit 无效?
问题描述
就像标题说的那样,我正在尝试进行公会编辑,但是是在一个事件上。这是我的代码的一部分:
@commands.guild_only()
async def on_ready(self):
server = self.bot.get_guild("serverid")
while True:
await self.bot.guild.edit(guild=server, name="foo")
await asyncio.sleep(1)
await self.bot.guild.edit(guild=server, name="bar")
await asyncio.sleep(1)
我已经使用独立命令对其进行了测试,所以我知道 ctx.guild.edit 可以工作,但我不确定如何让它在事件中工作。
解决方案
您应该edit
直接从Guild
对象调用server
async def on_ready(self):
server = self.bot.get_guild(SERVER_ID)
while server is not None:
await server.edit(name="foo")
await asyncio.sleep(1)
await server.edit(name="bar")
await asyncio.sleep(1)
此外,请确保您将公会的 id 作为 int 而不是字符串传递,并且guild_only
装饰器只能用于命令。
推荐阅读
- react-native - {Flex: 1} 不适用于相对定位
- python - 发送邮件 python asyncio
- mysql - error initializing database (may take a long time) mysql server
- javascript - In JavaScript, why pass the context as an argument to a function call when the context is already determined by who calls it?
- java - AutoCloseable-ish 方法,但仅在 catch 时运行
- android - 在 React Native 应用程序中接收数据通知时未触发“RNFirebaseBackgroundMessage”事件
- java - 使用java提取XML的所有重复元素
- azure-devops - 将用户添加到 Azure DevOps 中的存储库
- java - Caused by: java.lang.NoSuchMethodError: org.glassfish.jersey.message.internal.HeaderUtils.asStringHeadersSingleValue
- powershell - Powershell - 选择字符串(SLS)将一行拆分为多行