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(); }
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(); }
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); }
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(); }
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); }
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); } }