Implement automatic channel joining
Avoid the need for an administrator to join the bot to channels by implementing a configuration option allowing the passing of channels the bot should always join to by itself upon startup. Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
This commit is contained in:
parent
1f41d9ac17
commit
3af09d6234
@ -13,6 +13,8 @@ watbot:
|
||||
hosts:
|
||||
- annoying.example.com
|
||||
channels: # optional, no default
|
||||
join:
|
||||
- crantest # channels without a prefix character will be prefixed with "#"
|
||||
permitted:
|
||||
- '#lucy'
|
||||
|
||||
|
2
main.go
2
main.go
@ -28,6 +28,7 @@ type watConfig struct {
|
||||
Hosts []string `yaml:"hosts"`
|
||||
} `yaml:"admins"`
|
||||
Channels struct {
|
||||
Join []string `yaml:"join"`
|
||||
Permitted []string `yaml:"permitted"`
|
||||
} `yaml:"channels"`
|
||||
Ignores struct {
|
||||
@ -94,6 +95,7 @@ func main() {
|
||||
Name: config.Name,
|
||||
}
|
||||
watConfig := wat.WatConfig{
|
||||
AutoJoinChannels: config.Channels.Join,
|
||||
PermittedChannels: config.Channels.Permitted,
|
||||
IgnoredHosts: config.Ignores.Hosts,
|
||||
AdminHosts: config.Admins.Hosts,
|
||||
|
15
wat/bot.go
15
wat/bot.go
@ -20,6 +20,7 @@ type WatBot struct {
|
||||
type WatConfig struct {
|
||||
AdminHosts []string
|
||||
IgnoredHosts []string
|
||||
AutoJoinChannels []string
|
||||
PermittedChannels []string
|
||||
}
|
||||
|
||||
@ -36,12 +37,24 @@ func CleanNick(nick string) string {
|
||||
return string(nick[0]) + "\u200c" + nick[1:]
|
||||
}
|
||||
|
||||
func PrefixChannel(channel string) string {
|
||||
// there could theoretically be other channel prefixes ..
|
||||
if channel[0] != '#' || channel[0] != '!' {
|
||||
channel = "#" + channel
|
||||
}
|
||||
return channel
|
||||
}
|
||||
|
||||
func (w *WatBot) HandleIrcMsg(c *irc.Client, m *irc.Message) {
|
||||
switch cmd := m.Command; cmd {
|
||||
case "PING":
|
||||
w.write("PONG", m.Params[0])
|
||||
case "PRIVMSG":
|
||||
w.Msg(m)
|
||||
case "001":
|
||||
for _, channel := range w.c.AutoJoinChannels {
|
||||
w.write("JOIN", PrefixChannel(channel))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,7 +81,7 @@ func (w *WatBot) CanRespond(m *irc.Message) bool {
|
||||
// if !strings.Contains(m.Prefix.Host, "") {
|
||||
// return false
|
||||
// }
|
||||
if !w.Allowed(m.Params[0], w.c.PermittedChannels) {
|
||||
if !w.Allowed(PrefixChannel(m.Params[0]), w.c.PermittedChannels) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
|
Loading…
Reference in New Issue
Block a user