public async Task ExecuteCommandAsync(Message message, Func <Chat, string, Task> responseFunc) { string lastfmUsername = await lastfmUsernameService.TryGetUsernameAsync(message.From.Id); if (string.IsNullOrEmpty(lastfmUsername)) { throw new CommandException("Seems like you haven't registered a username 😢"); } var latestScrobble = await lastfmService.GetLatestScrobbleAsync(lastfmUsername); if (latestScrobble == null) { string encodedUsername = HttpUtility.HtmlEncode(lastfmUsername); throw new CommandException($"Could not find <i>{encodedUsername}</i> on last.fm 😢"); } var url = await spotifyService.TryGetLinkToTrackAsync( latestScrobble.LastfmTrack.ArtistName, latestScrobble.LastfmTrack.Name); string response = GetResponseMessage(lastfmUsername, latestScrobble, url); await responseFunc(message.Chat, response); }
public async Task ExecuteCommandAsync(Message message, Func <Chat, string, Task> responseFunc) { var lastfmUsername = await lastfmUsernameService.TryGetUsernameAsync(message.From.Id); lastfmUsername = HttpUtility.HtmlEncode(lastfmUsername); if (string.IsNullOrEmpty(lastfmUsername)) { throw new CommandException("No username set 😢"); } IReadOnlyList <LastfmTrack> topTracks = await lastfmService.GetTopTracksAsync(lastfmUsername); if (topTracks.Count == 0) { throw new CommandException($"Could not retrieve top tracks for <i>{lastfmUsername}</i>"); } string response = await GetResponseAsync(lastfmUsername, topTracks); await responseFunc(message.Chat, response); }