discord.py 一段时间后交互失败

问题描述 投票:0回答:1

我在discord.py 上遇到错误 互动失败

只是在一段时间后不起作用

但是当我尝试在前 5 分钟内执行 /add_button 时,按钮就不再起作用了

不知道为什么对我的代码有帮助?

我有这个问题,不知道如何解决

class SuggestionModal(discord.ui.Modal, title="Envie sua Sugestão"):
    input_field = discord.ui.TextInput(
        label="Sua sugestão:",
        placeholder="Escreva aqui sua sugestão...",
        style=discord.TextStyle.paragraph,
        min_length=20,
        max_length=4000
    )

    async def on_submit(self, interaction: discord.Interaction):
        try:
            embed = discord.Embed(
                title="Nova Sugestão",
                description=self.input_field.value,
                color=discord.Color.green()
            )
            embed.set_author(name=interaction.user.display_name, icon_url=interaction.user.avatar.url)
            channel = interaction.guild.get_channel(1167254208299421760)
            await channel.send(embed=embed)
            await interaction.response.send_message("Sua sugestão foi enviada com sucesso!", ephemeral=True)
        except Exception as e:
            print(f"Erro ao enviar sugestão: {e}")
            await interaction.response.send_message("Erro ao enviar sua sugestão. Por favor, tente novamente mais tarde.", ephemeral=True)

@bot.tree.command(name='sugerir', description='Envie uma sugestão para o servidor.')
async def suggest(interaction: discord.Interaction):
    modal = SuggestionModal()
    await interaction.response.send_modal(modal)

class SuggestionButtonView(discord.ui.View):
    @discord.ui.button(label="Enviar Sugestão", style=discord.ButtonStyle.primary, custom_id="send_suggestion")
    async def button_click(self, interaction: discord.Interaction, button: discord.ui.Button):
        modal = SuggestionModal()
        await interaction.response.send_modal(modal)

async def check_roles(interaction: discord.Interaction):
    allowed_roles = ['DONO', 'ROLETA']  # Adicione os nomes dos cargos permitidos aqui
    user_roles = [role.name for role in interaction.user.roles]
    if any(role in allowed_roles for role in user_roles):
        return True
    else:
        await interaction.response.send_message("Você não tem permissão para usar este comando.", ephemeral=True)
        return False

@bot.tree.command(name='add_button', description='Adicione um botão para enviar sugestões.')
@app_commands.checks.check(check_roles)
async def add_button(interaction: discord.Interaction):
    try:
        embed = discord.Embed(
            title="Envie sua Sugestão",
            description="Clique no botão abaixo para enviar sua sugestão!\n\n Com seu feedback conseguimos melhorar em vários aspectos!",
            color=discord.Color.gold()
        )
        embed.set_author(name="Sistema de Sugestões")
        embed.set_image(url="https://cdn.discordapp.com/attachments/1142250322933334106/1168019173272715264/Monochrome_Wolf_Mascot_eSports_Gaming_Logo_6.gif?ex=662db99f&is=661b449f&hm=b4a6e15e3d1eb77e813d61abd86dfd620945af978dfc69b355de6154b6dba42e&")  # Opcional: Adicione uma imagem de thumbnail
        embed.set_footer(text="BOT Powered by Rodopoulos")

        # Crie a view com o botão
        view = SuggestionButtonView()

        # Envie a mensagem com o embed e o botão
        await interaction.response.send_message(embed=embed, view=view)
    except Exception as e:
        print(f"Erro ao adicionar botão de sugestões: {e}")
        await interaction.response.send_message("Erro ao adicionar botão de sugestões. Por favor, tente novamente mais tarde.", ephemeral=True)

可以运行代码但不起作用

python discord discord.py
1个回答
0
投票

discord.ui.View
有一个
timeout
参数,默认为 180 秒。如果您不想让它停止工作,您可以将 None 传递给它。

class MyView(discord.ui.View, timeout=None):
    # your buttons

但是,机器人重新启动后,这些按钮将停止工作,如果您需要它在重新启动后继续工作,请查看持久视图。

© www.soinside.com 2019 - 2024. All rights reserved.