Bridging (Gitter, Slack, IRC etc)

It occurs to me that the current setup is not written down anywhere,
except in (now gone) messages in #community on Slack.
It is a bit different to what is on the old mailing list.
I figure I should write it down in case I get hit by a bus.

I am currently operating a bridge between, IRC, Gitter, and Slack (I could be doing many more if required), for several channels.
I am using MatterBridge, it is a great project.
It just works.

The bot is being hosted by the University Computer Club, at the University of Western Australia.
(I think, after MIT’s Student Information Processing Board, the UCC is the oldest continuously running computing organization in the world).
It’s sitting in it’s own VM (also runs the gitter, stackoverflow notifier)

The channels on the Slack-side are known as #X-bridged, on the other sides they are just the normal channels.
For a full list of everything being bridged see the config below.

#general-bridged is the main one. I kinda feel it should be on the default channel set for slack.

gitter
On gitter the Bot is named GitterIRCbot, because when I created it I was just bridging to IRC.
We can bridge almost anything now.
We could even bridge 2 slack channel on different servers.
Matterbridge is really flexible.

If I get hit by a bus (or otherwise vanish and am uncontactable),
and things go wrong.
the current system can be disabled by blocking/banning the bot user from the channels.
(On some channels there are other options like redacting it’s token)
It can be recreates easy enough.

The current config (no promises I’ll remember to update this when I add things) is below.

[slack.julia]
        Token="NOPENOPENOPE"
        RemoteNickFormat="[{PROTOCOL}] <{NICK}> "


[gitter.gitter]
        Token="NOPENOPENOPE"
        RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

[irc.freenode]
        Server="irc.freenode.net:6667"
        Nick="bridgingbot"
        RemoteNickFormat="[{PROTOCOL}] <{NICK}> "


[[gateway]]
        name="general"
        enable=true

        Server="irc.freenode.net:6667"
        Nick="bridgingbot"
        RemoteNickFormat="[{PROTOCOL}] <{NICK}> "


[[gateway]]
        name="general"
        enable=true

        [[gateway.inout]]
        account="gitter.gitter"
        channel="JuliaLang/julia"

        [[gateway.inout]]
        account="slack.julia"
        channel="general-bridged"


        [[gateway.inout]]
        account="irc.freenode"
        channel="#julia"


[[gateway]]
        name="graphs"
        enable=true

        [[gateway.inout]]
        account="gitter.gitter"
        channel="JuliaGraphs/LightGraphs.jl"

        [[gateway.inout]]
        account="slack.julia"
        channel="graphs-bridged"


[[gateway]]
        name="juno"
        enable=true

        [[gateway.inout]]
        account="gitter.gitter"
        channel="JunoLab/Juno"

        [[gateway.inout]]
        account="slack.julia"
        channel="juno-bridged"



[[gateway]]
        name="flux"
        enable=true

        [[gateway.inout]]
        account="gitter.gitter"
        channel="FluxML/Lobby"

        [[gateway.inout]]
        account="slack.julia"
        channel="flux-bridged"


[[gateway]]
        name="diffeq"
        enable=true

        [[gateway.inout]]
        account="gitter.gitter"
        channel="JuliaDiffEq/Lobby"

        [[gateway.inout]]
        account="slack.julia"
        channel="diffeq-bridged"


[[gateway]]
        name="plots"
        enable=true

        [[gateway.inout]]
        account="gitter.gitter"
        channel="tbreloff/Plots.jl"

        [[gateway.inout]]
        account="slack.julia"
        channel="plots-bridged"


Ping me (preferably on slack, as I don’t check discourse as much) if you want something else bridged.

9 Likes

Here is an updated config, again just incase I vanish and someone needs to set it up again.

[slack.julia]
	#Token to connect with the Slack API
	#You'll have to use a test/api-token using a dedicated user and not a bot token.
	#See https://github.com/42wim/matterbridge/wiki/Slack-bot-setup for more information
	Token="VOIDVOIDVOID"
	RemoteNickFormat="[{PROTOCOL}] <{NICK}> "


[gitter.gitter]
	#You can get your token by going to https://developer.gitter.im/docs/welcome and SIGN IN
	Token="VOIDVOIDVOID"
	RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

[irc.freenode]
	Server="irc.freenode.net:6667"
	Nick="bridgingbot"
	NickServNick="NickServ"
	NickServUsername=""
	NickServPassword="VOIDVOIDVOID"
	RemoteNickFormat="[{PROTOCOL}] <{NICK}> "


