public async Task CheckPermsAll() { foreach (var user in await LogGuild.GetUsersAsync()) { if (user.IsBot) { continue; } await CheckPermsFor(user); } }
async Task createCategory(IGuild guild, guildSave guildInfo) { guildInfo.Category = await LogGuild.CreateCategoryAsync(guild.Name); guildInfo.Role = await LogGuild.CreateRoleAsync(guild.Name, GuildPermissions.None, isMentionable : false); await guildInfo.Category.AddPermissionOverwriteAsync(LogGuild.EveryoneRole, new OverwritePermissions(viewChannel : PermValue.Deny, sendMessages : PermValue.Deny)); await guildInfo.Category.AddPermissionOverwriteAsync(guildInfo.Role, new OverwritePermissions(viewChannel : PermValue.Allow)); }
public async Task <ITextChannel> GetChannel(IGuild guild, string action) { Program.LogMsg($"Entering lock for {guild.Name}", LogSeverity.Info, action); Lock.WaitOne(); Program.LogMsg($"Achieved lock for {guild.Name}", LogSeverity.Info, action); try { if (GuildMap.TryGetValue(guild.Id, out var guildSave)) { if (guildSave.Actions.TryGetValue(action, out var txt) && txt != null && !(txt is NullTextChannel)) { return(txt); } } var category = await GetCategory(guild); var sv = GuildMap[guild.Id]; #if DEBUG var name = "dbg-" + action; #else var name = "log-" + action; #endif var newtxt = await LogGuild.CreateTextChannelAsync(name, x => { x.CategoryId = category.Id; x.Topic = "Logs for any new, updated or deleted " + action + "s"; }); await newtxt.SyncPermissionsAsync(); sv.Actions[action] = newtxt; isDirty = true; return(newtxt); } finally { Lock.Release(); Program.LogMsg($"Released lock for {guild.Name}", LogSeverity.Info, action); } }
public override void OnReady() { var sv = ReadSave(); var lg = Program.Deserialise <logSave>(sv); GuildMap = lg.guilds ?? new Dictionary <ulong, guildSave>(); if (lg.guildId.HasValue) { LogGuild = Program.Client.GetGuild(lg.guildId.Value); } else { LogGuild = Program.Client.Guilds.FirstOrDefault(x => x.Name == "Logging Guild"); if (LogGuild == null) { var regions = Program.Client.GetOptimalVoiceRegionAsync().Result; LogGuild = Program.Client.CreateGuildAsync("Logging Guild", regions).Result; LogGuild.CreateRoleAsync("Log Master", new GuildPermissions(administrator: true), isMentionable: false).Wait(); } OnSave(); } }