summaryrefslogtreecommitdiffstats
path: root/bridge/irc
diff options
context:
space:
mode:
authorWim <wim@42.be>2017-07-30 17:48:23 +0200
committerWim <wim@42.be>2017-07-30 17:48:23 +0200
commitf8e6a69d6e8453de0b700b6e9a3eedeec0b1f0a5 (patch)
tree7ac1bc3a4c0d0429cf01adcedd2ae0422d6963cd /bridge/irc
parent54216cec4b4f2023306e378587b1ac55dc720968 (diff)
downloadmatterbridge-msglm-f8e6a69d6e8453de0b700b6e9a3eedeec0b1f0a5.tar.gz
matterbridge-msglm-f8e6a69d6e8453de0b700b6e9a3eedeec0b1f0a5.tar.bz2
matterbridge-msglm-f8e6a69d6e8453de0b700b6e9a3eedeec0b1f0a5.zip
Add action support for slack,mattermost,irc,gitter,matrix,xmpp,discord. #199
Diffstat (limited to 'bridge/irc')
-rw-r--r--bridge/irc/irc.go15
1 files changed, 11 insertions, 4 deletions
diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go
index 86ed6974..aa46a6f1 100644
--- a/bridge/irc/irc.go
+++ b/bridge/irc/irc.go
@@ -135,7 +135,7 @@ func (b *Birc) Send(msg config.Message) error {
if len(b.Local) == b.Config.MessageQueue-1 {
text = text + " <message clipped>"
}
- b.Local <- config.Message{Text: text, Username: msg.Username, Channel: msg.Channel}
+ b.Local <- config.Message{Text: text, Username: msg.Username, Channel: msg.Channel, Event: msg.Event}
} else {
flog.Debugf("flooding, dropping message (queue at %d)", len(b.Local))
}
@@ -148,7 +148,11 @@ func (b *Birc) doSend() {
throttle := time.NewTicker(rate)
for msg := range b.Local {
<-throttle.C
- b.i.Privmsg(msg.Channel, msg.Username+msg.Text)
+ if msg.Event == config.EVENT_USER_ACTION {
+ b.i.Action(msg.Channel, msg.Username+msg.Text)
+ } else {
+ b.i.Privmsg(msg.Channel, msg.Username+msg.Text)
+ }
}
}
@@ -244,10 +248,12 @@ func (b *Birc) handlePrivMsg(event *irc.Event) {
if event.Nick == b.Nick {
return
}
+ rmsg := config.Message{Username: event.Nick, Channel: event.Arguments[0], Account: b.Account, UserID: event.User + "@" + event.Host}
flog.Debugf("handlePrivMsg() %s %s %#v", event.Nick, event.Message(), event)
msg := ""
if event.Code == "CTCP_ACTION" {
- msg = event.Nick + " "
+ // msg = event.Nick + " "
+ rmsg.Event = config.EVENT_USER_ACTION
}
msg += event.Message()
// strip IRC colors
@@ -276,7 +282,8 @@ func (b *Birc) handlePrivMsg(event *irc.Event) {
msg = string(output)
flog.Debugf("Sending message from %s on %s to gateway", event.Arguments[0], b.Account)
- b.Remote <- config.Message{Username: event.Nick, Text: msg, Channel: event.Arguments[0], Account: b.Account, UserID: event.User + "@" + event.Host}
+ rmsg.Text = msg
+ b.Remote <- rmsg
}
func (b *Birc) handleTopicWhoTime(event *irc.Event) {