Пример #1
0
        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()));
        }