Задать вопрос
@MegaEdwards

Что не так с кодом?

Не нужно отправлять меня читать документации, покажите пальцем в чем проблема.
Тикет то создается, но не закрывается.
Плюс, он создается только один раз, во второй уже просто ничего не происходит.

ticket_counter = 0

@bot.event
async def on_raw_reaction_add(payload):
    global ticket_counter
    
    if payload.message_id == 1127154733774295171:
        guild = bot.get_guild(payload.guild_id)
        category = guild.get_channel(1043276795954343986)
        
        ticket_counter += 1
        ticket_number = str(ticket_counter).zfill(4)  # Format the ticket number with leading zeros
        
        ticket_channel = await category.create_text_channel(name=f'┃тикет-{ticket_number}', topic=f'Тикет от {payload.member.display_name}', reason='Тикет')

        welcome_message = f'>>> Тикет успешно создан, {payload.member.mention}. Пожалуйста, напишите сюда суть вопроса и ожидайте ответа от <@&{1043276795023208470}>.'
        message = await ticket_channel.send(welcome_message)
        await message.add_reaction('')

        # Назначаем роль сотрудникам, которые будут отвечать на тикеты
        staff_role = guild.get_role(1043276795023208470)
        await ticket_channel.set_permissions(staff_role, read_messages=True, send_messages=True)

        # Убираем реакцию у пользователя
        channel = bot.get_channel(payload.channel_id)
        message = await channel.fetch_message(1127154733774295171)
        user = guild.get_member(payload.user_id)
        await message.remove_reaction(payload.emoji, user)

        @bot.event
        async def on_raw_reaction_add(payload):
          if payload.message_id == 1127154733774295171:
            guild = bot.get_guild(payload.guild_id)
            category = guild.get_channel(1043276795060949033)
        
            ticket_channel = guild.get_channel(payload.channel_id)
            if ticket_channel is None:
              ticket_channel = await guild.fetch_channel(payload.channel_id)
        
              if str(payload.emoji) == '':
                await ticket_channel.send('саппорт закрыл этот тикет')
                await ticket_channel.edit(category=category)
        
                channel = bot.get_channel(payload.channel_id)
                message = await channel.fetch_message(1127154733774295171)
              await message.remove_reaction(payload.emoji, payload.user_id)
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
@bot.event
async def on_raw_reaction_add(payload):

Вложенные обработчики событий - очень плохая идея. Это не будет работать так, как ты ожидаешь. Просто не делай так.
Вместо этого опиши один обработчик on_raw_reaction_add(), и в нём уже определяй, для которого сообщения пришла реакция, и что с этим сообщением делать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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