public async Task <string> PlayTrack(IGuild guild, SocketVoiceChannel voiceChannel, ITextChannel textChannel, LavaTrack track) { if (voiceChannel == null) { return(GuildUtils.Locate("PlayerError", textChannel)); } if (!LavaNode.TryGetPlayer(guild, out var player) || player == null) { await LavaNode.JoinAsync(voiceChannel, textChannel); player = LavaNode.GetPlayer(guild); } if (track == null) { return(GuildUtils.Locate("InvalidTrack", textChannel)); } if (player.PlayerState == PlayerState.Playing) { player.Queue.Enqueue(track); await _logService.LogAsync(new LogMessage(LogSeverity.Info, "Victoria", $"Added {track.Title} ({track.Url}) to the queue in {textChannel.Guild.Name}/{textChannel.Name}")); return(string.Format(GuildUtils.Locate("PlayerTrackAdded", textChannel), track.ToTrackLink())); } await player.PlayAsync(track); await _logService.LogAsync(new LogMessage(LogSeverity.Info, "Victoria", $"Now playing: {track.Title} ({track.Url}) in {textChannel.Guild.Name}/{textChannel.Name}")); return(string.Format(GuildUtils.Locate("PlayerNowPlaying", textChannel), track.ToTrackLink())); }