bot离开服务器后,discord.py从json中删除guild

2024-09-29 17:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图公开我的机器人,因此我需要在json中存储几个ID

如果机器人加入公会,它将在json中创建一个条目:

{
    "token": "MY_TOKEN",
    "guilds": {
        "TiLiKas": {
            "rules_message": {
                "rules_id": 780729484931366912
            },
            "ticket_message": {
                "ticket_id": 778567282321391638
            }
        },
        "Darkness": {
            "rules_message": {
                "rules_id": 765132820049428481
            },
            "ticket_message": {
                "ticket_id": 798839023031549962
            }
        },
        "Bot-Test-Server": {
            "rules_message": {},
            "ticket_message": {}
        }
    }
}

如何创建公会信息:

@commands.Cog.listener()
async def on_guild_join(self, ctx):

    default_prefix = "?"

    for guild in self.client.guilds:

        guildName = guild

    with open("data.json", "r") as f:
        data = json.load(f)

        tmpDict = {
            "rules_message": { },
            "ticket_message": { }
        }

        data["guilds"][str(guildName)] = tmpDict

        with open("data.json", "w") as f:
            json.dump(data, f, indent=4)

问题是,如果bot被服务器踢出,则条目仍保留在json中

如果机器人离开公会,我如何从json中删除服务器?

谢谢你的帮助


Tags: selfidjsonmessagedatawith机器人条目
1条回答
网友
1楼 · 发布于 2024-09-29 17:22:26

正如我在评论中所说的,有一个on_guild_remove事件,您可以从那里的json文件中删除公会

@commands.Cog.listener()
async def on_guild_remove(self, guild):
    with open("data.json", "r") as f:
        data = json.load(f)

    del data["guild"][str(guild)]
 
    with open("data.json", "w") as f:
        json.dump(data, f, indent=2)

参考资料:

相关问题 更多 >

    热门问题