将按钮组件添加到消息中 (discord.py)

2024-02-28

看到后我想知道this https://discord.com/developers/docs/interactions/message-components(消息组件)discord 的 API 参考是否有任何方法可以使用 python 实现它?

我尝试制作一个 json 数组并将其传递到我的消息中,但无法使其工作。

我也尝试查看 python 的参考,但找不到任何东西。

这是我的代码

components= [
  {
    "type": 2,
    "label": "Clear les kick",
    "style": 4,
    "custom_id": "clear_kick_button"
  }
]
@slash.slash(name="kicked", description="Voir qui a été kick et combien de fois.", guild_ids=guild_id)
async def kicked(ctx):
  await ctx.send("test", components= components)

如果您有任何信息,请分享,谢谢。


新答案


Discord.py 2.0 允许使用按钮和下拉菜单,并新增了对斜杠命令的支持。不再需要第三方存储库。但是,如果您由于某种原因不想使用默认值,您可以查看discord_slash.

升级到 Discord.py 2.0:

Windows:

pip install -U git+https://github.com/Rapptz/discord.py

MacOS 和 Linux:

pip3 install -U git+https://github.com/Rapptz/discord.py

旧答案:

(这个答案已经过时了。)


截至目前,您可以获得一个名为discord_components使用按钮。

要安装此库,请使用pip install --upgrade discord-components (有时命令是pip3 install --upgrade discord-components).

要导入 Discord 组件按钮,请使用

from discord_components import DiscordComponents, Button, ButtonStyle, InteractionType

然后只需将这段代码添加到机器人的on_ready():

DiscordComponents(bot, change_discord_methods=True)

(确保更换bot与您的机器人的名称,与您使用的名称相同@something.command())

要将按钮添加到消息,请执行以下操作:

await ctx.send(type=InteractionType.ChannelMessageWithSource, content="Message Here", components=[Button(style=ButtonStyle.URL, label="Example Invite Button", url="https://google.com"), Button(style=ButtonStyle.blue, label="Default Button", custom_id="button")])

(需留言)

要在单击按钮时执行某些操作,您可以执行以下操作:

@bot.event
async def on_button_click(interaction):
    if interaction.component.label.startswith("Default Button"):
        await interaction.respond(type=InteractionType.ChannelMessageWithSource, content='Button Clicked')

此方法甚至在重新启动后仍然有效!

如果您需要的话,这是我为您整理的一个示例:

import discord
from discord.ext import commands
from discord_components import DiscordComponents, Button, ButtonStyle, InteractionType

bot = commands.Bot(command_prefix=prefix, description="Desc", help_command=None)

@bot.event
async def on_ready():
    DiscordComponents(bot, change_discord_methods=True)
    await bot.change_presence(activity=discord.Game(name=f"{prefix}help"))
    print("Bot has successfully logged in as: {}".format(bot.user))
    print("Bot ID: {}\n".format(bot.user.id))

@bot.command()
async def button(ctx):
    await ctx.send(type=InteractionType.ChannelMessageWithSource, content="Message Here", components=[Button(style=ButtonStyle.URL, label="Example Invite Button", url="https://google.com"), Button(style=ButtonStyle.blue, label="Default Button", custom_id="button")])

bot.run("token")

希望这可以帮助!

提示:如果您希望按钮位于一行,请使用 [[]] 而不是仅使用 [],例如:[[btn1, btn2],[btn3, btn4]] 将导致:

[btn 1][btn 2]
[btn 3][btn 4]

额外提示:您还可以将变量设置为按钮,然后发送该变量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将按钮组件添加到消息中 (discord.py) 的相关文章

  • 如何检查当前日期并移至下一个日期

    我遇到了一个我似乎无法理解的 python 问题 不确定是否需要使用 if 语句 但因为我是 python 新手 所以我实际上不确定如何编写这个小问题 事实上 这就是我遇到的问题 对于出发日历 我希望 python 能够执行以下操作 查看
  • keras 层教程和示例

    我正在尝试编码和学习不同的神经网络模型 我对输入维度有很多复杂性 我正在寻找一些教程 显示层的差异以及如何设置每个层的输入和输出 Keras 文档 https keras io layers core 向您展示所有input shape每层
  • 将预训练的手套词嵌入与 scikit-learn 结合使用

    我已经使用 keras 来使用预先训练的词嵌入 但我不太确定如何在 scikit learn 模型上执行此操作 我也需要在 sklearn 中执行此操作 因为我正在使用vecstack集成 keras 序列模型和 sklearn 模型 这就
  • 二进制数据的Python字符串表示

    我试图理解 Python 显示表示二进制数据的字符串的方式 这是一个使用的示例乌兰多姆操作系统 http docs python org library os html os urandom In 1 random bytes os ura
  • 在 python 中查找价格动量的有效方法:对列的最后 n 个条目求平均值

    我正在定义价格动量是给定股票过去动量的平均值n days 反过来 动量是一种分类 如果当天的收盘价高于前一天 则每天标记为 1 如果当天的收盘价低于前一天 则标记为 1 我的库存变化百分比如下 df close in percent np
  • 使用正则表达式检查整个字符串

    我正在尝试检查字符串是否是数字 因此正则表达式 d 似乎不错 然而 由于某种原因 该正则表达式也适合 78 46 92 168 8000 这是我不想要的 一些代码 class Foo rex re compile d def bar sel
  • 参数太少错误,同时未使用参数占位符

    我尝试使用 PYODBC 在 Access 数据库中执行 SQL 查询 但出现以下错误 pyodbc Error 07002 07002 Microsoft ODBC Microsoft Access 驱动程序 参数太少 预期为 1 301
  • Django - 该进程无法访问该文件,因为该文件正在被另一个进程使用

    我正在尝试在 Windows 10 上运行 Django 我是 Django 的新手 我正在使用 Compressor Toolkit 我的问题是 我可以运行 manage py 但本地主机说 base html 第 9 行出错该进程无法访
  • 有效地写入 pandas 中的多个相邻列

    使用 numpy ndarray 可以一次写入多个列 而无需先进行复制 只要它们相邻 如果我想写入数组的前三列 我会写 a 0 0 3 1 2 3 this is very fast a is a numpy ndarray 我希望在 pa
  • 更新或插入 MySQL Python

    如果记录已存在 我需要更新一行 如果不存在 我需要创建一个新记录 我理解 ON DUPLICATE KEY 将使用 MYSQLdb 完成此操作 但是我无法使其正常工作 我的代码如下 cursor database cursor cursor
  • 在Python中将用户昵称转换为正式名字

    我正在尝试根据 Python 中的用户名字和姓氏映射来自不同系统的用户 一个问题是 名字在很多情况下都是 昵称 例如 对于用户来说 他的名字在一个系统中是 Dave 而在另一个系统中是 David python 中有没有简单的方法可以将这些
  • 如何避免在matplotlib中调用latex(输出到pgf)

    我使用 matplotlib 及其 pgf 后端来生成包含在 LaTeX 投影仪文档中的绘图 当我使用未定义的乳胶命令时 我遇到了麻烦 但对于我的应用程序 我不需要 matplotlib 来使用 Latex 生成标签或注释 我只想要正确的
  • 如何在Python中获取套接字的外部IP?

    当我打电话时socket getsockname 在套接字对象上 它返回我的机器的内部 IP 和端口的元组 但是 我想找回我的外部IP 最便宜 最有效的方式是什么 如果没有外部服务器的配合 这是不可能的 因为您和另一台计算机之间可能存在任意
  • 通过API更新Twitter背景

    我在通过 Twitter 的 API 更新背景时遇到了一些问题 target url http www google com logos 11th birthday gif ch curl init curl setopt ch CURLO
  • Pandas 使用什么规则来生成视图和副本?

    我对 Pandas 在决定数据帧中的选择是原始数据帧的副本或原始数据帧的视图时使用的规则感到困惑 例如 如果我有 df pd DataFrame np random randn 8 8 columns list ABCDEFGH index
  • 如何使用 SymPy 求给定一阶导数的 n 阶导数?

    Given some f and the differential equation x t f x t how do I compute x n t in terms of x t For example given f x t sin
  • Web Api - 不允许捕获 405 方法

    截至目前 Web api 应用程序针对 405 方法不允许错误返回以下响应正文 我正在尝试更改响应正文 但我不知道如何使用委托处理程序 ApiControllerActionSelector 或过滤器 谁能帮我捕获服务器端的 405 错误
  • 将索引数组转换为 NumPy 中的 one-hot 编码数组

    给定一个一维索引数组 a array 1 0 3 我想将其一次性编码为二维数组 b array 0 1 0 0 1 0 0 0 0 0 0 1 创建归零数组b有足够的列 即a max 1 然后 对于每一行i 设置a i 第 列 至1 gt
  • 在 python 中使用 re.sub 将字母变成大写?

    在许多编程语言中 以下内容 find foo a z bar并替换为GOO U 1GAR 将导致整个匹配项变为大写 我似乎无法在 python 中找到等效项 它存在吗 您可以将函数传递给re sub http docs python org
  • 捕获 SQLAlchemy 异常

    我可以使用什么捕获 SQLAlechmy 异常的上层异常 gt gt gt from sqlalchemy import exc gt gt gt dir exc ArgumentError CircularDependencyError

