コード例 #1
0
ファイル: remember.go プロジェクト: velour/catbase
// NewRememberPlugin creates a new RememberPlugin with the Plugin interface
func NewRemember(b bot.Bot) *RememberPlugin {
	p := RememberPlugin{
		Bot: b,
		Log: make(map[string][]msg.Message),
		db:  b.DB(),
	}
	return &p
}
コード例 #2
0
ファイル: counter.go プロジェクト: velour/catbase
// NewCounterPlugin creates a new CounterPlugin with the Plugin interface
func New(bot bot.Bot) *CounterPlugin {
	if bot.DBVersion() == 1 {
		if _, err := bot.DB().Exec(`create table if not exists counter (
			id integer primary key,
			nick string,
			item string,
			count integer
		);`); err != nil {
			log.Fatal(err)
		}
	}
	return &CounterPlugin{
		Bot: bot,
		DB:  bot.DB(),
	}
}
コード例 #3
0
ファイル: factoid.go プロジェクト: velour/catbase
// NewFactoid creates a new Factoid with the Plugin interface
func New(botInst bot.Bot) *Factoid {
	p := &Factoid{
		Bot: botInst,
		NotFound: []string{
			"I don't know.",
			"NONONONO",
			"((",
			"*pukes*",
			"NOPE! NOPE! NOPE!",
			"One time, I learned how to jump rope.",
		},
		db: botInst.DB(),
	}

	_, err := p.db.Exec(`create table if not exists factoid (
			id integer primary key,
			fact string,
			tidbit string,
			verb string,
			owner string,
			created integer,
			accessed integer,
			count integer
		);`)
	if err != nil {
		log.Fatal(err)
	}

	for _, channel := range botInst.Config().Channels {
		go p.factTimer(channel)

		go func(ch string) {
			// Some random time to start up
			time.Sleep(time.Duration(15) * time.Second)
			if ok, fact := p.findTrigger(p.Bot.Config().Factoid.StartupFact); ok {
				p.sayFact(msg.Message{
					Channel: ch,
					Body:    "speed test", // BUG: This is defined in the config too
					Command: true,
					Action:  false,
				}, *fact)
			}
		}(channel)
	}

	return p
}
コード例 #4
0
ファイル: admin.go プロジェクト: velour/catbase
// NewAdminPlugin creates a new AdminPlugin with the Plugin interface
func New(bot bot.Bot) *AdminPlugin {
	p := &AdminPlugin{
		Bot: bot,
		db:  bot.DB(),
	}
	p.LoadData()
	return p
}
コード例 #5
0
ファイル: babbler.go プロジェクト: velour/catbase
func New(bot bot.Bot) *BabblerPlugin {
	plugin := &BabblerPlugin{
		Bot:      bot,
		db:       bot.DB(),
		config:   bot.Config(),
		babblers: map[string]*babbler{},
	}

	return plugin
}
コード例 #6
0
ファイル: first.go プロジェクト: velour/catbase
// NewFirstPlugin creates a new FirstPlugin with the Plugin interface
func New(b bot.Bot) *FirstPlugin {
	if b.DBVersion() == 1 {
		_, err := b.DB().Exec(`create table if not exists first (
			id integer primary key,
			day integer,
			time integer,
			body string,
			nick string
		);`)
		if err != nil {
			log.Fatal("Could not create first table: ", err)
		}
	}

	log.Println("First plugin initialized with day:", midnight(time.Now()))

	first, err := getLastFirst(b.DB())
	if err != nil {
		log.Fatal("Could not initialize first plugin: ", err)
	}

	return &FirstPlugin{
		Bot:   b,
		db:    b.DB(),
		First: first,
	}
}
コード例 #7
0
ファイル: beers.go プロジェクト: velour/catbase
// NewBeersPlugin creates a new BeersPlugin with the Plugin interface
func New(bot bot.Bot) *BeersPlugin {
	if bot.DBVersion() == 1 {
		if _, err := bot.DB().Exec(`create table if not exists untappd (
			id integer primary key,
			untappdUser string,
			channel string,
			lastCheckin integer,
			chanNick string
		);`); err != nil {
			log.Fatal(err)
		}
	}
	p := BeersPlugin{
		Bot: bot,
		db:  bot.DB(),
	}
	p.LoadData()
	for _, channel := range bot.Config().Untappd.Channels {
		go p.untappdLoop(channel)
	}
	return &p
}
コード例 #8
0
ファイル: downtime.go プロジェクト: velour/catbase
// NewDowntimePlugin creates a new DowntimePlugin with the Plugin interface
func New(bot bot.Bot) *DowntimePlugin {
	p := DowntimePlugin{
		Bot: bot,
		db:  bot.DB(),
	}

	if bot.DBVersion() == 1 {
		_, err := p.db.Exec(`create table if not exists downtime (
			id integer primary key,
			nick string,
			lastSeen integer
		);`)
		if err != nil {
			log.Fatal("Error creating downtime table: ", err)
		}
	}

	return &p
}