mirror of https://github.com/velour/catbase.git
achievements: sketch
This commit is contained in:
parent
21d4b11df9
commit
30077d1b6c
2
main.go
2
main.go
|
@ -9,6 +9,7 @@ import (
|
|||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/velour/catbase/plugins/achievements"
|
||||
"github.com/velour/catbase/plugins/aoc"
|
||||
"github.com/velour/catbase/plugins/twitter"
|
||||
|
||||
|
@ -138,6 +139,7 @@ func main() {
|
|||
b.AddPlugin(impossible.New(b))
|
||||
b.AddPlugin(cli.New(b))
|
||||
b.AddPlugin(aoc.New(b))
|
||||
b.AddPlugin(achievements.New(b))
|
||||
// catches anything left, will always return true
|
||||
b.AddPlugin(fact.New(b))
|
||||
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
package achievements
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
|
||||
"github.com/velour/catbase/bot"
|
||||
"github.com/velour/catbase/bot/msg"
|
||||
"github.com/velour/catbase/config"
|
||||
)
|
||||
|
||||
// I feel dirty about this, but ;shrug
|
||||
var instance *AchievementsPlugin
|
||||
|
||||
type Category int
|
||||
|
||||
const (
|
||||
Daily = iota
|
||||
Monthly
|
||||
Yearly
|
||||
Forever
|
||||
)
|
||||
|
||||
// A plugin to track our misdeeds
|
||||
type AchievementsPlugin struct {
|
||||
bot bot.Bot
|
||||
cfg *config.Config
|
||||
db *sqlx.DB
|
||||
}
|
||||
|
||||
func New(b bot.Bot) *AchievementsPlugin {
|
||||
if instance == nil {
|
||||
ap := &AchievementsPlugin{
|
||||
bot: b,
|
||||
cfg: b.Config(),
|
||||
db: b.DB(),
|
||||
}
|
||||
instance = ap
|
||||
ap.mkDB()
|
||||
b.Register(ap, bot.Message, ap.message)
|
||||
b.Register(ap, bot.Help, ap.help)
|
||||
}
|
||||
return instance
|
||||
}
|
||||
|
||||
func (p *AchievementsPlugin) mkDB() error {
|
||||
q := `
|
||||
create table if not exists achievements
|
||||
`
|
||||
tx, err := p.db.Beginx()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = tx.Exec(q)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *AchievementsPlugin) message(c bot.Connector, kind bot.Kind, message msg.Message, args ...interface{}) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (p *AchievementsPlugin) help(c bot.Connector, kind bot.Kind, message msg.Message, args ...interface{}) bool {
|
||||
ch := message.Channel
|
||||
me := p.bot.WhoAmI()
|
||||
msg := fmt.Sprintf("%s helps those who help themselves.", me)
|
||||
p.bot.Send(c, bot.Message, ch, msg)
|
||||
return true
|
||||
}
|
||||
|
||||
// Award is used by other plugins to register a particular award for a user
|
||||
func Award(nick, thing string, category Category) error {
|
||||
return nil
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
package achievements
|
Loading…
Reference in New Issue