首页 > 解决方案 > 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。

标签: phpapibotsdiscord

解决方案


您需要使用该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 称为权限号)。

希望能帮助到你!


推荐阅读