我将为您提供一些已经适用于您当前变量的示例。
您需要收集公会中的当前频道,但是由于类别仍被视为频道,您需要使用 LINQ 中的Where 方法将其过滤掉。这样,我们的枚举中将只有文本和语音通道,然后我们只需使用 foreach 关键字循环。
在下面的代码示例中,您可以修改频道(名称、职位、类别)并根据需要为用户和角色添加权限。
如果您只是想在控制台中输入他们的名字,只需在 foreach 中显示 Name 属性:
Console.WriteLine(channel.Name)
更改公会中每个频道的名称:
var guild = BotStuff._client.GetGuild(Global.guildid);
var channels = guild.Channels.Where(x => !(x is ICategoryChannel));
foreach (var channel in channels)
{
await channel.ModifyAsync(x =>
{
x.Name = "new name";
});
}
为用户添加权限覆盖:
var guild = BotStuff._client.GetGuild(Global.guildid);
var channels = guild.Channels.Where(x => !(x is ICategoryChannel));
foreach (var channel in channels)
{
var guilduser = guild.GetUser(554240045800882181);
await channel.AddPermissionOverwriteAsync(guilduser, new OverwritePermissions(sendMessages: PermValue.Allow, manageChannel: PermValue.Allow));
}
这样我们将让 ID 为 554240045800882181 的用户发送消息并管理频道。您可以在Allow、Inherit、Deny 之间进行选择。
权限添加方法是重载的,也接受一个角色作为参数,所以稍作修改我们就可以改变整个人群的频道权限。
var guildrole = guild.GetRole(202853174959144960);
await channel.AddPermissionOverwriteAsync(guildrole, new OverwritePermissions(manageMessages: PermValue.Allow, attachFiles: PermValue.Allow));
所使用的ID/变量只是示例,您应该在使用前理解并修改代码。