-
Notifications
You must be signed in to change notification settings - Fork 620
Settings
- Info
- Shared
- General
- API
- Discord
- Gitter
- IRC
- Matrix
- Mattermost
- RocketChat
- Slack
- Steam
- Telegram
- Tengo
- XMPP
- Zulip
- OPTIONAL: this setting isn't enabled by default.
- RELOADABLE: this setting can be reloaded by editing the configuration. No restart of matterbridge is required.
- ALL: this setting is usable with all bridges.
- GENERAL: this setting can be also set under
[general]
which means it's active for all bridges.
Only settings which have the ALL
setting are usable for all bridges.
Disable sending of edits to other bridges
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
EditDisable=true
Message to be appended to every edited message
Setting: OPTIONAL, RELOADABLE
Format: string
Example:
EditSuffix=" (edited)"
Messages you want to ignore.
Messages matching these regexp will be ignored and not sent to other bridges.
See https://regex-golang.appspot.com/assets/html/index.html for more regex info.
Setting: OPTIONAL, RELOADABLE, ALL
Format: space seperated regex string
Example: ignores messages starting with ~~ or messages containing badword
IgnoreMessages="^~~ badword"
Nicks you want to ignore.
Messages from those users will not be sent to other bridges.
Setting: OPTIONAL, RELOADABLE, ALL
Format: space seperated regex string
Example: ignore messages from ircspammer1 and ircspammer2
IgnoreNicks="ircspammer1 ircspammer2"
Extra label that can be used in the RemoteNickFormat
Setting: OPTIONAL, RELOADABLE, ALL
Format: string
Example: add the label mychat
Label="mychat"
Whether to prefix messages from other bridges to with the sender's nick.
Useful if username overrides for incoming webhooks isn't enabled.
If you set PrefixMessagesWithNick to true, each message
from other bridges will by default be prefixed by "bridge-" + nick. You can,
however, modify how the messages appear, by setting (and modifying) RemoteNickFormat
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:
PrefixMessagesWithNick=true
Defines how remote users appear on this bridge.
The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge.
The string "{LABEL}" (case sensitive) will be replaced by label= field of the sending bridge.
The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge.
The string "{GATEWAY}" (case sensitive) will be replaced by the origin gateway name that is replicating the message.
The string "{CHANNEL}" (case sensitive) will be replaced by the origin channel name used by the bridge.
The string "{TENGO}" (case sensitive) will be replaced by the output of the RemoteNickFormat script under [tengo]
The string "{NOPINGNICK}" (case sensitive) will be replaced by the actual nick / username, but with a ZWSP inside the nick, so the irc user with the same nick won't get pinged. See https://github.com/42wim/matterbridge/issues/175 for more information
Setting: OPTIONAL, RELOADABLE, GENERAL, ALL
Format: string
Example: add PROTOCOL and NICK
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
Messages you want to replace.
It replaces outgoing messages from the bridge.
So you need to place it by the sending bridge definition.
Regular expressions supported.
Setting: OPTIONAL, RELOADABLE, ALL
Format: [ ["from1","to1"],["from2","to2"] ]
Example: this replaces cat => dog and sleep => awake
ReplaceMessages=[ ["cat","dog"], ["sleep","awake"] ]
Nicks you want to replace.
See ReplaceMessages
for syntax
Setting: OPTIONAL, RELOADABLE, ALL
Format: [ ["from1","to1"],["from2","to2"] ]
Example: this replaces user-- => user
ReplaceNicks=[ ["user--","user"] ]
Enable to show users joins/parts from other bridges
Currently works for messages from the following bridges: irc, mattermost, slack
Setting: OPTIONAL, RELOADABLE, ALL
Format: boolean
Example: enable it
ShowJoinPart=true
Enable to show topic changes from other bridges.
Only works hiding/show topic changes from slack bridge for now.
Setting: OPTIONAL, RELOADABLE, ALL
Format: boolean
Example: enable it
ShowTopicChange=true
Enable to not verify the certificate on your server. e.g. when using selfsigned certificates
Setting: OPTIONAL
Format: boolean
Example: enable it
SkipTLSVerify=true
StripNick only allows alphanumerical nicks. See https://github.com/42wim/matterbridge/issues/285 It will strip other characters from the nick
Setting: OPTIONAL, RELOADABLE, GENERAL, ALL
Format: boolean
Example: enable it
StripNick=true
UseLocalAvatar specifies source bridges for which an avatar should be 'guessed' when an incoming message has no avatar. This works by comparing the username of the message to an existing Discord user, and using the avatar of the Discord user. (Substitute "Discord" with another platform, if used on another platform.)
On Discord, this only works if WebhookURL
is set (AND the message has no avatar).
At the moment, this setting is only available for Discord.
Setting: OPTIONAL, RELOADABLE
Format: ["gateway.account1", "gateway.account2", "gateway"]
Example: ["irc"]
- this example will guess the avatar coming from the irc
platform
Configuration that can be set under [general]
Allows you to ignore failing bridges on startup.
Matterbridge will disable the failed bridge and continue with the other ones.
Context: https://github.com/42wim/matterbridge/issues/455
Setting: OPTIONAL, RELOADABLE, GENERAL
Format: boolean
Example: enable it
IgnoreFailureOnStart=true
LogFile defines the location of a file to write logs into, rather than stdout. Logging will still happen on stdout if the file cannot be open for #writing, or if the value is empty. Note that the log won't roll, so you might want to use logrotate(8) with this feature.
Setting: OPTIONAL, GENERAL
Format: string
Example:
LogFile="/var/log/matterbridge.log"
Allows you to blacklist specific files from being downloaded.
Filenames matching these regexp will not be download/uploaded to the mediaserver.
You can use regex for this, see https://regex-golang.appspot.com/assets/html/index.html for more regex info
Setting: OPTIONAL, RELOADABLE, GENERAL
Format: string array
Example: do not upload html and htm extension
MediaDownloadBlacklist=[".html$",".htm$"]
MediaDownloadPath is the filesystem path where the media file will be placed, instead of uploaded, for if Matterbridge has write access to the directory your webserver is serving.
It is an alternative to MediaServerUpload.
More information https://github.com/42wim/matterbridge/wiki/Mediaserver-setup-%28advanced%29
Setting: OPTIONAL, RELOADABLE, GENERAL
Format: string
Example:
MediaDownloadPath="/srv/http/yourserver.com/public/download"
Maximum size in bytes matterbridge will download for use with (MediaServerUpload
and MediaDownloadPath
)
Setting: OPTIONAL, RELOADABLE, GENERAL
Format: int
Default: 10000000 (1 megabyte)
Example:
MediaDownloadSize=1000000
The MediaServerDownload will be used so that bridges without native uploading support: gitter, irc and xmpp will be shown links to the files on MediaServerDownload More information https://github.com/42wim/matterbridge/wiki/Mediaserver-setup-%28advanced%29
Setting: OPTIONAL, RELOADABLE, GENERAL
Format: string
Example:
MediaServerDownload="https://youserver.com/download"
Used for uploading images/files/video to a remote "mediaserver" (a webserver like caddy for example).
When configured images/files uploaded on bridges like mattermost, slack, telegram will be
downloaded and uploaded again to MediaServerUpload URL.
More information https://github.com/42wim/matterbridge/wiki/Mediaserver-setup-%28advanced%29
Setting: OPTIONAL, RELOADABLE, GENERAL
Format: string
Example:
MediaServerUpload="https://user:pass@yourserver.com/upload"
See RemoteNickFormat
More info on https://github.com/42wim/matterbridge/wiki/Api
Address to listen on for API
Setting: REQUIRED
Format: string
Example:
BindAddress="127.0.0.1:4242"
Amount of messages to keep in memory
Setting: OPTIONAL, RELOADABLE
Format: int
Default: 10
Example:
Buffer=1000
Bearer token used for authentication
curl -H "Authorization: Bearer token" http://localhost:4242/api/messages
no authorization if token is empty
Setting: OPTIONAL, RELOADABLE
Format: string
Example:
Token="mytoken"
Basic config on https://github.com/42wim/matterbridge/wiki/Section-Discord-(basic)
Name or uid of your server/guild
Setting: REQUIRED
Format: string
Example:
Server="yourservername"
Token to connect with Discord API You can get your token by following the instructions on https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-getting-a-token If you want roles/groups mentions to be shown with names instead of ID, you'll need to give your bot the "Manage Roles" permission.
Setting: REQUIRED
Format: string
Bot example:
Token="YOUR_TOKEN_HERE"
User example:
Token="User YOUR_TOKEN_HERE"
Shows title, description and URL of embedded messages (sent by other bots)
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:
ShowEmbeds=true
Shows the username instead of the server nickname
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:
UseUserName=true
Show #xxxx
discriminator with UseUserName
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:
UseDiscriminator=true
Specify WebhookURL. If given, will relay messages using the Webhook, which gives a better look to messages. This only works if you have one discord channel, if you have multiple discord channels you'll have to specify it in the gateway config
Setting: OPTIONAL
Format: string
Example:
WebhookURL="Yourwebhooktokenhere"
Relay messages using the Webhook, which gives a better look to messages. Needs "Manage Webhooks" permission to function.
Setting: OPTIONAL
Format: boolean
Example:
AutoWebhooks=true
See EditDisable
See EditSuffix
See UseLocalAvatar
Basic config on https://github.com/42wim/matterbridge/wiki/Section-Gitter-(basic)
Token to connect with Gitter API.
You can get your token by going to https://developer.gitter.im/docs/welcome and SIGN IN.
Setting: REQUIRED
Format: string
Example:
Token="Yourtokenhere"
Basic config on https://github.com/42wim/matterbridge/wiki/Section-IRC-(basic)
If you know your charset, you can specify it manually.
Otherwise it tries to detect this automatically. Select one below
"iso-8859-2:1987", "iso-8859-9:1989", "866", "latin9", "iso-8859-10:1992", "iso-ir-109", "hebrew",
"cp932", "iso-8859-15", "cp437", "utf-16be", "iso-8859-3:1988", "windows-1251", "utf16", "latin6",
"latin3", "iso-8859-1:1987", "iso-8859-9", "utf-16le", "big5", "cp819", "asmo-708", "utf-8",
"ibm437", "iso-ir-157", "iso-ir-144", "latin4", "850", "iso-8859-5", "iso-8859-5:1988", "l3",
"windows-31j", "utf8", "iso-8859-3", "437", "greek", "iso-8859-8", "l6", "l9-iso-8859-15",
"iso-8859-2", "latin2", "iso-ir-100", "iso-8859-6", "arabic", "iso-ir-148", "us-ascii", "x-sjis",
"utf16be", "iso-8859-8:1988", "utf16le", "l4", "utf-16", "iso-ir-138", "iso-8859-7", "iso-8859-7:1987",
"windows-1252", "l2", "koi8-r", "iso8859-1", "latin1", "ecma-114", "iso-ir-110", "elot-928",
"iso-ir-126", "iso-8859-1", "iso-ir-127", "cp850", "cyrillic", "greek8", "windows-1250", "iso-latin-1",
"l5", "ibm866", "cp866", "ms-kanji", "ibm850", "ecma-118", "iso-ir-101", "ibm819", "l1", "iso-8859-6:1987",
"latin5", "ascii", "sjis", "iso-8859-10", "iso-8859-4", "iso-8859-4:1988", "shift-jis
The select charset will be converted to utf-8 when sent to other bridges.
Setting: OPTIONAL
Format: string
Example:
Charset="utf-8"
ColorNicks will show each nickname in a different color. Only works in IRC right now.
Setting: OPTIONAL, RELOADABLE
Format: bool
Example: enable it
ColorNicks=true
Debug log verbosity.
Setting: OPTIONAL
Default: 0
Format: int
Example:
DebugLevel=1
Delay in milliseconds between channel joins. Only useful when you have a LOT of channels to join.
Setting: OPTIONAL, RELOADABLE
Default: 0
Format: int
Example:
JoinDelay=1000
Flood control. Delay in milliseconds between each message send to the IRC server.
Setting: OPTIONAL, RELOADABLE
Default: 1300
Format: int
Example:
MessageDelay=1300
Maximum length of message sent to irc server. If it exceeds
<message clipped>
will be add to the message.
Setting: OPTIONAL, RELOADABLE
Default: 400
Format: int
Example:
MessageLength=400
Maximum amount of messages to hold in queue. If queue is full
messages will be dropped.
<message clipped>
will be add to the message that fills the queue.
Setting: OPTIONAL, RELOADABLE
Default: 30
Format: int
Example:
MessageQueue=30
Split messages on MessageLength
instead of showing the <message clipped>
WARNING: this could lead to flooding
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
MessageSplit=true
Your nick on irc.
Setting: REQUIRED
Format: string
Example:
Nick="matterbot"
If you registered your bot with a service like Nickserv on freenode.
Also being used when UseSASL=true
Note: when UseSASL=true
, this is the name of your account.
Note: if you want do to quakenet auth, set NickServNick="Q@CServe.quakenet.org"
Setting: OPTIONAL
Format: string
Example: On freenode nickserv is called nickserv
NickServNick="nickserv"
The password you use if you registered your bot with a service like Nickserv on freenode.
Also being used when UseSASL=true
Also see NickServNick
Setting: OPTIONAL
Format: string
Example:
NickServPassword="secret"
Only used for quakenet auth. See https://github.com/42wim/matterbridge/issues/263 for more info
Setting: OPTIONAL
Format: string
Example:
NickServUsername="username"
Do not send joins/parts to other bridges Currently works for messages from the following bridges: irc, mattermost, slack
Setting: OPTIONAL
Format: boolean
Example: enable it
NoSendJoinPart=true
Password for irc server (if necessary)
Setting: OPTIONAL
Format: string
Example:
Password="s3cret"
PingDelay specifies how long to wait to send a ping to the irc server. You can use s for second, m for minute
Setting: OPTIONAL, RELOADABLE
Default: "1m"
Example:
PingDelay="1m"
Delay in seconds to rejoin a channel when kicked
Setting: OPTIONAL, RELOADABLE
Default: 0
Format: int
Example:
RejoinDelay=2
RunCommands allows you to send RAW irc commands after connection
Setting: OPTIONAL, RELOADABLE
Format: Array of strings
Example: Send user a hello message and send something to chanserv
RunCommands=["PRIVMSG user :hello","PRIVMSG chanserv :something"]
irc server to connect to.
Setting: REQUIRED
Format: string (hostname:port)
Example:
Server="irc.freenode.net:6667"
See SkipTLSVerify
Strips Markdown from messages
Setting: OPTIONAL
Format: boolean
Example: enable it
StripMarkdown=true
Enable SASL (PLAIN) authentication. (freenode requires this from eg AWS hosts)
It uses NickServNick
and NickServPassword
as login and password
Setting: OPTIONAL
Format: boolean
Example: enable it
UseSASL=true
Enable to use TLS connection to your irc server.
Setting: OPTIONAL
Format: boolean
Example: enable it
UseTLS=true
Enable to replace bot's nick with user's nick.
RemoteNickFormat
has to contain /
.
The server has to support RELAYMSG.
Bot may need to be channel operator to use RELAYMSG.
Setting: OPTIONAL
Format: boolean
Example: enable it
UseRelayMsg=true
Enable to show verbose users joins/parts (ident@host) from other bridges Currently works for messages from the following bridges: irc
Setting: OPTIONAL
Format: boolean
Example: enable it
VerboseJoinPart=true
Basic config on https://github.com/42wim/matterbridge/wiki/Section-Matrix-(basic)
Whether to disable sending of HTML content to matrix See https://github.com/42wim/matterbridge/issues/1022
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
HTMLDisable=true
login of your bot. Use a dedicated user for this and not your own! Messages sent from this user will not be relayed to avoid loops.
Setting: REQUIRED
Format: string
Example:
Login="yourlogin"
Whether to send the homeserver suffix. eg ":matrix.org" in @username:matrix.org to other bridges, or only send "username".(true only sends username)
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
NoHomeServerSuffix=true
password of your bot.
Setting: REQUIRED
Format: string
Example:
Password="yourpass"
Server is your homeserver (eg https://matrix.org)
Setting: REQUIRED
Format: string
Example:
Server="https://matrix.org"
Shows the username instead of the displayname
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:
UseUserName=true
Basic config on https://github.com/42wim/matterbridge/wiki/Section-Mattermost-(basic)
See EditDisable
See EditSuffix
login of your bot. Use a dedicated user for this and not your own!
Setting: REQUIRED (when not using webhooks)
Format: string
Example:
Login="yourlogin"
Enable this to make a http connection (instead of https) to your mattermost.
Setting: OPTIONAL
Format: boolean
Example: enable it
NoTLS=true
login of your bot. Use a dedicated user for this and not your own!
Setting: REQUIRED (when not using webhooks)
Format: string
Example:
Password="yourpass"
The mattermost hostname. (do not prefix it with http or https)
Setting: REQUIRED
Format: string
Example:
Server="yourmattermostserver.domain"
Skip the Mattermost server version checks that are normally done when connecting. The usage scenario for this feature would be when the Mattermost instance is hosted behind a reverse proxy that suppresses "non-standard" response headers in flight.
Setting: OPTIONAL
Format: boolean
Example: enable it
SkipVersionCheck=true
Your team on mattermost.
Setting: REQUIRED (when not using webhooks)
Format: string
Example:
Team="yourteam"
personal access token of the bot.
new feature since mattermost 4.1. See https://docs.mattermost.com/developer/personal-access-tokens.html
you can use token instead of login/password.
Setting: OPTIONAL (when not using webhooks)
Format: string
Example:
Token="abcdefghijklm"
NOT RECOMMENDED TO USE INCOMING/OUTGOING WEBHOOK. USE DEDICATED BOT USER WHEN POSSIBLE!
Url is your incoming webhook url as specified in mattermost. See account settings - integrations - incoming webhooks on mattermost. If specified, messages will be sent to mattermost using this URL
Setting: OPTIONAL
Format: string
Example:
WebhookURL="https://yourdomain/hooks/yourhookkey"
Address to listen on for outgoing webhook requests from mattermost.
See account settings - integrations - outgoing webhooks on mattermost.
If specified, messages will be received from mattermost on this ip:port
(this will only work if WebhookURL
is also configured)
Setting: OPTIONAL
Format: string
Example:
WebhookBindAddress="0.0.0.0:9999"
Icon that will be showed in mattermost.
This only works when WebhookURL
is configured.
Setting: OPTIONAL
Format: string
Example:
IconURL="http://youricon.png"
Basic config on https://github.com/42wim/matterbridge/wiki/Section-RocketChat-(basic)
login needs to be the login with email address! user@domain.com Use a dedicated user for this and not your own!
Setting: REQUIRED
Format: string
Example:
Login="yourlogin@domain.com"
Setting: REQUIRED
Format: string
Example:
Password="yourpass"
The rocketchat hostname. (prefix it with http or https)
Setting: REQUIRED
Format: string
Example:
Server="https://yourrocketchatserver.domain.com:443"
See SkipTLSVerify
USE DEDICATED BOT USER WHEN POSSIBLE! This allows you to use advanced features like message editing/deleting and uploads
Address to listen on for outgoing webhook requests from rocketchat. See administration - integrations - new integration - outgoing webhook
Setting: OPTIONAL
Format: string
Example:
WebhookBindAddress="0.0.0.0:9999"
Your nick/username as specified in your incoming webhook "Post as" setting
Setting: OPTIONAL
Format: string
Example:
Nick="matterbot"
Url is your incoming webhook url as specified in rocketchat Read #https://rocket.chat/docs/administrator-guides/integrations/#how-to-create-a-new-incoming-webhook See administration - integrations - new integration - incoming webhook
Setting: OPTIONAL
Format: string
Example:
WebhookURL="https://yourdomain/hooks/yourhookkey"
Basic config on https://github.com/42wim/matterbridge/wiki/Section-Slack-(basic)
Extra slack specific debug info, warning this generates a lot of output.
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: Enable it
Debug=true
See EditDisable
See EditSuffix
Opportunistically preserve threaded replies between Slack channels. This only works if the parent message is still in the cache. Cache is flushed between restarts. Note: Not currently working on gateways with mixed bridges of both slack and slack-legacy type. Context in issue #624.
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: Enable it
PreserveThreading=true
Enable showing "user_typing" events from across gateway when available. Protip: Set your bot/user's "Full Name" to be "Someone (over chat bridge)", and so the message will say "Someone (over chat bridge) is typing".
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: Enable it
ShowUserTyping=true
Enable to sync topic/purpose changes from other bridges Only works syncing topic changes from slack bridge for now
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: Enable it
SyncTopic=true
Token to connect with the Slack API \
Setting: REQUIRED (when not using webhooks)
Format: string
Example:
Token="yourslacktoken"
NOT RECOMMENDED TO USE INCOMING/OUTGOING WEBHOOK. USE SLACK API AND DEDICATED BOT USER WHEN POSSIBLE!
Icon that will be showed in slack.
The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge.
The string "{LABEL}" (case sensitive) will be replaced by label= field of the sending bridge.
The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge.
Setting: OPTIONAL
Format: string
Example:
IconURL="https://robohash.org/{NICK}.png?size=48x48"
Address to listen on for outgoing webhook requests from slack. See account settings - integrations - outgoing webhooks on slack
Setting: OPTIONAL
Format: string
Example:
WebhookBindAddress="0.0.0.0:9999"
Url is your incoming webhook url as specified in slack. See account settings - integrations - incoming webhooks on slack
Setting: OPTIONAL
Format: string
Example:
WebhookURL="https://hooks.slack.com/services/yourhook"
Basic config on https://github.com/42wim/matterbridge/wiki/Section-Steam-(basic)
steamguard mail authcode (not the 2FA code)
Setting: OPTIONAL
Format: string
Example:
Authcode="ABCE12"
login of your bot. Use a dedicated user for this and not your own account!
Setting: REQUIRED
Format: string
Example:
Login="yourlogin"
password of your bot.
Setting: REQUIRED
Format: string
Example:
Password="yourpass"
Basic config on https://github.com/42wim/matterbridge/wiki/Section-Telegram-(basic)
See EditDisable
See EditSuffix
Convert Tgs (Telegram animated sticker) images to some other file format before upload.
This requires the external dependency lottie
, which can be installed like this:
pip install lottie cairosvg
https://github.com/42wim/matterbridge/issues/874
Note that if you insist on using an ancient Python version like 3.5, the pip installation is slightly more complicated. Matterbridge expects lottie_convert.py
to be in your $PATH
; if that's not already the case, try putting this into your ~/.profile
:
PATH=$HOME/.local/bin:$PATH
export PATH
If you encounter bugs with this, try to extract the Telegram sticker file and run lottie on it like this:
lottie_convert.py --input-format lottie file_1234_tgs.webp myoutput.webp
This might give you additional information about what's going on.
Setting: OPTIONAL, RELOADABLE
Format: string
Values: "png"
(still-image), "webp"
(animated webp)
Example: Convert to png because a gateway is involved that doesn't even understand animated webp:
MediaConvertTgs="png"
Convert WebP images to PNG before upload. https://github.com/42wim/matterbridge/issues/398
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
MediaConvertWebPToPNG=true
Supported formats are:
HTML
-
Markdown
. Deprecated, does not display links with underscores_
correctly. MarkdownV2
-
HTMLNick
. This only allows HTML for the nick, the message itself will be html-escaped.
Setting: OPTIONAL, RELOADABLE
Format: string
Default: ""
Example: Send as MarkdownV2
MessageFormat="MarkdownV2"
Disable quoted/reply messages
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
QuoteDisable=true
Format quoted/reply messages
Setting: OPTIONAL, RELOADABLE
Format: string
Default: "{MESSAGE} (re @{QUOTENICK}: {QUOTEMESSAGE})"
Example:
QuoteFormat="{MESSAGE} (re @{QUOTENICK}: {QUOTEMESSAGE})"
Limits {QUOTEMESSAGE} into integer characters specified in this.
Setting: OPTIONAL
Format: integer
Example:
QuoteLengthLimit=46
Disables link previews for links in messages
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
DisableWebPagePreview=true
Token to connect with telegram API See https://core.telegram.org/bots#6-botfather and https://www.linkedin.com/pulse/telegram-bots-beginners-marco-frau
Setting: REQUIRED
Format: string
Example:
Token="Yourtokenhere"
If enabled use the "First Name" as username. If this is empty use the Username If disabled use the "Username" as username. If this is empty use the First Name If all names are empty, username will be "unknown"
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
UseFirstName=true
WARNING! If enabled this will relay GIF/stickers/documents and other attachments as URLs Those URLs will contain your bot-token. This may not be what you want. For now there is no secure way to relay GIF/stickers/documents without seeing your token.
Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it
UseInsecureURL=true
More information about tengo on: https://github.com/d5/tengo/blob/master/docs/tutorial.md and https://github.com/d5/tengo/blob/master/docs/stdlib.md
FIXME: Document support for dropping messages.
InMessage allows you to specify the location of a tengo (https://github.com/d5/tengo/) script.
This script will receive every incoming message and can be used to modify the Username and the Text of that message.
The script will have the following global variables:
to modify: msgUsername
and msgText
to read: msgChannel
and msgAccount
The script is reloaded on every message, so you can modify the script on the fly.
Example script can be found in https://github.com/42wim/matterbridge/tree/master/gateway/bench.tengo and https://github.com/42wim/matterbridge/tree/master/contrib/example.tengo
The example below will check if the text contains blah and if so, it'll replace the text and the username of that message.
text := import("text")
if text.re_match("blah",msgText) {
msgText="replaced by this"
msgUsername="fakeuser"
}
Setting: OPTIONAL, RELOADABLE
Format: string
Example:
InMessage="example.tengo"
OutMessage allows you to specify the location of the script that will be invoked on each message being sent to a bridge and can be used to modify the Username and the Text of that message.
The script will have the following global variables:
read-only:
inAccount
, inProtocol
, inChannel
, inGateway
, inEvent
outAccount
, outProtocol
, outChannel
, outGateway
, outEvent
read-write:
msgText
, msgUsername
Notice: msgUsername
is already formatted by RemoteNickFormat at this point.
The script is reloaded on every message, so you can modify the script on the fly.
The default script in https://github.com/42wim/matterbridge/tree/master/internal/tengo/outmessage.tengo is compiled in and will be executed if no script is specified.
Tengo scripts on a docker instance
Place your scripts in /etc/matterbridge
on the container and reference them with OutMessage="/etc/matterbridge/example.tengo"
Setting: OPTIONAL, RELOADABLE
Format: string
Example:
OutMessage="example.tengo"
RemoteNickFormat allows you to specify the location of a tengo (https://github.com/d5/tengo/) script.
The script will have the following global variables:
to modify: result
to read: channel
, bridge
, gateway
, protocol
, nick
The result will be set in {TENGO}
in the RemoteNickFormat key of every bridge where {TENGO}
is specified
The script is reloaded on every message, so you can modify the script on the fly.
Example script can be found in https://github.com/42wim/matterbridge/tree/master/contrib/remotenickformat.tengo
Setting: OPTIONAL, RELOADABLE
Format: string
Example:
RemoteNickFormat="remotenickformat.tengo"
Basic config on https://github.com/42wim/matterbridge/wiki/Section-WhatsApp-(basic)
Number you will use as a relay bot. Tip: Get some disposable sim card, don't rely on your own number.
Setting: REQUIRED
Format: string
Example:
Number="+48111222333"
If your terminal is white we need to invert QR code in order for it to be scanned properly
Setting: OPTIONAL
Format: boolean
Example: enable it
QrOnWhiteTerminal=true
First time that you login you will need to scan QR code, then credentials willl be saved in a session file
If you do not set a SessionFile
, you will need to scan your QR code on every restart.
By default the session is stored only in memory until restarting matterbridge.
Setting: OPTIONAL
Format: string
Example:
SessionFile="session-48111222333.gob"
Basic config on https://github.com/42wim/matterbridge/wiki/Section-XMPP-(basic)
Jabber Identifier
Setting: REQUIRED
Format: string
Example:
Jid="user@example.com"
Multi-user Chatroom
Setting: REQUIRED
Format: string
Example:
Muc="conference.jabber.example.com"
Your nick in the rooms
Setting: REQUIRED
Format: string
Example:
Nick="xmppbot"
Enable this to make an insecure connection to your xmpp server.
Setting: OPTIONAL
Format: boolean
Example: enable it
NoTLS=true
Password
Setting: REQUIRED
Format: string
Example:
Password="yourpass"
xmpp server to connect to.
Setting: REQUIRED
Format: string (hostname:port)
Example:
Server="jabber.example.com:5222"
See SkipTLSVerify
Basic config on https://github.com/42wim/matterbridge/wiki/Section-Zulip-(basic)
Username of the bot, normally called yourbot-bot@yourserver.zulipchat.com See username in Settings - Your bots
Setting: REQUIRED
Format: string
Example:
Login="yourbot-bot@yourserver.zulipchat.com"
Servername of your zulip instance
Setting: REQUIRED
Format: string
Example:
Server="https://yourserver.zulipchat.com"
Token to connect with zulip API (called bot API key in Settings - Your bots)
Setting: REQUIRED
Format: string
Example:
Token="Yourtokenhere"
Getting started
How to create your config
Discord bot setup
Slack bot setup
MS Teams setup
Deploy
DigitalOcean
Azure
Docker
Heroku
Gateways
Config: basic
Config: channel rules
Discord
Gitter
Hipchat
IRC
Keybase
Matrix
Mattermost
Microsoft Teams
Mumble
Nextcloud Talk
RocketChat
Slack
Sshchat
Steam
Telegram
Twitch
VK
WhatsApp
XMPP
Zulip
Advanced
Mediaserver setup
Service files
Developer
API
Tengo scripting
Making gateways