You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在discord.py中实现命令链接功能?

实现Discord机器人的命令链接(一键填充命令)功能

你看到Dankmemer里的那种命令点击效果,不是普通文本实现的——本质是用Discord的消息按钮组件做的。普通文本放命令当然没用,因为Discord不会把纯文本识别成可触发的命令入口。

在discord.py中实现的方法

首先确保你的discord.py版本是2.0及以上(组件功能是2.0版本开始支持的),核心思路是:创建按钮,用户点击后发送仅其可见的临时消息,消息里的命令文本可被Discord自动填充到输入框。

代码示例:

import discord
from discord.ext import commands

# 初始化机器人,开启所有必要权限
bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())

# 定义按钮视图,设置按钮永久有效
class CommandShortcutView(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)

    # 定义"查看余额"按钮,绑定回调逻辑
    @discord.ui.button(label="查看余额", style=discord.ButtonStyle.blurple, custom_id="btn_check_balance")
    async def check_balance(self, interaction: discord.Interaction, button: discord.ui.Button):
        # 发送临时消息,只有点击按钮的用户能看到
        await interaction.response.send_message(f"点击快速执行:`/balance`", ephemeral=True)

# 测试命令:发送带按钮的嵌入消息
@bot.command()
async def send_shortcuts(ctx):
    embed = discord.Embed(title="快捷命令入口", description="点击按钮获取命令快捷方式")
    await ctx.send(embed=embed, view=CommandShortcutView())

# 启动机器人
bot.run("你的机器人Token")

用户点击按钮后,会收到一条临时消息,点击消息里的/balance文本,Discord就会自动把命令填充到输入框,和Dankmemer的效果一致。如果你的机器人用的是前缀命令(比如!balance),把消息里的内容换成!balance即可。

任意语言的通用实现思路

不管用什么语言开发Discord机器人(比如discord.js、JDA等),核心逻辑都是一样的:

  • 第一步:使用对应库的组件API创建按钮,设置按钮的显示文本、样式和唯一标识。
  • 第二步:为按钮绑定回调函数,当用户点击时触发。
  • 第三步:在回调中向用户发送仅其可见的消息,消息内容包含目标命令(用代码块或纯文本显示),用户点击该命令文本即可自动填充到输入框。
  • 注意:必须使用支持Discord消息组件的库版本,老旧版本不支持该功能。

内容的提问来源于stack exchange,提问作者Marcus Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:45:01