diff --git a/TomatenMusic/TomatenMusic.csproj b/TomatenMusic/TomatenMusic.csproj
index 453b8d7..d793b10 100644
--- a/TomatenMusic/TomatenMusic.csproj
+++ b/TomatenMusic/TomatenMusic.csproj
@@ -5,10 +5,6 @@
enable
enable
TomatenMusic_Api
-
- https://api.nuget.org/v3/index.json;
- https://nuget.emzi0767.com/api/v3/index.json
-
diff --git a/TomatenMusicCore/Music/GuildPlayer.cs b/TomatenMusicCore/Music/GuildPlayer.cs
index c877454..d2db34a 100644
--- a/TomatenMusicCore/Music/GuildPlayer.cs
+++ b/TomatenMusicCore/Music/GuildPlayer.cs
@@ -89,17 +89,12 @@ namespace TomatenMusic.Music
MusicActionResponse response;
try
{
- response = PlayerQueue.NextTrack(true);
+ response = PlayerQueue.NextTrack(true, Autoplay);
}catch (Exception ex)
{
if (Autoplay)
{
- YoutubeService youtube = TomatenMusicBot.ServiceProvider.GetRequiredService();
- LavalinkTrack newTrack = await youtube.GetRelatedTrackAsync(CurrentTrack.TrackIdentifier, PlayerQueue.PlayedTracks.Take(5).ToList().ConvertAll(x => x.TrackIdentifier));
-
- _logger.LogInformation($"Skipped Track {CurrentTrack.Title} for Autoplayed Track {newTrack.Title}");
- await PlayAsync(newTrack);
- QueuePrompt.UpdateFor(GuildId);
+ _ = OnAutoPlay(CurrentTrack);
return;
}
throw ex;
@@ -164,10 +159,16 @@ namespace TomatenMusic.Music
if (channel.Type == ChannelType.Stage)
{
- DiscordStageInstance stageInstance = await channel.GetStageInstanceAsync();
+ DiscordStageInstance stageInstance;
+ try
+ {
+ stageInstance = await channel.GetStageInstanceAsync();
- if (stageInstance == null)
+ }catch (Exception ex)
+ {
stageInstance = await channel.CreateStageInstanceAsync("Music");
+ }
+
await stageInstance.Channel.UpdateCurrentUserVoiceStateAsync(false);
}
@@ -203,7 +204,6 @@ namespace TomatenMusic.Music
public async override Task OnTrackEndAsync(TrackEndEventArgs eventArgs)
{
DisconnectOnStop = false;
- YoutubeService youtube = TomatenMusicBot.ServiceProvider.GetRequiredService();
var oldTrack = CurrentTrack;
if (eventArgs.Reason != TrackEndReason.Finished)
@@ -226,12 +226,8 @@ namespace TomatenMusic.Music
return;
}
- TomatenMusicTrack newTrack = await youtube.GetRelatedTrackAsync(oldTrack.TrackIdentifier, PlayerQueue.PlayedTracks.Take(5).ToList().ConvertAll(x => x.TrackIdentifier));
- _logger.LogInformation($"Autoplaying for track {oldTrack.TrackIdentifier} with Track {newTrack.TrackIdentifier}");
await base.OnTrackEndAsync(eventArgs);
- PlayerQueue.LastTrack = newTrack;
- await newTrack.Play(this);
- QueuePrompt.UpdateFor(GuildId);
+ _ = OnAutoPlay(oldTrack);
}
}
@@ -239,6 +235,21 @@ namespace TomatenMusic.Music
}
+ public async Task OnAutoPlay(LavalinkTrack oldTrack)
+ {
+ YoutubeService youtube = TomatenMusicBot.ServiceProvider.GetRequiredService();
+
+ TomatenMusicTrack newTrack;
+ if (oldTrack.Provider != StreamProvider.YouTube)
+ newTrack = await youtube.GetRelatedTrackAsync(PlayerQueue.PlayedTracks.First(x => x.Provider == StreamProvider.YouTube).TrackIdentifier, PlayerQueue.PlayedTracks.Take(5).ToList().ConvertAll(x => x.TrackIdentifier));
+ else
+ newTrack = await youtube.GetRelatedTrackAsync(oldTrack.TrackIdentifier, PlayerQueue.PlayedTracks.Take(5).ToList().ConvertAll(x => x.TrackIdentifier));
+ _logger.LogInformation($"Autoplaying for track {oldTrack.TrackIdentifier} with Track {newTrack.TrackIdentifier}");
+ PlayerQueue.LastTrack = newTrack;
+ await newTrack.PlayNow(this, withoutQueuePrepend: true);
+ QueuePrompt.UpdateFor(GuildId);
+ }
+
public async Task GetChannelAsync()
{
EnsureConnected();
diff --git a/TomatenMusicCore/Music/PlayerQueue.cs b/TomatenMusicCore/Music/PlayerQueue.cs
index b8ca3cf..0a3d646 100644
--- a/TomatenMusicCore/Music/PlayerQueue.cs
+++ b/TomatenMusicCore/Music/PlayerQueue.cs
@@ -92,10 +92,11 @@ namespace TomatenMusic.Music
}
- public MusicActionResponse NextTrack(bool ignoreLoop = false)
+ public MusicActionResponse NextTrack(bool ignoreLoop = false, bool autoplay = false)
{
if (LastTrack != null)
- PlayedTracks = new Queue(PlayedTracks.Prepend(new TomatenMusicTrack(LastTrack.WithPosition(TimeSpan.Zero))));
+ if (LoopType != LoopType.NONE && Queue.Count == 0 || autoplay)
+ PlayedTracks = new Queue(PlayedTracks.Prepend(new TomatenMusicTrack(LastTrack.WithPosition(TimeSpan.Zero))));
switch (LoopType)
{
@@ -157,8 +158,7 @@ namespace TomatenMusic.Music
if (type == LoopType.QUEUE)
{
- QueueLoopList = new List(Queue);
- QueueLoopList.Add(LastTrack);
+ QueueLoopList = new List(QueueLoopList.Prepend(LastTrack));
}
}
}
diff --git a/TomatenMusicCore/Prompt/Implementation/QueuePrompt.cs b/TomatenMusicCore/Prompt/Implementation/QueuePrompt.cs
index fb087d8..0677813 100644
--- a/TomatenMusicCore/Prompt/Implementation/QueuePrompt.cs
+++ b/TomatenMusicCore/Prompt/Implementation/QueuePrompt.cs
@@ -98,7 +98,10 @@ namespace TomatenMusic.Prompt.Implementation
await Player.RewindAsync();
}catch (Exception ex)
{
-
+ _ = args.Interaction.CreateResponseAsync(
+ DSharpPlus.InteractionResponseType.ChannelMessageWithSource,
+ new DiscordInteractionResponseBuilder()
+ .WithContent($"An Error occurred during this Interaction {ex.Message}"));
}
}
}
@@ -131,8 +134,18 @@ namespace TomatenMusic.Prompt.Implementation
_ = args.Interaction.EditOriginalResponseAsync(new DiscordWebhookBuilder().WithContent("Please connect to the bots Channel to use this Interaction"));
return;
}
+ try
+ {
+ await Player.SkipAsync();
- await Player.SkipAsync();
+ }
+ catch (Exception ex)
+ {
+ _ = args.Interaction.CreateResponseAsync(
+ DSharpPlus.InteractionResponseType.ChannelMessageWithSource,
+ new DiscordInteractionResponseBuilder()
+ .WithContent($"An Error occurred during this Interaction {ex.Message}"));
+ }
System.Timers.Timer timer = new System.Timers.Timer(800);
timer.Elapsed += (s, args) =>
diff --git a/TomatenMusicCore/TomatenMusicCore.csproj b/TomatenMusicCore/TomatenMusicCore.csproj
index 620cb46..36d5b2e 100644
--- a/TomatenMusicCore/TomatenMusicCore.csproj
+++ b/TomatenMusicCore/TomatenMusicCore.csproj
@@ -4,17 +4,13 @@
net6.0
enable
enable
-
- https://api.nuget.org/v3/index.json;
- https://nuget.emzi0767.com/api/v3/index.json
-
-
-
-
-
+
+
+
+