all repos — paprika @ master

go rewrite of taigabot

plugins/lastfm.go (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
package plugins

import (
	"strings"

	"git.icyphox.sh/paprika/plugins/lastfm"
	"github.com/dgraph-io/badger/v3"
	"gopkg.in/irc.v3"
)

func init() {
	Register(LastFM{})
}

type LastFM struct{}

func (LastFM) Triggers() []string {
	return []string{
		".lfm",
		".np",
	}
}

func (LastFM) Execute(m *irc.Message) (string, error) {
	parts := strings.SplitN(m.Trailing(), " ", 2)
	trigger := parts[0]

	switch trigger {
	case ".lfm":
		if len(parts) == 2 {
			arg := parts[1]
			err := lastfm.Setup(arg, m.Prefix.Name)
			if err != nil {
				return "Database error", err
			}
			return "Successfully set Last.fm username", nil
		} else {
			return "Usage: .lfm <username>", nil
		}
	case ".np":
		user, err := lastfm.GetUser(m.Prefix.Name)
		if err == badger.ErrKeyNotFound {
			return "User not found. Set it using '.lfm <username>'", nil
		} else if err != nil {
			return "Database error", err
		}

		np, err := lastfm.NowPlaying(user)
		if err != nil {
			return "Listenbrainz error", err
		}
		return np, nil
	}

	panic("Unreachable!")
}