我可以创建一个命令来创建一个频道,但我还需要添加什么来为其设置权限?

问题描述

我正在通过各种方式慢慢学习 C#,我目前的项目是一个使用 discord.net 的 discord bot 我想打一个commad创建谁使用命令来倾诉的管理团队“私人”通道。到目前为止,我有一个可以创建通道并为其命名的命令,但我是 C# 新手,我不确定如何处理权限覆盖。

如果可能的话,最好提供一个可能需要添加的示例以及对其工作原理的描述。 这是我目前拥有的命令的代码

        [Command("create-ticket")]
        [RequireUserPermission(GuildPermission.ManageChannels)]
        public async Task CreateChannel()
        {
            var ctx = Context;
            await ctx.Guild.CreateTextChannelAsync($"Support-#{TicketNo}");
            await ReplyAsync($"Support-#{TicketNo} channel has been created.");
            Console.WriteLine(Now.ToString("F") + " " + ctx.User.Mention + " created a support ticket.");
            TicketNo = TicketNo ++;
            
        }

解决方法

您可以在 CreateTextChannelAsync 中使用名称后的“func”参数来指定频道属性。例如:

List<Overwrite> permissions = new List<Overwrite>
{
    new Overwrite(guild.EveryoneRole.Id,PermissionTarget.Role,new OverwritePermissions(viewChannel: PermValue.Deny)),new Overwrite(yourRoleId,new OverwritePermissions(viewChannel: PermValue.Allow))
};
await guild.CreateTextChannelAsync("Name",x => x.PermissionOverwrites = permissions);

还可以在此处指定其他属性,例如频道主题和类别。

如果您需要更改这些属性,您可以以同样的方式使用 channel.ModifyAsync(func)。

Docs