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

PHP开发Discord斜杠命令时获取用户nickname始终为null如何解决

服务器昵称正确获取操作步骤

1. 开启网关特权意图

  • 登录Discord开发者平台,进入对应应用的「Bot」设置页,找到Privileged Gateway Intents板块,开启Server Members Intent开关。未开启该意图时,网关返回的成员信息会自动隐藏nick等字段,默认返回null。

2. 检查Bot授权配置

  • 重新邀请Bot进入目标服务器时,要确保勾选了guilds.members.read授权范围,同时给Bot分配服务器内的「查看成员」权限。

3. 代码侧优化取值逻辑

  • 部分PHP的Discord框架中,成员昵称的字段名可能为nickname而非nick,你可以先打印整个$interaction->member对象的结构,确认昵称对应的字段键名。
  • 可以直接用空合并运算符兼容昵称未设置的场景,优化后的代码如下:
private function commandWho(Interaction $interaction) {
    // 优先取服务器昵称,为空则 fallback 到全局用户名
    $replyName = $interaction->member->nick ?? $interaction->member->user->username;
    echo "\nName :\n";
    echo $interaction->member->user->username;
    echo "\nNickname :\n";
    echo $interaction->member->nick ?? '未设置服务器昵称';
    echo "\n回复使用名称 :\n";
    echo $replyName;
    echo "\nEnd\n";
}

4. 主动拉取成员信息(可选)

如果交互返回的Member对象确实没有填充昵称字段,可以主动调用获取服务器成员接口,传入当前服务器ID和触发用户的ID,拉取完整的成员信息即可获取到nick字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:36:03