diff --git a/commands.go b/commands.go
index 59de3b4..f1bf524 100644
--- a/commands.go
+++ b/commands.go
@@ -241,12 +241,16 @@ func skip(user *gumble.User, username string, admin, playlistSkip bool) {
if playlistSkip {
if dj.queue.CurrentSong().playlist != nil {
if err := dj.queue.CurrentSong().playlist.AddSkip(username); err == nil {
+ submitterSkipped := false
if admin {
dj.client.Self.Channel.Send(ADMIN_PLAYLIST_SKIP_MSG, false)
+ } else if dj.queue.CurrentSong().submitter == username {
+ dj.client.Self.Channel.Send(fmt.Sprintf(PLAYLIST_SUBMITTER_SKIP_HTML, username), false)
+ submitterSkipped = true
} else {
dj.client.Self.Channel.Send(fmt.Sprintf(PLAYLIST_SKIP_ADDED_HTML, username), false)
}
- if dj.queue.CurrentSong().playlist.SkipReached(len(dj.client.Self.Channel.Users)) || admin {
+ if submitterSkipped || dj.queue.CurrentSong().playlist.SkipReached(len(dj.client.Self.Channel.Users)) || admin {
id := dj.queue.CurrentSong().playlist.id
dj.queue.CurrentSong().playlist.DeleteSkippers()
for i := 0; i < len(dj.queue.queue); i++ {
@@ -261,7 +265,9 @@ func skip(user *gumble.User, username string, admin, playlistSkip bool) {
// Set dontSkip to true to avoid audioStream.Stop() callback skipping the new first song.
dj.queue.CurrentSong().dontSkip = true
}
- dj.client.Self.Channel.Send(PLAYLIST_SKIPPED_HTML, false)
+ if !(submitterSkipped || admin) {
+ dj.client.Self.Channel.Send(PLAYLIST_SKIPPED_HTML, false)
+ }
if err := dj.audioStream.Stop(); err != nil {
panic(errors.New("An error occurred while stopping the current song."))
}
@@ -272,13 +278,19 @@ func skip(user *gumble.User, username string, admin, playlistSkip bool) {
}
} else {
if err := dj.queue.CurrentSong().AddSkip(username); err == nil {
+ submitterSkipped := false
if admin {
dj.client.Self.Channel.Send(ADMIN_SONG_SKIP_MSG, false)
+ } else if dj.queue.CurrentSong().submitter == username {
+ dj.client.Self.Channel.Send(fmt.Sprintf(SUBMITTER_SKIP_HTML, username), false)
+ submitterSkipped = true
} else {
dj.client.Self.Channel.Send(fmt.Sprintf(SKIP_ADDED_HTML, username), false)
}
- if dj.queue.CurrentSong().SkipReached(len(dj.client.Self.Channel.Users)) || admin {
- dj.client.Self.Channel.Send(SONG_SKIPPED_HTML, false)
+ if submitterSkipped || dj.queue.CurrentSong().SkipReached(len(dj.client.Self.Channel.Users)) || admin {
+ if !(submitterSkipped || admin) {
+ dj.client.Self.Channel.Send(SONG_SKIPPED_HTML, false)
+ }
if err := dj.audioStream.Stop(); err != nil {
panic(errors.New("An error occurred while stopping the current song."))
}
diff --git a/strings.go b/strings.go
index 3a43444..e9e3855 100644
--- a/strings.go
+++ b/strings.go
@@ -155,11 +155,21 @@ const SKIP_ADDED_HTML = `
%s has voted to skip the current song.
`
+// Message shown to users when the submitter of a song decides to skip their song.
+const SUBMITTER_SKIP_HTML = `
+ The current song has been skipped by %s, the submitter.
+`
+
// Message shown to users when another user votes to skip the current playlist.
const PLAYLIST_SKIP_ADDED_HTML = `
%s has voted to skip the current playlist.
`
+// Message shown to users when the submitter of a song decides to skip their song.
+const PLAYLIST_SUBMITTER_SKIP_HTML = `
+ The current playlist has been skipped by %s, the submitter.
+`
+
// Message shown to users when they successfully change the volume.
const VOLUME_SUCCESS_HTML = `
%s has changed the volume to %.2f.