mirror of https://github.com/velour/catbase.git
Added mgo dependencies, basis for database access among modules
This commit is contained in:
parent
4b9b8fa682
commit
e1c841ecae
31
bot/bot.go
31
bot/bot.go
|
@ -1,37 +1,50 @@
|
|||
package bot
|
||||
|
||||
import irc "github.com/fluffle/goirc/client"
|
||||
import "labix.org/v2/mgo"
|
||||
import "godeepintir/config"
|
||||
|
||||
// Bot type provides storage for bot-wide information, configs, and database connections
|
||||
type Bot struct {
|
||||
Plugins []Handler
|
||||
Users []User
|
||||
Conn *irc.Conn
|
||||
Users []User
|
||||
Conn *irc.Conn
|
||||
// mongodb connection will go here
|
||||
DbSession *mgo.Session
|
||||
Db *mgo.Database
|
||||
}
|
||||
|
||||
// User type stores user history. This is a vehicle that will follow the user for the active
|
||||
// session
|
||||
type User struct {
|
||||
// Current nickname known
|
||||
Name string
|
||||
Name string
|
||||
|
||||
// LastSeen DateTime
|
||||
|
||||
// Alternative nicknames seen
|
||||
Alts []string
|
||||
Alts []string
|
||||
|
||||
// Last N messages sent to the user
|
||||
MessageLog []string
|
||||
MessageLog []string
|
||||
}
|
||||
|
||||
// NewBot creates a Bot for a given connection and set of handlers. The handlers must not
|
||||
// require the bot as input for their creation (so use AddHandler instead to add handlers)
|
||||
func NewBot(c *irc.Conn, p ...Handler) *Bot {
|
||||
func NewBot(config *config.Config, c *irc.Conn, p ...Handler) *Bot {
|
||||
session, err := mgo.Dial(config.DbServer)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
db := session.DB(config.DbName)
|
||||
|
||||
return &Bot{
|
||||
Plugins: p,
|
||||
Users: make([]User, 10),
|
||||
Conn: c,
|
||||
Plugins: p,
|
||||
Users: make([]User, 10),
|
||||
Conn: c,
|
||||
DbSession: session,
|
||||
Db: db,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,8 +22,8 @@ func (b *Bot) checkuser(nick string) *User {
|
|||
if user == nil {
|
||||
fmt.Println("Making a new user")
|
||||
user = &User{
|
||||
Name: nick,
|
||||
Alts: make([]string, 1),
|
||||
Name: nick,
|
||||
Alts: make([]string, 1),
|
||||
MessageLog: make([]string, 50),
|
||||
}
|
||||
b.Users = append(b.Users, *user)
|
||||
|
|
|
@ -7,14 +7,14 @@ import "io/ioutil"
|
|||
// Config stores any system-wide startup information that cannot be easily configured via
|
||||
// the database
|
||||
type Config struct {
|
||||
Dbname string
|
||||
Dbserver string
|
||||
Channels []string
|
||||
Plugins []string
|
||||
Nick, Server, Pass string
|
||||
}
|
||||
DbName string
|
||||
DbServer string
|
||||
Channels []string
|
||||
Plugins []string
|
||||
Nick, Server, Pass string
|
||||
}
|
||||
|
||||
// Readconfig loads the config data out of a JSON file located in cfile
|
||||
// Readconfig loads the config data out of a JSON file located in cfile
|
||||
func Readconfig(cfile string) *Config {
|
||||
fmt.Printf("Using %s as config file.\n", cfile)
|
||||
file, e := ioutil.ReadFile(cfile)
|
||||
|
|
4
main.go
4
main.go
|
@ -3,8 +3,8 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"godeepintir/config"
|
||||
"godeepintir/bot"
|
||||
"godeepintir/config"
|
||||
"godeepintir/plugins"
|
||||
)
|
||||
import irc "github.com/fluffle/goirc/client"
|
||||
|
@ -41,7 +41,7 @@ func main() {
|
|||
c.AddHandler("disconnected",
|
||||
func(conn *irc.Conn, line *irc.Line) { quit <- true })
|
||||
|
||||
b := bot.NewBot(c)
|
||||
b := bot.NewBot(config, c)
|
||||
b.AddHandler(plugins.NewTestPlugin(b))
|
||||
|
||||
c.AddHandler("PRIVMSG", func(conn *irc.Conn, line *irc.Line) {
|
||||
|
|
Loading…
Reference in New Issue