add schalter
This commit is contained in:
parent
40ef257672
commit
10f1fae475
4 changed files with 60 additions and 2 deletions
|
@ -8,4 +8,4 @@ password = "test"
|
||||||
[schalter]
|
[schalter]
|
||||||
url = "https://schalter.ccchb.de/spaceapi.json"
|
url = "https://schalter.ccchb.de/spaceapi.json"
|
||||||
|
|
||||||
muc = ["ffhb_events@conference.chat.sum7.eu","#ccchb@irc.hackint.org"]
|
mucs = ["ffhb_events@conference.chat.sum7.eu","#ccchb@irc.hackint.org"]
|
||||||
|
|
|
@ -14,7 +14,7 @@ func (s *Schalter) HandleBotMessage(c xmpp.Sender, msg stanza.Message) error {
|
||||||
Attrs: stanza.Attrs{Type: msg.Type,
|
Attrs: stanza.Attrs{Type: msg.Type,
|
||||||
To: msg.From,
|
To: msg.From,
|
||||||
},
|
},
|
||||||
Body: s.StateString(),
|
Body: s.stateString(),
|
||||||
}
|
}
|
||||||
if msg.Type == stanza.MessageTypeGroupchat {
|
if msg.Type == stanza.MessageTypeGroupchat {
|
||||||
reply.To = jid.Bare()
|
reply.To = jid.Bare()
|
||||||
|
|
45
schalter/main.go
Normal file
45
schalter/main.go
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
package schalter
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/bdlm/log"
|
||||||
|
"gosrc.io/xmpp"
|
||||||
|
"gosrc.io/xmpp/stanza"
|
||||||
|
|
||||||
|
"dev.sum7.eu/ccchb/ccchatbot/runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Schalter struct {
|
||||||
|
URL string `toml:"url"`
|
||||||
|
Path string `toml:"path"`
|
||||||
|
|
||||||
|
Nickname string `toml:"nickname"`
|
||||||
|
|
||||||
|
Users []string `toml:"users"`
|
||||||
|
MUCs []string `toml:"mucs"`
|
||||||
|
|
||||||
|
state bool
|
||||||
|
spaceName string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Schalter) updatePresence(c xmpp.Sender) {
|
||||||
|
pres := stanza.Presence{
|
||||||
|
Show: stanza.PresenceShowChat,
|
||||||
|
Status: s.stateString(),
|
||||||
|
}
|
||||||
|
if s.state {
|
||||||
|
pres.Show = stanza.PresenceShowXA
|
||||||
|
}
|
||||||
|
c.Send(pres)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Schalter) Run(c xmpp.Sender) {
|
||||||
|
if s.Nickname == "" {
|
||||||
|
s.Nickname = "ccchalter"
|
||||||
|
}
|
||||||
|
s.fetchState()
|
||||||
|
s.updatePresence(c)
|
||||||
|
for _, m := range s.MUCs {
|
||||||
|
runtime.JoinMUC(c, m, s.Nickname)
|
||||||
|
}
|
||||||
|
log.Infof("started schalter with state: %s", s.stateString())
|
||||||
|
}
|
13
schalter/state.go
Normal file
13
schalter/state.go
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
package schalter
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func (s *Schalter) stateString() string {
|
||||||
|
if s.state {
|
||||||
|
return fmt.Sprintf("%s is open", s.spaceName)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%s is closed", s.spaceName)
|
||||||
|
}
|
||||||
|
func (s *Schalter) fetchState() bool {
|
||||||
|
return false
|
||||||
|
}
|
Loading…
Reference in a new issue