private async Task <ITextChannel> PrepareBattleChannel(string Name, RoomVisibility visibility = RoomVisibility.All) { var channel = await Context.Guild.GetOrCreateTextChannelAsync(Name); await channel.ModifyAsync(c => { c.CategoryId = ((ITextChannel)Context.Channel).CategoryId; c.Position = ((ITextChannel)Context.Channel).Position + battles.Count + 1; }); await channel.SyncPermissionsAsync(); if (visibility == RoomVisibility.TeamB) { await channel.AddPermissionOverwriteAsync(PvPEnvironment.TeamBRole, new OverwritePermissions(viewChannel : PermValue.Allow)); await channel.AddPermissionOverwriteAsync(Context.Guild.EveryoneRole, new OverwritePermissions(viewChannel : PermValue.Deny)); } if (visibility == RoomVisibility.TeamA) { await channel.AddPermissionOverwriteAsync(PvPEnvironment.TeamBRole, new OverwritePermissions(viewChannel : PermValue.Deny)); } if (visibility == RoomVisibility.Private) { await channel.AddPermissionOverwriteAsync(PvPEnvironment.TeamBRole, new OverwritePermissions(viewChannel : PermValue.Deny)); await channel.AddPermissionOverwriteAsync(Context.Guild.EveryoneRole, new OverwritePermissions(viewChannel : PermValue.Deny)); } var messages = await channel.GetMessagesAsync(100).FlattenAsync(); await channel.DeleteMessagesAsync(messages); return(channel); }
public RoomVisibilityContainer(RoomVisibility visibility) : this() =>