Exemplo n.º 1
0
 public async Task CheckPermsAll()
 {
     foreach (var user in await LogGuild.GetUsersAsync())
     {
         if (user.IsBot)
         {
             continue;
         }
         await CheckPermsFor(user);
     }
 }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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();
            }
        }