37 Settings
Lucki edited this page 2022-04-14 15:55:55 +02:00

Info

  • 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.

Shared

Only settings which have the ALL setting are usable for all bridges.

EditDisable

Disable sending of edits to other bridges

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it

EditDisable=true

EditSuffix

Message to be appended to every edited message

Setting: OPTIONAL, RELOADABLE
Format: string
Example:

EditSuffix=" (edited)"

IgnoreMessages

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"

IgnoreNicks

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"

Label

Extra label that can be used in the RemoteNickFormat

Setting: OPTIONAL, RELOADABLE, ALL
Format: string
Example: add the label mychat

Label="mychat"

PrefixMessagesWithNick

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

RemoteNickFormat

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}> "

ReplaceMessages

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"] ]

ReplaceNicks

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"] ]

ShowJoinPart

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

ShowTopicChange

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

SkipTLSVerify

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

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

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

General

Configuration that can be set under [general]

IgnoreFailureOnStart

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

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"

MediaDownloadBlacklist

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

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"

MediaDownloadSize

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

MediaServerDownload

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"

MediaServerUpload

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"

RemoteNickFormat

See RemoteNickFormat

API

More info on https://github.com/42wim/matterbridge/wiki/Api

BindAddress *

Address to listen on for API

Setting: REQUIRED
Format: string
Example:

BindAddress="127.0.0.1:4242"

Buffer

Amount of messages to keep in memory

Setting: OPTIONAL, RELOADABLE
Format: int
Default: 10
Example:

Buffer=1000

Token

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"

Discord

Basic config on https://github.com/42wim/matterbridge/wiki/Section-Discord-(basic)

Server *

Name or uid of your server/guild

Setting: REQUIRED
Format: string
Example:

Server="yourservername"

Token *

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"

⚠️ read https://support.discord.com/hc/en-us/articles/115002192352-Automated-user-accounts-self-bots- before using user tokens.

ShowEmbeds

Shows title, description and URL of embedded messages (sent by other bots)

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:

ShowEmbeds=true

UseUserName

Shows the username instead of the server nickname

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:

UseUserName=true

UseDiscriminator

Show #xxxx discriminator with UseUserName

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:

UseDiscriminator=true

WebhookURL

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"

AutoWebhooks

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

EditDisable

See EditDisable

EditSuffix

See EditSuffix

UseLocalAvatar

See UseLocalAvatar

Gitter

Basic config on https://github.com/42wim/matterbridge/wiki/Section-Gitter-(basic)

Token *

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"

IRC

Basic config on https://github.com/42wim/matterbridge/wiki/Section-IRC-(basic)

Charset

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

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

DebugLevel

Debug log verbosity.

Setting: OPTIONAL
Default: 0
Format: int
Example:

DebugLevel=1

JoinDelay

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

MessageDelay

Flood control. Delay in milliseconds between each message send to the IRC server.

Setting: OPTIONAL, RELOADABLE
Default: 1300
Format: int
Example:

MessageDelay=1300

MessageLength

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

MessageQueue

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

MessageSplit

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

Nick *

Your nick on irc.

Setting: REQUIRED
Format: string
Example:

Nick="matterbot"

NickServNick

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"

NickServPassword

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"

NickServUsername

Only used for quakenet auth. See https://github.com/42wim/matterbridge/issues/263 for more info

Setting: OPTIONAL
Format: string
Example:

NickServUsername="username"

NoSendJoinPart

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

Password for irc server (if necessary)

Setting: OPTIONAL
Format: string
Example:

Password="s3cret"

Pingdelay

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"

RejoinDelay

Delay in seconds to rejoin a channel when kicked

Setting: OPTIONAL, RELOADABLE
Default: 0
Format: int
Example:

RejoinDelay=2

RunCommands

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"]

Server *

irc server to connect to.

Setting: REQUIRED
Format: string (hostname:port)
Example:

Server="irc.freenode.net:6667"

SkipTLSVerify

See SkipTLSVerify

StripMarkdown

Strips Markdown from messages

Setting: OPTIONAL
Format: boolean
Example: enable it

StripMarkdown=true

UseSASL

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

UseTLS

Enable to use TLS connection to your irc server.

Setting: OPTIONAL
Format: boolean
Example: enable it

UseTLS=true

UseRelayMsg

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

VerboseJoinPart

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

Matrix

Basic config on https://github.com/42wim/matterbridge/wiki/Section-Matrix-(basic)

HTMLDisable

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 *

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"

NoHomeServerSuffix

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 *

password of your bot.

Setting: REQUIRED
Format: string
Example:

Password="yourpass"

PrefixMessagesWithNick

See PrefixMessagesWithNick

Server *

