예제 #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
파일: 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
}
예제 #3
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,
	}
}
예제 #4
0
파일: leftpad.go 프로젝트: velour/catbase
// New creates a new LeftpadPlugin with the Plugin interface
func New(bot bot.Bot) *LeftpadPlugin {
	p := LeftpadPlugin{
		bot:    bot,
		config: bot.Config(),
	}
	return &p
}
예제 #5
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(),
	}
}
예제 #6
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
}
예제 #7
0
파일: talker.go 프로젝트: velour/catbase
func New(bot bot.Bot) *TalkerPlugin {
	rand.Seed(time.Now().Unix())
	return &TalkerPlugin{
		Bot:          bot,
		enforceNicks: bot.Config().EnforceNicks,
		sayings:      bot.Config().WelcomeMsgs,
	}
}
예제 #8
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
}
예제 #9
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
}
예제 #10
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
}
예제 #11
0
파일: twitch.go 프로젝트: velour/catbase
func New(bot bot.Bot) *TwitchPlugin {
	p := &TwitchPlugin{
		Bot:        bot,
		config:     bot.Config(),
		twitchList: map[string]*Twitcher{},
	}

	for _, users := range p.config.Twitch.Users {
		for _, twitcherName := range users {
			if _, ok := p.twitchList[twitcherName]; !ok {
				p.twitchList[twitcherName] = &Twitcher{
					name: twitcherName,
					game: "",
				}
			}
		}
	}

	for channel := range p.config.Twitch.Users {
		go p.twitchLoop(channel)
	}

	return p
}