public static async Task InsertToQueue(DiscordGuild g, ulong u, string ts, int pos) { var qnow = await GetQueue(g); qnow.Insert(pos, new QueueEntry(LavalinkUtilities.DecodeTrack(ts), u, DateTimeOffset.UtcNow, pos)); await RebuildQueue(g, qnow); }
/// <summary> /// Asynchronously loads data for this data tracker from specified redis instance. /// </summary> /// <returns></returns> internal async Task LoadAsync() { await this.Redis.GetValueForAsync(this, x => x.RepeatMode, this.RepeatMode); await this.Redis.GetValueForAsync(this, x => x.IsShuffled, this.IsShuffled); await this.Redis.GetValueForAsync(this, x => x.Volume, this.Volume); await this.Redis.GetValueForAsync(this, x => x.QueueSerialized, "[]"); var rawQueue = JsonConvert.DeserializeObject <IEnumerable <MusicItemSerializable> >(this.QueueSerialized); this.QueueSerialized = null; var mbrs = await Task.WhenAll(rawQueue.Select(x => x.MemberId).Distinct().Select(x => this.Guild.GetMemberAsync(x))); var members = mbrs.ToDictionary(x => x.Id, x => x); lock (this.QueueInternal) { this.QueueInternal.Clear(); foreach (var rawItem in rawQueue) { this.QueueInternal.Add(new MusicItem(LavalinkUtilities.DecodeTrack(rawItem.Track), members[rawItem.MemberId])); } } }
public static async Task InsertEntry(string p, ulong u, string ts, int pos) { var qnow = await GetPlaylist(u, p); var q = await qnow.GetEntries(); q.Insert(pos, new PlaylistEntry(LavalinkUtilities.DecodeTrack(ts), DateTimeOffset.UtcNow, DateTimeOffset.UtcNow)); await RebuildList(u, p, q); }
public static async Task InsertToQueue(DiscordGuild g, ulong u, List <LavalinkTrack> ts, int pos) { var qnow = await GetQueue(g); foreach (var tt in ts) { qnow.Insert(pos, new QueueEntry(LavalinkUtilities.DecodeTrack(tt.TrackString), u, DateTimeOffset.UtcNow, pos)); } await RebuildQueue(g, qnow); }
public static async Task InsertEntry(string p, ulong u, List <LavalinkTrack> ts, int pos) { var qnow = await GetPlaylist(u, p); var q = await qnow.GetEntries(); foreach (var tt in ts) { q.Insert(pos, new PlaylistEntry(LavalinkUtilities.DecodeTrack(tt.TrackString), DateTimeOffset.UtcNow, DateTimeOffset.UtcNow)); } await RebuildList(u, p, q); }
public static async Task CacheLPL(ulong g) { var connString = Bot.cfg.DbConnectString; var conn = new NpgsqlConnection(connString); await conn.OpenAsync(); var cmd = new NpgsqlCommand($"SELECT * FROM lastplayedsongs WHERE guildId = {g} ORDER BY lastplayedsongs.trackposition DESC LIMIT 1000", conn); var reader = await cmd.ExecuteReaderAsync(); while (await reader.ReadAsync()) { Bot.Guilds[g].lastPlayedSongs.Add(new Entry(LavalinkUtilities.DecodeTrack(reader.GetString(2)))); } reader.Close(); cmd.Dispose(); conn.Close(); conn.Dispose(); }
public static async Task <List <QueueEntry> > GetQueue(DiscordGuild g) { var connString = Bot.cfg.DbConnectString; var conn = new NpgsqlConnection(connString); await conn.OpenAsync(); var cmd2 = new NpgsqlCommand($"SELECT * FROM queues WHERE guildId = {g.Id} ORDER BY position ASC;", conn); var reader = await cmd2.ExecuteReaderAsync(); List <QueueEntry> queue = new(); while (await reader.ReadAsync()) { queue.Add(new QueueEntry(LavalinkUtilities.DecodeTrack(Convert.ToString(reader["trackstring"])), Convert.ToUInt64(reader["userid"]), DateTimeOffset.Parse(reader["addtime"].ToString()), Convert.ToInt32(reader["position"]))); } reader.Close(); cmd2.Dispose(); conn.Close(); conn.Dispose(); return(queue); }
public static async Task <List <Entry> > GetLPL(DiscordGuild g) { var connString = Bot.cfg.DbConnectString; var conn = new NpgsqlConnection(connString); await conn.OpenAsync(); var cmd2 = new NpgsqlCommand($"SELECT * FROM lastplayedsongs WHERE guildId = {g.Id} ORDER BY lastplayedsongs.trackposition DESC LIMIT 1000", conn); var reader = await cmd2.ExecuteReaderAsync(); List <Entry> queue = new(); while (await reader.ReadAsync()) { //queue.Add(new Entry(LavalinkUtilities.DecodeTrack((string)reader["trackstring"]), DateTimeOffset.Parse(NpgsqlDateTime.Parse((string)reader["addtime"]).ToString()))); queue.Add(new Entry(LavalinkUtilities.DecodeTrack((string)reader["trackstring"]), DateTimeOffset.UtcNow)); } reader.Close(); cmd2.Dispose(); conn.Close(); conn.Dispose(); return(queue); }
public async Task <List <PlaylistEntry> > GetEntries() { var Entries = new List <PlaylistEntry>(SongCount); if (ExternalService == ExtService.None) { var connString = Bot.cfg.DbConnectString; var conn = new NpgsqlConnection(connString); await conn.OpenAsync(); var cmd2 = new NpgsqlCommand($"SELECT * FROM playlistentries WHERE userid = {UserID} AND playlistname = @pl ORDER BY pos ASC;", conn); cmd2.Parameters.AddWithValue("pl", Name); var reader = await cmd2.ExecuteReaderAsync(); while (await reader.ReadAsync()) { Entries.Add(new PlaylistEntry(LavalinkUtilities.DecodeTrack(Convert.ToString(reader["trackstring"])), DateTimeOffset.Parse(Convert.ToString(reader["addition"])), DateTimeOffset.Parse(Convert.ToString(reader["changed"])))); } reader.Close(); cmd2.Dispose(); conn.Close(); conn.Dispose(); } else { var trs = await Bot.LLEU.First().Value.GetTracksAsync(new Uri(Url)); int i = 0; foreach (var t in trs.Tracks) { Entries.Add(new PlaylistEntry(t, DateTimeOffset.UtcNow, DateTimeOffset.UtcNow)); i++; } } return(Entries); }