[[gateway]]
	name="general"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaLang/julia"

	[[gateway.inout]]
	account="slack.julia"
	channel="general-bridged"


	[[gateway.inout]]
	account="irc.freenode"
	channel="#julia"


[[gateway]]
	name="graphs"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaGraphs/LightGraphs.jl"

	[[gateway.inout]]
	account="slack.julia"
	channel="graphs-bridged"


[[gateway]]
	name="juno"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JunoLab/Juno"

	[[gateway.inout]]
	account="slack.julia"
	channel="juno-bridged"



[[gateway]]
	name="flux"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="FluxML/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="flux-bridged"

[[gateway]]
	name="diffeq"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaDiffEq/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="diffeq-bridged"



[[gateway]]
	name="plots"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="tbreloff/Plots.jl"

	[[gateway.inout]]
	account="slack.julia"
	channel="plots-bridged"



[[gateway]]
	name="dynamics"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaDynamics/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="dynamics-bridged"



[[gateway]]
	name="quantum-optics"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="QuantumOptics-jl/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="quantum-optics-bridged"


[[gateway]]
	name="POMDP"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaPOMDP/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="pomdp-bridged"


[[gateway]]
	name="jumpdev"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaOpt/JuMP-dev"

	[[gateway.inout]]
	account="slack.julia"
	channel="jump-dev-bridged"
3 Likes

I have updated to drop bridging to IRC.
Freenode has turned evil now.
And something that have changed in their nickserver or something has caused the bridge to crash.

here is new config

[slack.julia]
	#Token to connect with the Slack API
	#You'll have to use a test/api-token using a dedicated user and not a bot token.
	#See https://github.com/42wim/matterbridge/wiki/Slack-bot-setup for more information
	Token="VOID"
	RemoteNickFormat="[{PROTOCOL}] <{NICK}> "


[gitter.gitter]
	#You can get your token by going to https://developer.gitter.im/docs/welcome and SIGN IN
	Token="VOID"
	RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

[zulip.julialang]
	#Navigate to Settings () -> Your bots -> Add a new bot. 
	#Token is the API key, you've got when creating the bot
	Token="VOID"
	Login="julia-bot@zulipchat.com"
	Server="https://julialang.zulipchat.com"
	RemoteNickFormat="[{PROTOCOL}] <{NICK}> "


[[gateway]]
	name="general"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaLang/julia"

	[[gateway.inout]]
	account="slack.julia"
	channel="general-bridged"

	[[gateway.inout]]
	account="zulip.julialang"
	channel="general-bridged/topic:chat2"

[[gateway]]
	name="graphs"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaGraphs/LightGraphs.jl"

	[[gateway.inout]]
	account="slack.julia"
	channel="graphs-bridged"


[[gateway]]
	name="juno"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JunoLab/Juno"

	[[gateway.inout]]
	account="slack.julia"
	channel="juno-bridged"



[[gateway]]
	name="flux"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="FluxML/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="flux-bridged"


[[gateway]]
	name="sciml"
	enable=true

	[[gateway.inout]]
	account="zulip.julialang"
	channel="sciml-bridged/topic:chat"

	[[gateway.inout]]
	account="slack.julia"
	channel="sciml-bridged"

[[gateway]]
	name="diffeq"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaDiffEq/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="diffeq-bridged"


	[[gateway.inout]]
	account="zulip.julialang"
	channel="diffeq-bridged/topic:chat"


[[gateway]]
	name="plots"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="tbreloff/Plots.jl"

	[[gateway.inout]]
	account="slack.julia"
	channel="plots-bridged"



[[gateway]]
	name="dynamics"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaDynamics/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="dynamics-bridged"



[[gateway]]
	name="quantum-optics"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="QuantumOptics-jl/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="quantum-optics-bridged"


[[gateway]]
	name="POMDP"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaPOMDP/Lobby"

	[[gateway.inout]]
	account="slack.julia"
	channel="pomdp-bridged"


[[gateway]]
	name="jumpdev"
	enable=true

	[[gateway.inout]]
	account="gitter.gitter"
	channel="JuliaOpt/JuMP-dev"

	[[gateway.inout]]
	account="slack.julia"
	channel="jump-dev-bridged"
3 Likes