首页 > 解决方案 > 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 可以工作,但我不确定如何让它在事件中工作。

标签: pythonpython-3.7discord.pydiscord.py-rewrite

解决方案


您应该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装饰器只能用于命令。


推荐阅读