Added an argument for listsongs command that limits the number of songs in the list

This commit is contained in:
Khoi Tran 2015-12-15 20:32:20 -05:00
parent f36c18bee7
commit 6210f620bb
3 changed files with 19 additions and 5 deletions

View file

@ -61,7 +61,7 @@ Command | Description | Arguments | Admin | Example
**numsongs** | Outputs the number of songs in the queue in chat. Individual songs and songs within playlists are both counted. | None | No | `!numsongs`
**nextsong** | Outputs the title and name of the submitter of the next song in the queue if it exists. | None | No | `!nextsong`
**currentsong** | Outputs the title and name of the submitter of the song currently playing. | None | No | `!currentsong`
**listsongs** | Outputs a list of the songs currently in the queue. | None | No | `!listsongs`
**listsongs** | Outputs a list of the songs currently in the queue. | None or desired number of songs to list | No | `!listsongs`
**setcomment** | Sets the comment for the bot. If no argument is given, the current comment will be removed. | None OR new_comment | Yes | `!setcomment Hello! I am a bot. Type !help for the available commands.`
**numcached** | Outputs the number of songs currently cached on disk. | None | Yes | `!numcached`
**cachesize** | Outputs the total file size of the cache in MB. | None | Yes | `!cachesize`

View file

@ -188,7 +188,7 @@ func parseCommand(user *gumble.User, username, command string) {
// ListSongs command
case dj.conf.Aliases.ListSongsAlias:
if dj.HasPermission(username, dj.conf.Permissions.AdminListSongs) {
listSongs(user)
listSongs(user, argument)
} else {
dj.SendPrivateMessage(user, NO_PERMISSION_MSG)
}
@ -478,11 +478,23 @@ func toggleAutomaticShuffle(activate bool, user *gumble.User, username string) {
}
// listSongs handles !listSongs functionality. Sends a private message to the user a list of all songs in the queue
func listSongs(user *gumble.User) {
func listSongs(user *gumble.User, value string) {
if dj.audioStream.IsPlaying() {
num := 0
if value == "" {
num = dj.queue.Len()
} else {
if parsedNum, err := strconv.Atoi(value); err != nil {
num = dj.queue.Len()
} else {
num = parsedNum
}
}
var buffer bytes.Buffer
dj.queue.Traverse(func(i int, song Song) {
buffer.WriteString(fmt.Sprintf(SONG_LIST_HTML, song.Title(), song.Submitter()))
if i < num {
buffer.WriteString(fmt.Sprintf(SONG_LIST_HTML, i+1, song.Title(), song.Submitter()))
}
})
dj.SendPrivateMessage(user, buffer.String())
} else {

View file

@ -203,6 +203,8 @@ const CURRENT_SONG_HTML = `
const CURRENT_SONG_PLAYLIST_HTML = `
The %s currently playing is "%s", added <b>%s</b> from the %s "%s".
`
// Message shown to user when the listsongs command is issued
const SONG_LIST_HTML = `
<br>"%s", added by <b>%s</b<.</br>
<br>%d: "%s", added by <b>%s</b<.</br>
`