此交互失败 - Discord_components - Discord.py

时间:2021-07-23 03:56:52

标签: python discord.py

您好,我最近使用 discord_components 按钮创建了一个帮助命令(我知道 Discord.py 不完全支持它们),但我还是继续了。问题是,每当我运行命令并收到要单击的按钮时,它们总是说“此交互失败”。我似乎无法找出问题所在。请帮忙。

谢谢你, NightMX。

import discord
from discord.ext import commands
from discord_components.component import ButtonStyle
from discord_components import DiscordComponents, Button, Select, SelectOption
from discord_components.interaction import InteractionType

class BotCommands(commands.Cog):
    def __init__(self, client):
        self.client = client

    @commands.command()
    async def helpv2(self, ctx):

        funbutton = Button(style=ButtonStyle.grey, label="Fun Commands", id="funcmds")
        monkedevbutton = Button(style=ButtonStyle.grey, label="Attachment Commands", id="monkecmds")
    # utilitybutton = Button(style = ButtonStyle.grey, label = "3", id = "embed3")

        funembed = discord.Embed(title="Fun Commands", colour=discord.Colour.orange())
        funembed.add_field(name="k.joke", value="Sends a Random joke from PyJokes")

        monkedevembed = discord.Embed(title="Fun Commands", colour=discord.Colour.blurple())
        monkedevembed.add_field(name="k.dog", value="Sends a Random Dog Fact")
        monkedevembed.add_field(name="k.monkey", value="Sends a Monkey's Picture")
        monkedevembed.add_field(name="k.bird", value="Sends a Bird's Picture")

        await ctx.send(
            "Kola's Beta Help Command!",
        components=[[funbutton, monkedevbutton]]
    )

        buttons = {
            "funcmds": funembed,
            "monkedcmds": monkedevembed
        }

        while True:
            event = await self.bot.wait_for('button_click')
            if event.channel is not ctx.channel:
                return
            if event.channel == ctx.channel:
                response = buttons.get(event.component.id)

                if response is None:
                    await event.channel.send(
                        "Something went Wrong"
                    )
                if event.channel == ctx.channel:
                    await event.respond(
                        type=InteractionType.ChannelMessageWithSource, embed=response
                    )


def setup(client):
    client.add_cog(BotCommands(client))

0 个答案:

没有答案