20
Июл
2021

Почему то не находит эмоции и выдает ошибку KeyError

Здраствуйте!
Код который выдает роли по нажатии реакции. Выдача работает нормально, но вот забирание роли почему-то работает каряво, некоторые роли забирает, а некоторым выдает ошибку KeyError, хотя в конфиге все правильно.

Код:

@commands.Cog.listener()
async def on_raw_reaction_remove(self, payload: discord.RawReactionActionEvent):

    channel: discord.TextChannel = self.bot.get_channel(int(config.channel))
    message = await channel.fetch_message(int(config.message))
    member: discord.Member = utils.get(message.guild.members, id = payload.user_id)

    try:
        emoji = str(payload.emoji)
        role_remove: discord.Role = utils.get(message.guild.roles, id = config.ROLES[emoji])

        await member.remove_roles(role_remove)
    except Exception as e:
        logging.exception(repr(e))

Ошибка:

2021-07-20T06:15:27.370651+00:00 app[worker.1]: Ignoring exception in on_raw_reaction_remove
2021-07-20T06:15:27.371905+00:00 app[worker.1]: Traceback (most recent call last):
2021-07-20T06:15:27.371988+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/client.py", line 343, in _run_event
2021-07-20T06:15:27.371989+00:00 app[worker.1]: await coro(*args, **kwargs)
2021-07-20T06:15:27.372024+00:00 app[worker.1]: File "/app/cogs/addrole.py", line 48, in on_raw_reaction_remove
2021-07-20T06:15:27.372025+00:00 app[worker.1]: role_remove: discord.Role = utils.get(message.guild.roles, id = str(config.ROLES[emoji]))
2021-07-20T06:15:27.372094+00:00 app[worker.1]: KeyError: '<:cpp:866776827762442240>'

Config.py:

import os

ROLES = {
    '<a:python:866776924147286027>': 865971770422460417 ,# python
    '<:gamedev:866780079370665994>': 865972670780801084, #gamedev
    '<a:rubby:866776968023244800>': 866780399517302805, # rubby
    '<a:cpp:866776827762442240>': 865971579573633047, #c++
    '🌳': 865971308826198057, #3d designer
    '🛠️': 865973110264037416, #soft dev
    '<a:csharp:866777010294226964>': 865973760530841630, #csharp
    '<a:javascript:866777189889343540>': 865971804777742346, #javascript
    '<:java:866781829495652403>': 865971859249037352, #java
    '<a:sql:866777146273038387>': 865972812714868746, #sql
    '<a:blender:866784801838989392>': 865972970644439050, #blender
    '🎨': 865973455442673674, #3dmax
    '🎛️': 865972226539651114, #unity
    '⚙️': 865971897044697098, #unrealungine
    '<a:php:866777065688924170>': 866773847498555422, #php
    '🛡️': 866637025977171989, #html\css
    '🖥️': 865971128799330324, #Верстальщик
    '🕸️': 865971415353393162, #бекенд
    '🤖': 865972048832233473 #arduino
}

r = [
    '🖥️', 
    '🕸️',
    '<:gamedev:866780079370665994>',
    '🌳',
    '🛠️',
    '🤖',
    '<a:cpp:866776827762442240>',
    '<a:csharp:866777010294226964>',
    '<a:python:866776924147286027>',
    '<a:javascript:866777189889343540>',
    '<:java:866781829495652403>',
    '<a:sql:866777146273038387>',
    '<a:blender:866784801838989392>',
    '🎨',
    '🎛️',
    '⚙️',
    '🛡️',
    '<a:php:866777065688924170>',
    '<a:rubby:866776968023244800>'
]

message = os.environ.get('MESSAGE')
channel = os.environ.get('CHANNEL')

Роли введите сюда описание изображения

Источник: https://ru.stackoverflow.com/questions/1306912/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D1%82%D0%BE-%D0%BD%D0%B5-%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B8%D1%82-%D1%8D%D0%BC%D0%BE%D1%86%D0%B8%D0%B8-%D0%B8-%D0%B2%D1%8B%D0%B4%D0%B0%D0%B5%D1%82-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D1%83-keyerror

Тебе может это понравится...

Добавить комментарий