问题描述
我正在通过各种方式慢慢学习 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)。