php - Discord API / Restcord : 创建私人频道
问题描述
我正在尝试使用 Restcord 在 Discord 上创建私人频道,这是一个非常紧密地映射到 Discord API 的 PHP 库。
目前,我已经成功创建了语音频道,但服务器上的所有用户都可以看到和加入频道。我怎样才能使频道只有在受邀时才可用?
我当前的测试代码是:
$discord = new \RestCord\DiscordClient(['token' => config('services.discord.bot_token')]);
$channel = $discord->guild->createGuildChannel([
'guild.id' => config('services.discord.guild_id'),
'name' => 'lobby_' . uniqid(),
'type' => 2, // Voice
'permission_overwrites' => [
],
]);
$invitation = $discord->channel->createChannelInvite([
'channel.id' => $channel->id,
]);
return "https://discordapp.com/invite/{$invitation->code}";
在此先感谢,非常感谢任何帮助,无论是使用 Restcord 还是直接使用 API。
解决方案
您需要使用该permission_overwrites
字段。此字段接受覆盖对象类型的数组。
例子:
$discord = new \RestCord\DiscordClient(['token' => <token>]);
$channel = $discord->guild->createGuildChannel([
'guild.id' => config(<your guild ID>),
'name' => '<channel name>',
'type' => 2, // Voice
'permission_overwrites' => [
'id' => <role OR user id>,
'type' => 'role' (if id is role) OR 'user' (if id is single user),
'allow' => <permission ID for allowed permissions>,
'deny' => <permissions ID for denied permissions>
]
]);
请注意,如果您将“允许”和“拒绝”保留为 0(默认值),则 id 为 'id' 的角色/用户将具有与服务器范围内定义的权限相同的权限。要获取特定权限集的权限 ID,请使用像这样的 Discord 权限计算器(这里的 ID 称为权限号)。
希望能帮助到你!
推荐阅读
- amazon-redshift - Redshift COPY 抛出错误,但“stl_load_errors”系统表未提供详细信息
- ios - 将 Firestore 数据分配给自定义对象
- python - 如何逐行获取groupby cumsum的总数
- dictionary - 如何在 Unity 中为类似我的世界的立方地形块的不同面应用不同的法线贴图纹理?
- c# - 如何在 .NET C# 应用程序 (WinForms) 中使用 ActiViz 时以 x64(64 位)平台为目标
- javascript - 当我在 html5 中按下按钮时,我正试图做出正确的移动
- linux - Web服务器中的Logrotation
- gnuradio - USRP N310 中 GNU Radio 中的 PSK 调制
- go - 有什么方法可以摆脱 GORM 中的自动列重命名?
- javascript - findDOMNode 在 StrictMode 中已弃用。findDOMNode 被传递了一个 DraggableCore 的实例,该实例位于 StrictMode 内