mirror of https://github.com/velour/catbase.git
Changing factoid random a bit to improve efficiency, added 'factoid' command for random fact
This commit is contained in:
parent
11feafbee0
commit
79bec9fc21
|
@ -347,6 +347,15 @@ func (p *FactoidPlugin) Message(message bot.Message) bool {
|
||||||
return p.trigger(message)
|
return p.trigger(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.ToLower(message.Body) == "factoid" {
|
||||||
|
if fact := p.randomFact(); fact != nil {
|
||||||
|
p.sayFact(message, *fact)
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
log.Println("Got a nil fact.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if strings.ToLower(message.Body) == "forget that" {
|
if strings.ToLower(message.Body) == "forget that" {
|
||||||
return p.forgetLastFact(message)
|
return p.forgetLastFact(message)
|
||||||
}
|
}
|
||||||
|
@ -391,19 +400,17 @@ func (p *FactoidPlugin) Event(kind string, message bot.Message) bool {
|
||||||
|
|
||||||
// Pull a fact at random from the database
|
// Pull a fact at random from the database
|
||||||
func (p *FactoidPlugin) randomFact() *Factoid {
|
func (p *FactoidPlugin) randomFact() *Factoid {
|
||||||
var results []Factoid
|
var fact Factoid
|
||||||
iter := p.Coll.Find(bson.M{}).Iter()
|
|
||||||
err := iter.All(&results)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
nfacts := len(results)
|
nFacts, err := p.Coll.Count()
|
||||||
if nfacts == 0 {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
fact := results[rand.Intn(nfacts)]
|
if err := p.Coll.Find(nil).Skip(rand.Intn(nFacts)).One(&fact); err != nil {
|
||||||
|
log.Println("Couldn't get next...")
|
||||||
|
}
|
||||||
|
|
||||||
return &fact
|
return &fact
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue