Esempio n. 1
0
        public void RemovePalantiri(ObservedGuild guild)
        {
            // remove tether
            PalantirTethers.Remove(PalantirTethers.Find(t => t.PalantirEndpoint.ObserveToken == guild.ObserveToken));

            // remove palantir from db
            PalantirDbContext context = new PalantirDbContext();
            PalantirEntity    e       = context.Palantiri.FirstOrDefault(ptr => ptr.Token == guild.ObserveToken);

            context.Palantiri.Remove(e);
            try
            {
                context.SaveChanges();
            }
            catch (Exception ex) { Console.WriteLine(ex.ToString()); }
            context.Dispose();
            // restart string op = "sudo service palantir restart".Bash();
            //Environment.Exit(0);
            //UpdateMemberGuilds();
        }
Esempio n. 2
0
        public void UpdatePalantirSettings(Tether tether)
        {
            PalantirDbContext   context = new PalantirDbContext();
            GuildSettingsEntity entity  = context.GuildSettings.FirstOrDefault(s => s.GuildID == tether.PalantirEndpoint.GuildID);

            if (entity != null)
            {
                entity.Settings = JsonConvert.SerializeObject(tether.PalantirSettings);
                context.SaveChanges();
            }
            else
            {
                entity          = new GuildSettingsEntity();
                entity.GuildID  = tether.PalantirEndpoint.GuildID;
                entity.Settings = JsonConvert.SerializeObject(tether.PalantirSettings);
                context.GuildSettings.Add(entity);
                context.SaveChanges();
            }
            context.SaveChanges();
            context.Dispose();
        }
Esempio n. 3
0
        public static string SetInventory(List <SpriteProperty> sprites, string login)
        {
            string        inv       = "";
            List <Sprite> available = GetAvailableSprites();

            available.ForEach(s =>
            {
                if (sprites.Any(a => a.ID == s.ID))
                {
                    SpriteProperty found = sprites.FirstOrDefault(a => a.ID == s.ID);
                    inv += (found.Activated ? new string('.', found.Slot) : "") + s.ID + ",";
                }
            });
            inv = inv.Remove(inv.Length - 1);
            PalantirDbContext context = new PalantirDbContext();

            context.Members.FirstOrDefault(m => m.Login == login).Sprites = "0," + inv;
            context.SaveChanges();
            context.Dispose();
            return(inv);
        }
Esempio n. 4
0
        public static void SetOnlineSprite(string login, string lobbyKey, string lobbyPlayerID)
        {
            List <SpriteProperty> playersprites = GetInventory(login).Where(i => i.Activated).ToList();
            PalantirDbContext     context       = new PalantirDbContext();

            context.OnlineSprites.RemoveRange(context.OnlineSprites.Where(o => o.LobbyKey == lobbyKey && lobbyPlayerID == o.LobbyPlayerID));
            try
            {
                context.SaveChanges();
            }
            catch (Exception e) { //Console.WriteLine("Error deleting sprite:\n" + e);
            }
            foreach (SpriteProperty slot in playersprites)
            {
                OnlineSpritesEntity newsprite = new OnlineSpritesEntity();
                newsprite.LobbyKey      = lobbyKey;
                newsprite.LobbyPlayerID = lobbyPlayerID;
                newsprite.Date          = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
                newsprite.Sprite        = slot is object?slot.ID.ToString() : "0";

                newsprite.Slot = slot.Slot + 1;
                newsprite.ID   = lobbyKey + lobbyPlayerID + slot.Slot.ToString();
                context.OnlineSprites.Add(newsprite);
            }
            //OnlineSpritesEntity aprilf = new OnlineSpritesEntity();
            //aprilf.LobbyKey = lobbyKey;
            //aprilf.LobbyPlayerID = lobbyPlayerID;
            //aprilf.Date = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");
            //aprilf.Sprite = (new Random()).Next(1,83).ToString();
            //aprilf.Slot = 1;
            //aprilf.ID = lobbyKey + lobbyPlayerID + "aprf";
            //context.OnlineSprites.Add(aprilf);
            try
            {
                context.SaveChanges();
            }
            catch (Exception e) { Console.WriteLine("Error writing sprite:\n" + e); }
            context.Dispose();
        }
Esempio n. 5
0
        public async Task <int> UpdatePatrons()
        {
            List <string> patrons              = new List <string>();
            List <string> patronizer           = new List <string>();
            List <string> patronized           = new List <string>();
            Dictionary <string, string> emojis = new Dictionary <string, string>();
            // collect ids of patron members
            DiscordGuild typotestground = await Program.Client.GetGuildAsync(779435254225698827);

            foreach (DiscordMember member in await typotestground.GetAllMembersAsync())
            {
                if (member.Roles.Any(role => role.Id == 832744566905241610))
                {
                    patrons.Add(member.Id.ToString());
                }
                if (member.Roles.Any(role => role.Id == 859100010184572938))
                {
                    patronizer.Add(member.Id.ToString());
                }
            }
            ;
            PatronCount = patrons.Count();
            PalantirDbContext db = new PalantirDbContext();
            // iterate through palantir members and set flags
            await db.Members.ForEachAsync(member =>
            {
                PermissionFlag flag = new PermissionFlag((byte)member.Flag);
                flag.Patron         = patrons.Any(patron => member.Member.Contains(patron));
                if (patronizer.Any(id => member.Member.Contains(id)))
                {
                    flag.Patronizer = true;
                    if (member.Patronize is not null)
                    {
                        patronized.Add(member.Patronize.Split("#")[0]);
                    }
                }
                else
                {
                    flag.Patronizer = false;
                }
                string emoji = String.IsNullOrEmpty(member.Emoji) ? "" : member.Emoji;
                if (flag.Patron || flag.BotAdmin)
                {
                    emojis.Add(member.Login, emoji);
                }
                member.Flag = flag.CalculateFlag();
            });

            // set flags of patronized members
            patronized.ForEach(id =>
            {
                if (db.Members.Any(member => member.Member.Contains(id)))
                {
                    MemberEntity member = db.Members.FirstOrDefault(member => member.Member.Contains(id));
                    PermissionFlag flag = new PermissionFlag((byte)member.Flag);
                    flag.Patron         = true;
                    string emoji        = String.IsNullOrEmpty(member.Emoji) ? "" : member.Emoji;
                    emojis.Add(member.Login, emoji);
                    member.Flag = flag.CalculateFlag();
                }
            });

            db.SaveChanges();
            db.Dispose();
            PatronEmojis = emojis;
            return(patrons.Count);
        }
Esempio n. 6
0
        private static void Drop()
        {
            while (true)
            {
                PalantirDbContext context = new PalantirDbContext();

                try
                {
                    context.Drop.RemoveRange(context.Drop);
                    context.SaveChanges();
                }
                catch (Microsoft.Data.Sqlite.SqliteException e)
                {
                    if (e.SqliteErrorCode == 8)
                    {
                        Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " > Error clearing table: Database locked. Waiting 100ms then retry.");
                        Thread.Sleep(100);
                    }
                    else
                    {
                        Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " > Unhandled SQL error clearing table, immediately trying again: " + e.ToString());
                    }
                    continue;
                }
                catch (Exception e)
                {
                    Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " > Unhandled error clearing table, immediately trying again: " + e.ToString());
                    continue;
                }

                DropEntity drop = new DropEntity();
                drop.CaughtLobbyKey      = "";
                drop.CaughtLobbyPlayerID = "";
                drop.DropID      = (new Random()).Next(1, 99999999).ToString();
                drop.ValidFrom   = DateTime.UtcNow.AddSeconds(20).ToString("yyyy-MM-dd HH:mm:ss");
                drop.EventDropID = Events.GetRandomEventDropID();

                try
                {
                    context.Drop.Add(drop);
                    context.SaveChanges();
                }
                catch (Microsoft.Data.Sqlite.SqliteException e)
                {
                    if (e.SqliteErrorCode == 8)
                    {
                        Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " > Error adding drop: Database locked. Waiting 100ms then retry..");
                        Thread.Sleep(100);
                    }
                    else
                    {
                        Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " > Unhandled SQL error adding drop, immediately trying again: " + e.ToString());
                    }
                    continue;
                }
                catch (Exception e)
                {
                    Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " > Unhandled error adding drop, immediately trying again: " + e.ToString());
                    continue;
                }

                context.Dispose();
                int sleep = CalculateDropTimeoutSeconds() * 1000 + 20000;
                Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " > Next drop in " + sleep
                                  + " ms at " + DateTime.Now.AddMilliseconds(sleep).ToString("HH:mm:ss")
                                  + " for EventDropID #" + drop.EventDropID);
                Thread.Sleep(sleep);
            }
        }