@rodiongoshev

Как исправить часть кода, которая должна отслеживать нажатую реакцию по id?

Данная система нужна для простой системы тикетов. Человек нажимает на реакцию в основном канале и для него создаётся канал для обсуждения.

Полный код :
@bot.event
async def on_raw_reaction_add(payload):
    logchannel = bot.get_channel(846806809435832330)
    reac = [826434357870592060,746008504573100173]
    guild = bot.get_guild(741317239617224764)
    if payload.message_id == 846808287147196437 and payload.emoji.id == 826434357870592060:
        if not payload.member.id in voprosmembers:
            global countervopros
            countervopros += 1
            voprosmembers.append(payload.member.id)
            tickchnl = await bot.fetch_channel(846808169463545856)
            msg = await tickchnl.fetch_message(payload.message_id)
            await msg.remove_reaction(payload.emoji,payload.member)
            mainCategory = discord.utils.get(guild.categories, id=846808468946288671)
            channel2 = await guild.create_text_channel(f"Вопрос discord {payload.member.name}", category = mainCategory)
            role = discord.utils.get(guild.roles,id=741341677855309924)
            await channel2.set_permissions(role,send_messages=True,read_messages=True,read_message_history=True)
            await channel2.set_permissions(payload.member,send_messages=True,read_messages=True,read_message_history=True)
            await channel2.set_permissions(guild.default_role,send_messages=False,read_messages=False,read_message_history=False)
            emb1 = discord.Embed(title='Что это за канал?', description='Здесь ты можешь задать вопрос напрямую команде администрации / модерации discord сервера.. Хочешь получить ответ скорее? Опиши вопрос подробно, понятно и в одном сообщении.', color = 0x2f3136)
            nhtrhtrjtremb1 = discord.Embed(title='Когда мне ответят?', description=" Вопросы и жалобы разбираются в порядке очереди. С полудня и до полуночи за ответами следит бот: если с момента отправки последнего сообщения прошло более 30 минут, а тебе не ответили - можешь упоминуть права доступа проекта. Поэтому, пожалуйста, пиши одним сообщением.", color = 0x2f3136)
            embed3 = discord.Embed(title='', description=':small_red_triangle_down: Кликни на реакцию ниже чтобы закрыть обращение.', color = 0x2f3136)
            await channel2.send(embed=emb1)
            await channel2.send(embed=nhtrhtrjtremb1)
            msgtic = await channel2.send(embed=embed3)
            await msgtic.add_reaction('<:ndd:846801353833185310>')
            delete = await channel2.send(content = f'{payload.member.mention}') # <@&741341677855309924>')
            await delete.delete()
             
            def reaction_check(m):
                return m.message_id == msgtic.id and m.member.guild_permissions.view_audit_log == True and m.emoji.id in reac
            reaction = await bot.wait_for("reaction_add", check=reaction_check)
            if reaction.emoji.id == 846801353833185310:
                embedth = discord.Embed(title='Обращение закрыто', colour=0x2f3136)
                embedth.add_field(name='Закрыл обращение:', value=f'{reaction.member}')
                embedth.add_field(name='Обращение открыто:', value=f'{payload.member}')  
                with open(f"question_discord.txt", "a", encoding='utf8') as f:
                    async for msg12 in channel2.history(limit = 100):
                        f.write(f"{msg12.created_at}:{msg12.author} ({msg12.author.id}): {msg12.content} \n")      
                await logchannel.send(embed=embedth,file=File(f'question_discord.txt'))
                voprosmembers.remove(payload.member.id)
                await channel2.delete()
            os.remove(f'question_discord.txt')    
            await payload.member.send(f'{reaction.member.name} закрыл твое обращение.')
            return
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Потому что должно быть два параметра - reaction и user

https://discordpy.readthedocs.io/en/stable/ext/com...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы