Discord API / Restcord : 创建私人频道

Posted

技术标签:

【中文标题】Discord API / Restcord : 创建私人频道【英文标题】:Discord API / Restcord : Create private channel 【发布时间】:2020-02-05 05:22:38 【问题描述】:

我正在尝试使用 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。

【问题讨论】:

【参考方案1】:

您需要使用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>
     ]
]);

请注意,如果您将“允许”和“拒绝”保留为 0(默认值),则 id 为 'id' 的角色/用户将拥有与在服务器范围内定义的权限相同的权限。要获取特定权限集的权限 ID,请使用 Discord 权限计算器,例如 this one(这里的 ID 称为权限号)。

希望对你有帮助!

【讨论】:

以上是关于Discord API / Restcord : 创建私人频道的主要内容,如果未能解决你的问题,请参考以下文章

如何通过拥有他的令牌来获取有关用户的信息

使用 Discord API 和 cURL 发送 Discord DM

发送私信 Discord-api

Discord API 链接是哪一个?

Discord.js,API 调用失败

如何使用 JDA 在 Discord 中创建文本通道:Java Discord Api