protected override async Task ProcessListenSessionCommandInternalAsync(MBUser user, Message message, ILogger logger, bool isAuthorizationCallback = false) { if (ListenGroup != null) { logger.LogInformation("Group {group} is already setup for listen session", ListenGroup); await TelegramClient.SendTextMessageAsync( message.Chat.Id, "This group is already setup for listening."); return; } var spotifyClient = await SpotifyService.GetClientAsync(user); var playlist = await spotifyClient.Playlists.Create(user.SpotifyId, new PlaylistCreateRequest($"{message.Chat.Title} Playlist") { Description = $"Playlist managed by Music Bot. For Telegram group chat '{message.Chat.Title}'", Collaborative = true, Public = false }); var group = new ListenGroup() { Id = ListenGroup.GetId(ChatServices.Telegram, message.Chat.Id.ToString()), ServiceId = message.Chat.Id.ToString(), OwnerMBDisplayName = user.DisplayName, OwnerMBUserId = user.Id, OwnerSpotifyUserId = user.SpotifyId, ActiveListenerIds = new string[] { }, LastListened = DateTimeOffset.UtcNow, SpotifyPlaylistDisplayName = playlist.Name, SpotifyPlaylistId = playlist.Id, Created = DateTimeOffset.UtcNow }; await ListenSessionService.CreateGroupAsync(group); await TelegramClient.SendTextMessageAsync( message.Chat.Id, "Setup Complete. " + playlist.ExternalUrls.FirstOrDefault().Value); return; }
protected override async Task ProcessListenSessionCommandInternalAsync(MBUser user, Message message, ILogger logger, bool isAuthorizationCallback = false) { var listenSession = await ListenSessionService.GetGroupAsync(ChatServices.Telegram, message.Chat.Id.ToString()); if (listenSession == null) { await TelegramClient.SendTextMessageAsync( message.Chat.Id, "This group isn't setup for listening. Run /init first."); } if (CurrentGroupPlaylist.Tracks.Total == 0) { await TelegramClient.SendTextMessageAsync( message.Chat.Id, "No tracks queued up. Add one!"); return; } }
protected override async Task ProcessInternalAsync(MBUser user, Message message, ILogger logger, bool isAuthorizationCallback = false) { ListenGroup = await ListenSessionService.GetGroupAsync(ChatServices.Telegram, message.Chat.Id.ToString()); if (ListenGroup != null) { OwnerSpotifyClient = await SpotifyService.GetClientAsync(ListenGroup.OwnerMBUserId); MessageSenderSpotifyClient = await SpotifyService.GetClientAsync(user); try { CurrentGroupPlaylist = await OwnerSpotifyClient.Playlists.Get(ListenGroup.SpotifyPlaylistId); if (CurrentGroupPlaylist == null) { // TODO: handle User deleted playlist logger.LogError("Playlist wasn't found.. must have been deleted"); return; } } catch (Exception ex) { logger.LogError(ex, "Error retrieving playlist"); } } else if (RequiresActiveGroup) { logger.LogInformation("Requires active group to run this command."); await TelegramClient.SendTextMessageAsync( message.Chat.Id, "Requires an active group to do this. Run /init"); return; } await ProcessListenSessionCommandInternalAsync(user, message, logger, isAuthorizationCallback); }