diff options
Diffstat (limited to 'bridge')
-rw-r--r-- | bridge/config/config.go | 2 | ||||
-rw-r--r-- | bridge/irc/irc.go | 10 | ||||
-rw-r--r-- | bridge/slack/handlers.go | 7 | ||||
-rw-r--r-- | bridge/slack/slack.go | 1 |
4 files changed, 20 insertions, 0 deletions
diff --git a/bridge/config/config.go b/bridge/config/config.go index 064f04a4..21010dbf 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -72,6 +72,7 @@ type Protocol struct { EditSuffix string // mattermost, slack, discord, telegram, gitter EditDisable bool // mattermost, slack, discord, telegram, gitter IconURL string // mattermost, slack + IgnoreFailureOnStart bool // general IgnoreNicks string // all protocols IgnoreMessages string // all protocols Jid string // xmpp @@ -108,6 +109,7 @@ type Protocol struct { ReplaceMessages [][]string // all protocols ReplaceNicks [][]string // all protocols RemoteNickFormat string // all protocols + RunCommands []string // irc Server string // IRC,mattermost,XMPP,discord ShowJoinPart bool // all protocols ShowTopicChange bool // slack diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go index eee432b2..1e813246 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -365,6 +365,7 @@ func (b *Birc) handleOther(client *girc.Client, event girc.Event) { func (b *Birc) handleOtherAuth(client *girc.Client, event girc.Event) { b.handleNickServ() + b.handleRunCommands() // we are now fully connected b.connected <- nil } @@ -471,6 +472,15 @@ func (b *Birc) formatnicks(nicks []string) string { return strings.Join(nicks, ", ") + " currently on IRC" } +func (b *Birc) handleRunCommands() { + for _, cmd := range b.GetStringSlice("RunCommands") { + if err := b.i.Cmd.SendRaw(cmd); err != nil { + b.Log.Errorf("RunCommands %s failed: %s", cmd, err) + } + time.Sleep(time.Second) + } +} + func (b *Birc) handleNickServ() { if !b.GetBool("UseSASL") && b.GetString("NickServNick") != "" && b.GetString("NickServPassword") != "" { b.Log.Debugf("Sending identify to nickserv %s", b.GetString("NickServNick")) diff --git a/bridge/slack/handlers.go b/bridge/slack/handlers.go index a3291c38..035c5af5 100644 --- a/bridge/slack/handlers.go +++ b/bridge/slack/handlers.go @@ -202,6 +202,13 @@ func (b *Bslack) handleStatusEvent(ev *slack.MessageEvent, rmsg *config.Message) rmsg.Event = config.EventJoinLeave case sChannelTopic, sChannelPurpose: rmsg.Event = config.EventTopicChange + case sMessageChanged: + rmsg.Text = ev.SubMessage.Text + // handle deleted thread starting messages + if ev.SubMessage.Text == "This message was deleted." { + rmsg.Event = config.EventMsgDelete + return true + } case sMessageDeleted: rmsg.Text = config.EventMsgDelete rmsg.Event = config.EventMsgDelete diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go index ad48edf0..d054ae81 100644 --- a/bridge/slack/slack.go +++ b/bridge/slack/slack.go @@ -48,6 +48,7 @@ const ( sChannelLeave = "channel_leave" sChannelJoined = "channel_joined" sMemberJoined = "member_joined_channel" + sMessageChanged = "message_changed" sMessageDeleted = "message_deleted" sSlackAttachment = "slack_attachment" sPinnedItem = "pinned_item" |