首页 > 解决方案 > JSON 文件 Discord 中的表情符号解码错误,py

问题描述

我实现了一个反应角色系统,出于某种奇怪的原因,机器人可以检索解码的表情符号(使用 emojis.decode(emoji) 进行解码),有时会出现 KeyError。

这是 JSON 文件:

{"663841143833886731": {"758244108757630996": {"\ud83c\uddf4": {"role": 758248481004978198}, "\ud83c\uddf2": {"role": 663836646613188619}, "\ud83c\uddf7": {"role": 758248684650758144}, "\ud83c\uddf0": {"role": 663836435878772737}}, "758245355028217866": {"emoji": "\ud83c\udde7", "role": 695609798137479249, "\ud83c\uddf9": {"role": 663836545484062722}, "\ud83c\udde9": {"role": 663836591483256842}}, "758246129187422248": {"emoji": "\ud83c\udde9", "role": 745956069720981504, "\ud83c\udde7": {"role": 745956316912287834}, "\ud83c\uddf5": {"role": 745956478254317578}, "\ud83c\uddf8": {"role": 745956546441379903}, "\ud83c\uddea": {"role": 745956631241687122}}, "758247160978079745": {"emoji": "\ud83c\udde9", "role": 758262018456289321}}}

这是reaction_add的监听器:

@commands.Cog.listener()
async def on_raw_reaction_add(self, payload):
    if self.check_if_bot(payload.member):
        with open(os.path.join(self.DATA_PATH, "reactionrole.json"), "r") as temp:
            role_assigment = json.load(temp)

        guild = self.bot.get_guild(payload.guild_id)
        user = guild.get_member(payload.user_id)
        msg_id = payload.message_id
        emoji = str(emojis.decode(str(payload.emoji)))
        print("Decoded: ", emoji)

        if self.allowed_channel(role_assigment, payload.channel_id):
            role_to_assign = guild.get_role(role_assigment[str(payload.channel_id)][str(msg_id)][emoji]["role"])
            await user.add_roles(role_to_assign)
            await user.send("Dir wurde die Role {} hinzugefügt!".format(role_to_assign.name))
    

标签: pythonjsonpython-3.xdiscorddiscord.py

解决方案


推荐阅读