Discord Webhook发送含Components消息:组件不显示问题求助
Discord Webhook发送消息成功但组件不显示的解决方案
问题详情
向Discord Webhook发送带Components组件的消息时,消息能正常发送,但组件无法显示。已参考Discord官方文档编写语法。
Discord实际输出:
使用的PHP代码:
<?php $url = "https://discord.com/api/webhooks/1234567890"; $content = '{ "content": "This is a message with components.", "components": [ { "type": 1, "components": [ { "type": 2, "label": "Click me!", "style": 1, "custom_id": "click_one" } ] } ] }'; $curl = curl_init(); $headers = array('Content-Type: application/json'); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_POSTFIELDS => $content, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => $headers, CURLOPT_HEADER => true )); $response = curl_exec($curl); $httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); var_dump($response);
HTTP响应结果:
原因与解决方法
普通的Discord频道Webhook不支持消息组件(Components),只有关联机器人的Webhook(通过机器人OAuth2流程创建或关联的Webhook)才具备组件支持能力。
解决步骤:
- 检查Webhook类型:进入服务器设置→集成→Webhooks,确认你的Webhook是关联到机器人的,而非普通频道Webhook。如果是普通Webhook,需要通过机器人API重新创建关联的Webhook。
- 验证机器人权限:确保关联的机器人已被授予
applications.commands权限,并且在目标频道拥有发送消息的权限。 - 确认JSON结构:你的组件语法是符合Discord规范的,无需调整,只要Webhook类型正确即可显示组件。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

