diff --git a/bridge/config/config.go b/bridge/config/config.go index 48c36d9d..21010dbf 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -109,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/matterbridge.toml.sample b/matterbridge.toml.sample index 5e7be29e..b51f351b 100644 --- a/matterbridge.toml.sample +++ b/matterbridge.toml.sample @@ -96,6 +96,11 @@ RejoinDelay=0 #Only works in IRC right now. ColorNicks=false +#RunCommands allows you to send RAW irc commands after connection +#Array of strings +#OPTIONAL (default empty) +RunCommands=["PRIVMSG user hello","PRIVMSG chanserv something"] + #Nicks you want to ignore. #Messages from those users will not be sent to other bridges. #OPTIONAL