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
33
bot/bot.go
33
bot/bot.go
|
@ -1,41 +1,54 @@
|
||||||
package bot
|
package bot
|
||||||
|
|
||||||
import irc "github.com/fluffle/goirc/client"
|
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
|
// Bot type provides storage for bot-wide information, configs, and database connections
|
||||||
type Bot struct {
|
type Bot struct {
|
||||||
Plugins []Handler
|
Plugins []Handler
|
||||||
Users []User
|
Users []User
|
||||||
Conn *irc.Conn
|
Conn *irc.Conn
|
||||||
// mongodb connection will go here
|
// 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
|
// User type stores user history. This is a vehicle that will follow the user for the active
|
||||||
// session
|
// session
|
||||||
type User struct {
|
type User struct {
|
||||||
// Current nickname known
|
// Current nickname known
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
// LastSeen DateTime
|
// LastSeen DateTime
|
||||||
|
|
||||||
// Alternative nicknames seen
|
// Alternative nicknames seen
|
||||||
Alts []string
|
Alts []string
|
||||||
|
|
||||||
// Last N messages sent to the user
|
// 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
|
// 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)
|
// 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{
|
return &Bot{
|
||||||
Plugins: p,
|
Plugins: p,
|
||||||
Users: make([]User, 10),
|
Users: make([]User, 10),
|
||||||
Conn: c,
|
Conn: c,
|
||||||
|
DbSession: session,
|
||||||
|
Db: db,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds a constructed handler to the bots handlers list
|
// Adds a constructed handler to the bots handlers list
|
||||||
func (b *Bot) AddHandler(h Handler) {
|
func (b *Bot) AddHandler(h Handler) {
|
||||||
b.Plugins = append(b.Plugins, h)
|
b.Plugins = append(b.Plugins, h)
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,8 @@ func (b *Bot) checkuser(nick string) *User {
|
||||||
if user == nil {
|
if user == nil {
|
||||||
fmt.Println("Making a new user")
|
fmt.Println("Making a new user")
|
||||||
user = &User{
|
user = &User{
|
||||||
Name: nick,
|
Name: nick,
|
||||||
Alts: make([]string, 1),
|
Alts: make([]string, 1),
|
||||||
MessageLog: make([]string, 50),
|
MessageLog: make([]string, 50),
|
||||||
}
|
}
|
||||||
b.Users = append(b.Users, *user)
|
b.Users = append(b.Users, *user)
|
||||||
|
@ -58,4 +58,4 @@ func (b *Bot) filter(input string) string {
|
||||||
// Sends message to channel
|
// Sends message to channel
|
||||||
func (b *Bot) SendMessage(channel, message string) {
|
func (b *Bot) SendMessage(channel, message string) {
|
||||||
b.Conn.Privmsg(channel, message)
|
b.Conn.Privmsg(channel, message)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,14 @@ import "io/ioutil"
|
||||||
// Config stores any system-wide startup information that cannot be easily configured via
|
// Config stores any system-wide startup information that cannot be easily configured via
|
||||||
// the database
|
// the database
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Dbname string
|
DbName string
|
||||||
Dbserver string
|
DbServer string
|
||||||
Channels []string
|
Channels []string
|
||||||
Plugins []string
|
Plugins []string
|
||||||
Nick, Server, Pass 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 {
|
func Readconfig(cfile string) *Config {
|
||||||
fmt.Printf("Using %s as config file.\n", cfile)
|
fmt.Printf("Using %s as config file.\n", cfile)
|
||||||
file, e := ioutil.ReadFile(cfile)
|
file, e := ioutil.ReadFile(cfile)
|
||||||
|
|
6
main.go
6
main.go
|
@ -3,8 +3,8 @@ package main
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"godeepintir/config"
|
|
||||||
"godeepintir/bot"
|
"godeepintir/bot"
|
||||||
|
"godeepintir/config"
|
||||||
"godeepintir/plugins"
|
"godeepintir/plugins"
|
||||||
)
|
)
|
||||||
import irc "github.com/fluffle/goirc/client"
|
import irc "github.com/fluffle/goirc/client"
|
||||||
|
@ -30,7 +30,7 @@ func main() {
|
||||||
// Add handlers to do things here!
|
// Add handlers to do things here!
|
||||||
// e.g. join a channel on connect.
|
// e.g. join a channel on connect.
|
||||||
c.AddHandler("connected",
|
c.AddHandler("connected",
|
||||||
func(conn *irc.Conn, line *irc.Line) {
|
func(conn *irc.Conn, line *irc.Line) {
|
||||||
for _, channel := range config.Channels {
|
for _, channel := range config.Channels {
|
||||||
conn.Join(channel)
|
conn.Join(channel)
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ func main() {
|
||||||
c.AddHandler("disconnected",
|
c.AddHandler("disconnected",
|
||||||
func(conn *irc.Conn, line *irc.Line) { quit <- true })
|
func(conn *irc.Conn, line *irc.Line) { quit <- true })
|
||||||
|
|
||||||
b := bot.NewBot(c)
|
b := bot.NewBot(config, c)
|
||||||
b.AddHandler(plugins.NewTestPlugin(b))
|
b.AddHandler(plugins.NewTestPlugin(b))
|
||||||
|
|
||||||
c.AddHandler("PRIVMSG", func(conn *irc.Conn, line *irc.Line) {
|
c.AddHandler("PRIVMSG", func(conn *irc.Conn, line *irc.Line) {
|
||||||
|
|
Loading…
Reference in New Issue