7c773ebae0
Our Message type has an extra ID field which contains the message ID of the specific bridge. The Send() function has been modified to return a msg ID (after the message to that specific bridge has been created). There is a lru cache of 5000 entries (message IDs). All in memory, so editing messages will only work for messages the bot has seen. Currently we go out from the idea that every message ID is unique, so we don't keep the ID separate for each bridge. (we do for each gateway though) If there's a new message from a bridge, we put that message ID in the LRU cache as key and the []*BrMsgID as value (this slice contains the message ID's of each bridge that received the new message) If there's a new message and this message ID already exists in the cache, it must be an updated message. The value from the cache gets checked for each bridge and if there is a message ID for this bridge, the ID will be added to the Message{} sent to that bridge. If the bridge sees that the ID isn't empty, it'll know it has to update the message with that specific ID instead of creating a new message. |
||
---|---|---|
.github | ||
bridge | ||
ci | ||
gateway | ||
hook/rockethook | ||
matterclient | ||
matterhook | ||
vendor | ||
.travis.yml | ||
changelog.md | ||
Dockerfile | ||
LICENSE | ||
matterbridge.go | ||
matterbridge.toml.sample | ||
matterbridge.toml.simple | ||
README.md |
matterbridge
Click on one of the badges below to join the chat
Simple bridge between Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, Rocket.Chat, Hipchat(via xmpp), Matrix and Steam. Has a REST API.
Table of Contents
Features
- Relays public channel messages between multiple mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, Rocket.Chat, Hipchat (via xmpp), Matrix and Steam. Pick and mix.
- Matterbridge can also work with private groups on your mattermost/slack.
- Allow for bridging the same bridges, which means you can eg bridge between multiple mattermosts.
- The bridge is now a gateway which has support multiple in and out bridges. (and supports multiple gateways).
- REST API to read/post messages to bridges (WIP).
Requirements
Accounts to one of the supported bridges
- Mattermost 3.8.x - 3.10.x, 4.0.x - 4.1.x
- IRC
- XMPP
- Gitter
- Slack
- Discord
- Telegram
- Hipchat
- Rocket.chat
- Matrix
- Steam
Screenshots
See https://github.com/42wim/matterbridge/wiki
Installing
Binaries
Building
Go 1.7+ is required. Make sure you have Go properly installed, including setting up your [GOPATH] (https://golang.org/doc/code.html#GOPATH)
cd $GOPATH
go get github.com/42wim/matterbridge
You should now have matterbridge binary in the bin directory:
$ ls bin/
matterbridge
Configuration
Basic configuration
See howto for a step by step walkthrough for creating your configuration.
Advanced configuration
- matterbridge.toml.sample for documentation and an example.
Examples
Bridge mattermost (off-topic) - irc (#testing)
[irc]
[irc.freenode]
Server="irc.freenode.net:6667"
Nick="yourbotname"
[mattermost]
[mattermost.work]
Server="yourmattermostserver.tld"
Team="yourteam"
Login="yourlogin"
Password="yourpass"
PrefixMessagesWithNick=true
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
[[gateway]]
name="mygateway"
enable=true
[[gateway.inout]]
account="irc.freenode"
channel="#testing"
[[gateway.inout]]
account="mattermost.work"
channel="off-topic"
Bridge slack (#general) - discord (general)
[slack]
[slack.test]
Token="yourslacktoken"
PrefixMessagesWithNick=true
[discord]
[discord.test]
Token="yourdiscordtoken"
Server="yourdiscordservername"
[general]
RemoteNickFormat="[{PROTOCOL}/{BRIDGE}] <{NICK}> "
[[gateway]]
name = "mygateway"
enable=true
[[gateway.inout]]
account = "discord.test"
channel="general"
[[gateway.inout]]
account ="slack.test"
channel = "general"
Running
See howto for a step by step walkthrough for creating your configuration.
Usage of ./matterbridge:
-conf string
config file (default "matterbridge.toml")
-debug
enable debug
-gops
enable gops agent
-version
show version
Docker
Create your matterbridge.toml file locally eg in /tmp/matterbridge.toml
docker run -ti -v /tmp/matterbridge.toml:/matterbridge.toml 42wim/matterbridge
Changelog
See changelog.md
FAQ
See FAQ
Want to tip ?
- eth: 0xb3f9b5387c66ad6be892bcb7bbc67862f3abc16f
- btc: 1N7cKHj5SfqBHBzDJ6kad4BzeqUBBS2zhs
Thanks
Matterbridge wouldn't exist without these libraries:
- discord - https://github.com/bwmarrin/discordgo
- echo - https://github.com/labstack/echo
- gitter - https://github.com/sromku/go-gitter
- gops - https://github.com/google/gops
- irc - https://github.com/thoj/go-ircevent
- mattermost - https://github.com/mattermost/platform
- matrix - https://github.com/matrix-org/gomatrix
- slack - https://github.com/nlopes/slack
- steam - https://github.com/Philipp15b/go-steam
- telegram - https://github.com/go-telegram-bot-api/telegram-bot-api
- xmpp - https://github.com/mattn/go-xmpp