Skip to content

Commit

Permalink
Add support for irc to irc notice (irc). Fixes #754
Browse files Browse the repository at this point in the history
  • Loading branch information
42wim committed Nov 22, 2020
1 parent 64b899a commit 3862135
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 4 deletions.
1 change: 1 addition & 0 deletions bridge/config/config.go
Expand Up @@ -26,6 +26,7 @@ const (
EventAPIConnected = "api_connected"
EventUserTyping = "user_typing"
EventGetChannelMembers = "get_channel_members"
EventNoticeIRC = "notice_irc"
)

type Message struct {
Expand Down
14 changes: 13 additions & 1 deletion bridge/irc/handlers.go
Expand Up @@ -170,14 +170,26 @@ func (b *Birc) handlePrivMsg(client *girc.Client, event girc.Event) {
if b.skipPrivMsg(event) {
return
}
rmsg := config.Message{Username: event.Source.Name, Channel: strings.ToLower(event.Params[0]), Account: b.Account, UserID: event.Source.Ident + "@" + event.Source.Host}

rmsg := config.Message{
Username: event.Source.Name,
Channel: strings.ToLower(event.Params[0]),
Account: b.Account,
UserID: event.Source.Ident + "@" + event.Source.Host,
}

b.Log.Debugf("== Receiving PRIVMSG: %s %s %#v", event.Source.Name, event.Last(), event)

// set action event
if event.IsAction() {
rmsg.Event = config.EventUserAction
}

// set NOTICE event
if event.Command == "NOTICE" {
rmsg.Event = config.EventNoticeIRC
}

// strip action, we made an event if it was an action
rmsg.Text += event.StripAction()

Expand Down
11 changes: 8 additions & 3 deletions bridge/irc/irc.go
Expand Up @@ -212,9 +212,14 @@ func (b *Birc) doSend() {
colorCode := checksum%14 + 2 // quick fix - prevent white or black color codes
username = fmt.Sprintf("\x03%02d%s\x0F", colorCode, msg.Username)
}
if msg.Event == config.EventUserAction {

switch msg.Event {
case config.EventUserAction:
b.i.Cmd.Action(msg.Channel, username+msg.Text)
} else {
case config.EventNoticeIRC:
b.Log.Debugf("Sending notice to channel %s", msg.Channel)
b.i.Cmd.Notice(msg.Channel, username+msg.Text)
default:
b.Log.Debugf("Sending to channel %s", msg.Channel)
b.i.Cmd.Message(msg.Channel, username+msg.Text)
}
Expand Down Expand Up @@ -291,7 +296,7 @@ func (b *Birc) skipPrivMsg(event girc.Event) bool {
b.Nick = b.i.GetNick()

// freenode doesn't send 001 as first reply
if event.Command == "NOTICE" {
if event.Command == "NOTICE" && len(event.Params) != 2 {
return true
}
// don't forward queries to the bot
Expand Down
5 changes: 5 additions & 0 deletions gateway/gateway.go
Expand Up @@ -430,6 +430,11 @@ func (gw *Gateway) SendMessage(
}
}

// Only send irc notices to irc
if msg.Event == config.EventNoticeIRC && dest.Protocol != "irc" {
return "", nil
}

// Too noisy to log like other events
debugSendMessage := ""
if msg.Event != config.EventUserTyping {
Expand Down

0 comments on commit 3862135

Please sign in to comment.