使用DiscordPHP创建Discord频道邀请链接无返回邀请码如何解决
问题原因
- 缺少
Invite类的命名空间导入,回调参数的类型声明触发PHP致命错误,导致回调代码未执行 - 未添加Promise错误捕获逻辑,创建邀请请求被拒绝(如权限不足、参数非法)时无法感知报错
- 未开启Discord开发者后台的
Message Content Intent权限,导致message事件无法触发,邀请创建逻辑从未执行 - 机器人没有对应频道的
CREATE_INSTANT_INVITE(创建即时邀请)权限,接口请求直接失败
解决方法
- 补全
Invite类的命名空间导入,在代码顶部添加对应use声明 - 给Promise添加错误捕获回调,打印报错信息排查问题
- 进入Discord开发者平台,在对应应用的「Bot」设置页开启
Message Content Intent开关 - 给机器人在目标频道分配「创建即时邀请」权限
修正后的可运行代码如下:
<?php include __DIR__.'/vendor/autoload.php'; use Discord\Discord; use Discord\Parts\Invite\Invite; $discord = new Discord([ 'token' => '替换为你的实际Bot令牌', 'intents' => 32767, // 可根据实际需求缩小权限范围,必须包含消息相关intent ]); $discord->on('ready', function ($discord) { echo "Bot is ready!", PHP_EOL; $discord->on('message', function ($message, $discord) { // 过滤机器人自身发送的消息,避免循环触发 if ($message->author->bot) { return; } $channel = $message->channel; $channel->createInvite([ 'max_age' => 60, 'max_uses' => 5, ])->done(function (Invite $invite) { echo "邀请创建成功,邀请码:".$invite->code.PHP_EOL; echo "完整邀请链接:https://discord.gg/".$invite->code.PHP_EOL; }, function ($exception) { echo "邀请创建失败,错误信息:".$exception->getMessage().PHP_EOL; }); }); }); $discord->run();
内容的提问来源于stack exchange,提问作者The IRF
相关产品推荐
相关产品推荐

