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

Реакция работает 1 раз, почему?

Делаю бота, чтобы на суппорта, по реакции бот создаёт канал, но делает он это 1 раз, после повторного нажатия другим пользователям по реакции, нечего не происходит, вот сам код:

await message_support.add_reaction("✅")
    time.sleep(5)
    while True:
        reaction, user = await client.wait_for("reaction_add")
        if str(reaction.emoji) == "✅":
            if user.id == 872913914013319188:
                return
            else:
                channel_help = await guild.create_text_channel(f"help {user}", overwrites=None, category=category, reason=None)
                await channel_help.set_permissions(ctx.guild.default_role, send_messages=False, read_messages=False, view_channel=False)
                await channel_help.set_permissions(user, send_messages=True, read_messages=True, view_channel=True)
                await channel_help.send(embed = discord.Embed(
                    title="Опишите свою проблему!",
                    colour=discord.Colour.form_rgb(255, 0, 0)
                ))
                return
        else:
            if user.id == 872913914013319188:
                return
            else:
                return
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
  1. Не используйте time.sleep в асинхронном коде.
  2. while True также может блокировать асинхронный код, если не цикл не содержит асинхронных вызовов.


В завимости от вашего кода, создавайте "задачу" (task) или обрабатывайте реакции "слушателем" (listener): on_reaction_add/on_raw_reaction_add
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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