随机推荐

  • OCR:图像转文本?

    在标记为复制或重复问题之前 请先阅读整个问题 我目前能做的如下 获取图像并裁剪 OCR 所需的部分 使用处理图像tesseract and leptonica 当应用的文档被裁剪成块 即每个图像 1 个字符 时 它提供 96 的准确度 如果
  • java.rmi.ServerException:服务器线程中发生RemoteException(ClassNotFoundException)

    方法如下 private void startServer snippet that starts the server on the local machine try RemoteMethodImpl impl new RemoteMe
  • 使用 Powershell 设置远程服务的恢复选项?

    我真的很难让它发挥作用 希望有人可以帮助我 我目前正在为一项服务编写 Powershell 部署脚本 安装服务后 我想将服务恢复选项设置为每次服务在 0 分钟后崩溃时 重新启动服务 有谁知道如何使用 Powershell 为远程计算机设置这
  • Visual Studio Cordova - 无法部署应用程序

    我正在使用带有 Cordova 工具的 Visual Studio Enterprise 2015 我有简单的引导 HTML5 应用程序和运行 Remotebuild 代理的 iMac 我有一台 iPad 通过 VS 连接到我的 Windo
  • Python线程问题,raw_input()阻塞线程,线程失控

    我在 python 中遇到线程问题 问题似乎是当我调用一个线程并随后调用 raw input 时会阻塞该线程 这是最小的例子 import threading import time class tread test threading T
  • React-Native:如何缩放字体大小以支持 Android 和 iOS 中的多种不同分辨率和屏幕?

    我在尝试在存在的许多不同屏幕上计算正确的字体大小时遇到 了很大的麻烦 目前我有一个名为的辅助函数getCorrectFontSizeForScreen export function getCorrectFontSizeForScreen
  • 如何用 Jackson 比较两个 JsonNode?

    我有一个比较两个对象的方法 但我不知道如何通过 Jackson 库比较 JsonNode 我想要得到类似的东西 private boolean test JsonNode source JsonNode test compiler proc
  • 如何在 JsonPath 中过滤非数组

    使用以下 JSON 来自http jsonpath com http jsonpath com firstName John lastName doe age 26 address streetAddress naist street ci
  • 如何使用常规 Windows 命令行增加文本文件中的值?

    我想为我的一个项目保留一个 编译计数器 我认为一种快速而肮脏的方法是保留一个带有普通数字的文本文件 然后只需调用一个小脚本在每次编译时递增该数字 我该如何使用常规 Windows 命令行来执行此操作 我真的不想安装一些额外的 shell 来
  • ListBox 和 ListView 有什么区别

    WPF的ListBox和ListView有什么区别 我找不到它们的属性有任何显着差异 有不同的典型用途吗 A ListView基本上就像一个ListBox 并继承自它 但它还有一个View财产 此属性允许您指定显示项目的预定义方式 BCL
  • 本地 Postgres 的 Npgsql 连接字符串

    下午好 我在连接到 Postgres 数据库时遇到问题 我正在开发的应用程序必须在 NET 4 上运行 我正在使用 Npgsql 因为我仅限于 NET 4 所以我使用 Npgsql 版本 2 2 7 我相信 3 需要 NET 4 5 该应用
  • CSS 网格内垂直对齐

    我想要一个巨大的进度条 它在 CSS 网格内垂直对齐 问题是 CSS 网格内的垂直对齐对我不起作用 我尝试过 Firefox 也尝试过 Chrome I tried vertical align middle 但它不起作用 我已经在网格项中
  • PHP 的 json_encode 是否保证生成 ASCII 字符串?

    嗯 主题说明了一切 我正在使用 json encode 将一些 UTF8 数据转换为 JSON 并且我需要将其传输到当前仅支持 ASCII 的某个层 所以我想知道是否需要使其支持 UTF 8 还是可以保持原样 查看 JSON rfc UTF
  • 如何在不使用相机应用程序的情况下捕获背景图像

    我有一个 Android 应用程序 其中包含一个按钮 当您单击按钮时 应从相机捕获图像 而无需打开相机应用程序 图像应在后台捕获 如何实现这个功能呢 这是我的整个工作项目 如何在没有 SurfaceView 的情况下捕获背景图像 您可以在任
  • 取消引用指向数组的指针?

    参考带有注释的行 为什么在示例中添加括号可以打印数组的所有内容 该示例打印 one 然后打印垃圾 include
  • 如何在 Django 中添加对评论的回复?

    我正在用 Django 制作自己的博客 并且我已经制作了一个评论系统 我想为每个评论添加回复 就像普通的评论框 但我不知道该怎么做 这是我当前的 models py评论 class Comment models Model post mod
  • 如何取消初始化 FrameworkElement?

    我们有一个派生自 FrameworkElement 的类 它不受我们的控制 此类在中注册事件处理程序初始化时 http msdn microsoft com en us library system windows frameworkele
  • 如何在 python-docx 中应用粗体和斜体?

    我正在努力编一本字典 我正在使用 python docx 将其放入 MS Word 中 我可以轻松地将其设置为粗体或斜体 但似乎无法弄清楚如何同时做到这两点 基础知识如下 import docx word Dictionary doc do
  • 如何更改 R Studio 中的 pandoc 选项

    在 R Studio 中安装 rmarkdown 包 您可以使用 Rmd 文件创建 docx 文档 然后按Knit Word button 那么调用的命令是 C Program Files RStudio bin pandoc pandoc
  • 将按钮组件添加到消息中 (discord.py)

    看到后我想知道this https discord com developers docs interactions message components 消息组件 discord 的 API 参考是否有任何方法可以使用 python 实现