# Bridging (Gitter, Slack, IRC etc)

**URL:** <https://discourse.julialang.org/t/bridging-gitter-slack-irc-etc/7888>\
**Category:** Community\
**Created:** [December 21, 2017, 2:51am UTC](https://discourse.julialang.org/t/bridging-gitter-slack-irc-etc/7888 "2017-12-21T02:51:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [December 21, 2017, 2:51am UTC](https://discourse.julialang.org/t/bridging-gitter-slack-irc-etc/7888/1 "2017-12-21T02:51:55Z")

</div>

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](https://github.com/42wim/matterbridge), it is a great project.  
It just works.

The bot is being hosted by the [University Computer Club](https://www.ucc.asn.au/), 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](https://global.discourse-cdn.com/julialang/original/3X/c/b/cb6b6a7b08b0c84ce3c3ee2cb95759f0cdfe71b0.png)  
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.

```julia
[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.

---

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [September 26, 2019, 9:32am UTC](https://discourse.julialang.org/t/bridging-gitter-slack-irc-etc/7888/2 "2019-09-26T09:32:27Z")

</div>

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

```julia
[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"

```

---

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [August 13, 2021, 9:55am UTC](https://discourse.julialang.org/t/bridging-gitter-slack-irc-etc/7888/3 "2021-08-13T09:55:40Z")

</div>

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

```julia
[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"

```
