Options approach for creating new CwtchBot #2
|
@ -1,7 +1,7 @@
|
|||
# Cwtch Bot Framework
|
||||
|
||||
A specialized Cwtch Bot framework in Go that provides a more lightweight and tailored approach to building chat bots for Cwtch.
|
||||
A specialized Cwtch Bot framework in Go that provides a more lightweight and tailored approach to building chat bots for Cwtch.
|
||||
|
||||
For an introduction to building chatbots with the CwtchBot framework check out [the building an echobot tutorial](https://docs.cwtch.im/developing/building-a-cwtch-app/building-an-echobot).
|
||||
|
||||
If you'd like to get involved please open an issue, or submit a pull request :)
|
||||
If you'd like to get involved please open an issue, or submit a pull request :)
|
||||
|
|
38
bot.go
38
bot.go
|
@ -2,21 +2,22 @@ package bot
|
|||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"cwtch.im/cwtch/app"
|
||||
"cwtch.im/cwtch/event"
|
||||
"cwtch.im/cwtch/peer"
|
||||
"cwtch.im/cwtch/protocol/connections"
|
||||
"cwtch.im/cwtch/settings"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"git.openprivacy.ca/openprivacy/connectivity"
|
||||
"git.openprivacy.ca/openprivacy/connectivity/tor"
|
||||
"git.openprivacy.ca/openprivacy/log"
|
||||
mrand "math/rand"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"cwtch.im/cwtch/app"
|
||||
"cwtch.im/cwtch/event"
|
||||
"cwtch.im/cwtch/peer"
|
||||
"cwtch.im/cwtch/protocol/connections"
|
||||
"cwtch.im/cwtch/settings"
|
||||
"git.openprivacy.ca/openprivacy/connectivity"
|
||||
"git.openprivacy.ca/openprivacy/connectivity/tor"
|
||||
"git.openprivacy.ca/openprivacy/log"
|
||||
)
|
||||
|
||||
type CwtchBot struct {
|
||||
|
@ -29,21 +30,24 @@ type CwtchBot struct {
|
|||
experiments []string
|
||||
}
|
||||
|
||||
func NewCwtchBot(userdir string, peername string) *CwtchBot {
|
||||
cb := new(CwtchBot)
|
||||
cb.dir = userdir
|
||||
cb.peername = peername
|
||||
cb.engineHooks = connections.DefaultEngineHooks{}
|
||||
cb.experiments = nil
|
||||
return cb
|
||||
// CwtchBotOption modifies a new CwtchBot.
|
||||
type CwtchBotOption func(c *CwtchBot)
|
||||
|
||||
// WithExperiments specifies the experiments option of a CwtchBot.
|
||||
func WithExperiments(experiments []string) CwtchBotOption {
|
||||
return func(c *CwtchBot) {
|
||||
c.experiments = experiments
|
||||
}
|
||||
}
|
||||
|
||||
func NewCwtchBotWithExperiments(userdir string, peername string, experiments []string) *CwtchBot {
|
||||
func NewCwtchBot(userdir, peername string, opts ...CwtchBotOption) *CwtchBot {
|
||||
cb := new(CwtchBot)
|
||||
cb.dir = userdir
|
||||
cb.peername = peername
|
||||
cb.engineHooks = connections.DefaultEngineHooks{}
|
||||
cb.experiments = experiments
|
||||
for _, optFunc := range opts {
|
||||
optFunc(cb)
|
||||
}
|
||||
return cb
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue