JSON文件中的表情符号出现解码错误,py

时间:2020-09-23 10:11:32

标签: python json python-3.x discord 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}}}

这里是response_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))
    

0 个答案:

没有答案