如何在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
相关产品推荐
相关产品推荐

