public async Task RefreshStatus(LavaPlayer player) { await DoWithSemaphore(player, async (player) => { EmbedInfo embedInfo = await GetAudioInfoEmbedInfo((SocketGuild)player.VoiceChannel.Guild); await UpdateEmbed(embedInfo, player, (info, p) => GetRefreshedStatus(info.Embed, p)); }); }
public async Task RefreshTrack(LavaPlayer player) { await DoWithSemaphore(player, async (player) => { EmbedInfo embedInfo = await GetAudioInfoEmbedInfo((SocketGuild)player.VoiceChannel.Guild); await UpdateEmbed(embedInfo, player, async(info, p) => await GetRefreshedAudioInfo(info.Embed, p.CurrentTrack)); }); }
internal static Task UpdateEmbed(this EmbedInfo embedInfo, LavaPlayer player, Func <Embed, Embed> embedRefresher) { return(UpdateEmbed(embedInfo, player, (embed) => { embed = embedRefresher(embed); return Task.FromResult(embed); })); }
internal static async Task <EmbedInfo> GetEmbedInfo(ISocketMessageChannel textChannel) { var messagesList = await textChannel.GetMessagesAsync(1).FlattenAsync(); var message = messagesList.FirstOrDefault(); var embed = message?.Embeds.FirstOrDefault(); var info = new EmbedInfo(textChannel, embed as Embed, message); return(info); }
private async Task UpdateEmbed(EmbedInfo embedInfo, LavaPlayer player, Func <EmbedInfo, LavaPlayer, Embed> embedRefresher) { if (embedInfo == null) { return; } if (embedInfo.Embed == null) { embedInfo.Embed = await GetNewAudioInfo(player); var msg = await embedInfo.Channel.SendMessageAsync(embed : embedInfo.Embed); } else { embedInfo.Embed = embedRefresher(embedInfo, player); await((RestUserMessage)embedInfo.Message).ModifyAsync(msg => msg.Embed = embedInfo.Embed); } }
internal static async Task UpdateEmbed(this EmbedInfo embedInfo, LavaPlayer player, Func <Embed, Task <Embed> > embedRefresher) { if (embedInfo is null) { return; } if (embedInfo.Embed is null) { embedInfo.Embed = await GetNewAudioInfo(player); var msg = await embedInfo.Channel.SendMessageAsync(embed : embedInfo.Embed); } else { embedInfo.Embed = await embedRefresher(embedInfo.Embed); if (embedInfo.Message is IUserMessage userMessage) { await userMessage.ModifyAsync(msg => msg.Embed = embedInfo.Embed); } } }
private async Task <EmbedInfo> GetAudioInfoEmbedInfo(SocketGuild guild) { SocketTextChannel channel = GetAudioInfoChannel(guild); if (channel == null) { return(null); } var info = new EmbedInfo() { Channel = channel }; var messages = await info.Channel.GetMessagesAsync(1).FlattenAsync(); if (messages.Any()) { info.Message = messages.FirstOrDefault(); info.Embed = (Embed)info.Message.Embeds.FirstOrDefault(); } return(info); }
private void VerifyLinkerArgs(string linkerPath, EmbedInfo[] expectedResources ) { string locale = "es"; var index = m_sut.LinkerPath.IndexOf(linkerPath); Assert.That(index >= 0); Assert.That(m_sut.LinkerCulture[index], Is.EqualTo(locale)); Assert.That(m_sut.LinkerFileVersion[index], Is.EqualTo("8.4.2.1234")); Assert.That(m_sut.LinkerProductVersion[index], Is.EqualTo("8.4.2 beta 2")); Assert.That(m_sut.LinkerVersion[index], Is.EqualTo("8.4.2.*")); Assert.That(m_sut.LinkerAlArgs[index], Is.StringContaining("\"8.4.2 beta 2\"")); var embeddedResources = m_sut.LinkerResources[index]; Assert.That(embeddedResources.Count, Is.EqualTo(expectedResources.Length)); foreach (var resource in expectedResources) Assert.That(embeddedResources, Has.Member(resource)); }