Discord API / Restcord:创建私人频道

时间:2019-10-07 21:53:05

标签: php api bots discord

我正在尝试使用Restcord在Discord上创建私有渠道,Restcord是一个非常紧密地映射到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​​所提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要使用permission_overwrites字段。此字段接受overwrite object类型的数组。

示例:

$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>
     ]
]);

请注意,如果将“ allow”和“ deny”保留为0(默认值),则ID为“ id”的角色/用户将具有与在服务器范围内定义的相同的权限。要获取某组权限的权限ID,请使用this one之类的Discord权限计算器(此处的ID称为权限编号)。

希望有帮助!