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

如何在PHP中实现Discord机器人/ping命令的嵌入消息响应

实现Discord机器人Ping命令的嵌入消息响应

要将/ping命令的静态文本回复改为Discord嵌入消息,你需要补充命令交互的处理逻辑,并构造嵌入消息结构来替换原有的静态回复。以下是具体操作步骤:

1. 核心修改:添加命令交互监听

你现有的代码仅完成了ping命令的注册,但缺少处理用户调用命令的逻辑。需要监听interactionCreate事件来响应命令,并发送嵌入消息。

2. 完整代码示例

假设你使用的是DiscordPHP库,完整的实现代码如下:

// 初始化Discord机器人实例(替换为你的机器人Token)
$discord = new Discord([
    'token' => 'YOUR_BOT_TOKEN',
]);

// 注册Ping命令
$discord->on('ready', function ($discord) {
    $command = new Command($discord, [
        'name' => 'ping',
        'description' => '获取机器人响应时间' // 可更新命令描述
    ]);
    $discord->application->commands->save($command);
    echo "机器人就绪,Ping命令已注册\n";
});

// 处理Ping命令的交互请求
$discord->on('interactionCreate', function ($interaction) {
    // 仅处理ping命令
    if ($interaction->data->name !== 'ping') return;

    // 计算机器人响应时间
    $responseTime = round((microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']) * 1000, 2);

    // 构造Discord嵌入消息结构
    $embed = [
        'title' => '🏓 Ping 响应',
        'description' => "Pong!\n响应时间: **{$responseTime}ms**",
        'color' => 0x2ecc71, // 亮绿色(十六进制颜色值)
        'timestamp' => date('c'), // 添加时间戳
        'footer' => [
            'text' => "请求来自 {$interaction->user->username}"
        ]
    ];

    // 发送嵌入消息作为回复
    $interaction->respondWithMessage([
        'embeds' => [$embed]
    ], true); // true表示公开回复,false为仅调用者可见
});

// 启动机器人
$discord->run();

3. 关键说明

  • 无需使用WebHook代码:你提供的WebHook代码是用于通过WebHook发送消息的场景,处理Slash命令的回复直接通过机器人的交互响应方法即可,无需额外调用WebHook。
  • 嵌入消息自定义:可以根据需求修改$embed数组的内容,比如添加字段、作者信息、图片等。Discord嵌入的结构支持以下常用字段:title、description、color、fields、author、image、thumbnail、footer等。
  • 颜色值规则:color字段接受十进制RGB值或0x开头的十六进制值(例如0x3498db对应蓝色)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:09:10