Server is your homeserver (eg https://matrix.org)

Setting: REQUIRED
Format: string
Example:

Server="https://matrix.org"

UseUserName

Shows the username instead of the displayname

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example:

UseUserName=true

Mattermost

Basic config on https://github.com/42wim/matterbridge/wiki/Section-Mattermost-(basic)

EditDisable

See EditDisable

EditSuffix

See EditSuffix

Login *

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"

NoTLS

Enable this to make a http connection (instead of https) to your mattermost.

Setting: OPTIONAL
Format: boolean
Example: enable it

NoTLS=true

Password *

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"

Server *

The mattermost hostname. (do not prefix it with http or https)

Setting: REQUIRED
Format: string
Example:

Server="yourmattermostserver.domain"

SkipVersionCheck

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

Team *

Your team on mattermost.

Setting: REQUIRED (when not using webhooks)
Format: string
Example:

Team="yourteam"

Token

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"

Webhook options

NOT RECOMMENDED TO USE INCOMING/OUTGOING WEBHOOK. USE DEDICATED BOT USER WHEN POSSIBLE!

WebhookURL

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"

WebhookBindAddress

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"

IconURL

Icon that will be showed in mattermost. This only works when WebhookURL is configured.

Setting: OPTIONAL
Format: string
Example:

IconURL="http://youricon.png"

PrefixMessagesWithNick

See PrefixMessagesWithNick

RocketChat

Basic config on https://github.com/42wim/matterbridge/wiki/Section-RocketChat-(basic)

Login *

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"

Password *

Setting: REQUIRED
Format: string
Example:

Password="yourpass"

Server *

The rocketchat hostname. (prefix it with http or https)

Setting: REQUIRED
Format: string
Example:

Server="https://yourrocketchatserver.domain.com:443"

SkipTLSVerify

See SkipTLSVerify

Webhook options

USE DEDICATED BOT USER WHEN POSSIBLE! This allows you to use advanced features like message editing/deleting and uploads

WebhookBindAddress

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"

Nick

Your nick/username as specified in your incoming webhook "Post as" setting

Setting: OPTIONAL
Format: string
Example:

Nick="matterbot"

WebhookURL

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"

Slack

Basic config on https://github.com/42wim/matterbridge/wiki/Section-Slack-(basic)

Debug

Extra slack specific debug info, warning this generates a lot of output.

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: Enable it

Debug=true

EditDisable

See EditDisable

EditSuffix

See EditSuffix

PrefixMessagesWithNick

See PrefixMessagesWithNick

PreserveThreading

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

ShowUserTyping

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

SyncTopic

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 *

Token to connect with the Slack API \

Setting: REQUIRED (when not using webhooks)
Format: string
Example:

Token="yourslacktoken"

Webhook options

NOT RECOMMENDED TO USE INCOMING/OUTGOING WEBHOOK. USE SLACK API AND DEDICATED BOT USER WHEN POSSIBLE!

IconURL

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"

WebhookBindAddress

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"

WebhookURL

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"

Steam

Basic config on https://github.com/42wim/matterbridge/wiki/Section-Steam-(basic)

Authcode

steamguard mail authcode (not the 2FA code)

Setting: OPTIONAL
Format: string
Example:

Authcode="ABCE12"

Login *

login of your bot. Use a dedicated user for this and not your own account!

Setting: REQUIRED
Format: string
Example:

Login="yourlogin"

Password *

password of your bot.

Setting: REQUIRED
Format: string
Example:

Password="yourpass"

PrefixMessagesWitNick

See PrefixMessagesWithNick

Telegram

Basic config on https://github.com/42wim/matterbridge/wiki/Section-Telegram-(basic)

EditDisable

See EditDisable

EditSuffix

See EditSuffix

MediaConvertTgs

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"

MediaConvertWebPToPNG

Convert WebP images to PNG before upload. https://github.com/42wim/matterbridge/issues/398

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it

MediaConvertWebPToPNG=true

MessageFormat

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"

QuoteDisable

Disable quoted/reply messages

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it

QuoteDisable=true

QuoteFormat

Format quoted/reply messages

Setting: OPTIONAL, RELOADABLE
Format: string
Default: "{MESSAGE} (re @{QUOTENICK}: {QUOTEMESSAGE})"
Example:

QuoteFormat="{MESSAGE} (re @{QUOTENICK}: {QUOTEMESSAGE})"

QuoteLengthLimit

Limits {QUOTEMESSAGE} into integer characters specified in this.

Setting: OPTIONAL
Format: integer
Example:

QuoteLengthLimit=46

DisableWebPagePreview

Disables link previews for links in messages

Setting: OPTIONAL, RELOADABLE
Format: boolean
Example: enable it

DisableWebPagePreview=true

Token *

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"

UseFirstName

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

UseInsecureURL

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

Tengo

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

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

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

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"

WhatsApp

Basic config on https://github.com/42wim/matterbridge/wiki/Section-WhatsApp-(basic)

Number *

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"

QrOnWhiteTerminal

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

SessionFile

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"

XMPP

Basic config on https://github.com/42wim/matterbridge/wiki/Section-XMPP-(basic)

Jid *

Jabber Identifier

Setting: REQUIRED
Format: string
Example:

Jid="user@example.com"

MUC *

Multi-user Chatroom

Setting: REQUIRED
Format: string
Example:

Muc="conference.jabber.example.com"

Nick *

Your nick in the rooms

Setting: REQUIRED
Format: string
Example:

Nick="xmppbot"

NoTLS

Enable this to make an insecure connection to your xmpp server.

Setting: OPTIONAL
Format: boolean
Example: enable it

NoTLS=true

Password *

Password

Setting: REQUIRED
Format: string
Example:

Password="yourpass"

Server *

xmpp server to connect to.

Setting: REQUIRED
Format: string (hostname:port)
Example:

Server="jabber.example.com:5222"

SkipTLSVerify

See SkipTLSVerify

Zulip

Basic config on https://github.com/42wim/matterbridge/wiki/Section-Zulip-(basic)

Login *

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"

Server *

Servername of your zulip instance

Setting: REQUIRED
Format: string
Example:

Server="https://yourserver.zulipchat.com"

Token *

Token to connect with zulip API (called bot API key in Settings - Your bots)

Setting: REQUIRED
Format: string
Example:

Token="Yourtokenhere"