summaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
Diffstat (limited to 'bridge')
-rw-r--r--bridge/config/config.go2
-rw-r--r--bridge/irc/irc.go10
-rw-r--r--bridge/slack/handlers.go7
-rw-r--r--bridge/slack/slack.go1
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"