Пример #1
0
        public async Task CheckForLeavers(CommandContext ctx, string clanTag)
        {
            var roles        = ctx.Member.Roles.ToList();
            var verification = await IsVerifiedAsync(ctx, true);

            var clan = await GetClanFromTagOrNameAsync(ctx, clanTag);

            clanTag = clanTag.ToLower();

            if (clan != null && verification == ErrorCode.Qualify && !string.IsNullOrEmpty(clan.details.Tag))
            {
                var            discordEmbed = Core.Discord.CreateFancyMessage(DiscordColor.Turquoise, "Checking for leavers...");
                DiscordMessage msg          = await ctx.RespondAsync(discordEmbed);

                var leavers = await BungieTools.CheckForLeaves(clan, true);

                if (leavers.Count > 0)
                {
                    await msg.DeleteAsync();

                    var fields = new List <Field>();
                    Core.Discord.SendFancyListMessage(ctx.Channel, clan, leavers, "Users found leaving " + clan.details.Name + ":");
                }
                else
                {
                    discordEmbed = Core.Discord.CreateFancyMessage(DiscordColor.SpringGreen, "No leavers found", "No one to remove from sheet <:unipeepo:601277029459034112>");
                    await msg.ModifyAsync(discordEmbed);
                }
                await ThankUsage(ctx, clan, 100);
            }
        }
Пример #2
0
        public async Task CheckForInactives(CommandContext ctx, string clanTag, string threshold = "-1")
        {
            var roles        = ctx.Member.Roles.ToList();
            var verification = await IsVerifiedAsync(ctx, true);

            var clan = await GetClanFromTagOrNameAsync(ctx, clanTag);

            clanTag = clanTag.ToLower();
            List <BungieSharper.Schema.GroupsV2.GroupMember> inactives = new ();
            List <TimeSpan> inactiveTimes   = new ();
            int             inactivityLimit = ConfigValues.InactivityThreshold;

            if (clan != null && verification == ErrorCode.Qualify && !string.IsNullOrEmpty(clan.details.Tag))
            {
                if (threshold == "-1")
                {
                    threshold = ConfigValues.InactivityThreshold.ToString();
                }
                var clanMembers = await BungieTools.GetClanMembers(clan);

                foreach (var member in clanMembers)
                {
                    var lastLogon          = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(Convert.ToDouble(member.lastOnlineStatusChange));
                    var inactivityDuration = DateTime.UtcNow - lastLogon;

                    int.TryParse(threshold, out inactivityLimit);
                    if (inactivityLimit < 0)
                    {
                        inactivityLimit = ConfigValues.InactivityThreshold;
                    }
                    if (inactivityDuration.TotalDays > inactivityLimit && member.lastOnlineStatusChange != 0 && member.memberType != RuntimeGroupMemberType.Founder)
                    {
                        inactives.Add(member);
                        inactiveTimes.Add(inactivityDuration);
                    }
                }
                if (inactives.Count > 0)
                {
                    Core.Discord.SendInactivityListMessage(ctx.Channel, clan, inactives, inactiveTimes, "Here's all the " + clan.details.Name + " users above " + threshold + " days of inactivity:");
                    await ThankUsage(ctx, clan, 100);
                }
                else
                {
                    DiscordEmbed message;
                    if (inactivityLimit == ConfigValues.InactivityThreshold)
                    {
                        message = Core.Discord.CreateFancyMessage(clan.details.DiscordColour, "I found no " + clan.details.Name + " members above " + threshold + "days of inactivity!", "Try a lower threshold to see if there's users creeping up to " + ConfigValues.InactivityThreshold + " days!");
                    }
                    else
                    {
                        message = Core.Discord.CreateFancyMessage(clan.details.DiscordColour, "I found no " + clan.details.Name + " members above " + threshold + "days of inactivity!", null);
                    }
                    await Core.Discord.SendFancyMessage(ctx.Channel, message);
                }
            }
        }
Пример #3
0
        public static async Task CheckForLeavers(Clan clan)
        {
            Log.Information("Checking for leavers for " + clan.details.Name);
            var Leavers = await BungieTools.CheckForLeaves(clan);

            foreach (var channel in Core.Discord.alertsChannels)
            {
                Core.Discord.SendFancyListMessage(channel, clan, Leavers, "Users found leaving " + clan.details.Name + ":");
            }
            //Core.Discord.alertsChannels.ForEach(async channel =>
            //{
            //    Core.Discord.SendFancyListMessage(channel, clan, Leavers, "Users found leaving " + clan.details.BungieNetName + ":");
            //});
            //Core.Discord.SendFancyListMessage(Core.Discord.alertsChannel ,clan, Leavers, "Users found leaving " + clan.details.BungieNetName + ":");
        }
Пример #4
0
 public static async Task Discord_GuildMemberRemoved(DiscordClient client, GuildMemberRemoveEventArgs e)
 {
     new Thread(async() =>
     {
         var member = SpreadsheetTools.CheckUserAgainstSpreadsheet(e.Member.Id.ToString());
         if (member != null)
         {
             var clan         = BungieTools.GetClanFromTag(member.ClanTag);
             var discordEmbed = Core.Discord.CreateFancyMessage(clan.details.DiscordColour, clan.details.Name + " Member left Discord server!", "User was found on spreadsheet.", new List <Field>(2)
             {
                 new Field("Username", e.Member.Username + '#' + e.Member.Discriminator), new Field("ID", e.Member.Id.ToString())
             });
             Log.Information("Detected " + clan.details.Name + " member leaving discord");
             List <DiscordMessage> messages = new List <DiscordMessage>();
             foreach (var channel in Core.Discord.alertsChannels)
             {
                 messages.Add(await Core.Discord.SendFancyMessage(channel, discordEmbed));
             }
         }
     }).Start();
 }
Пример #5
0
        static async Task <Clan> GetClanFromTagOrNameAsync(CommandContext ctx, string clanNameOrTag)
        {
            var clanByTag  = BungieTools.GetClanFromTag(clanNameOrTag);
            var clanByName = BungieTools.GetClanFromName(clanNameOrTag);

            if (clanByTag != null)
            {
                return(clanByTag);
            }
            else if (clanByName != null)
            {
                return(clanByName);
            }
            else
            {
                var discordEmbed = Core.Discord.CreateFancyMessage(DiscordColor.IndianRed, "Sorry!", "The clan you provided is invalid!");
                await ctx.RespondAsync(discordEmbed);

                return(null);
            }
        }