-
Notifications
You must be signed in to change notification settings - Fork 620
Tengo
Tengo can be used for advanced scripting in matterbridge, you can modify incoming and outgoing messages.
You can also use it to modify the {TENGO}
parameter in the RemoteNickFormat
.
[tengo]
InMessage="yourscript.tengo"
OutMessage="yourotherscript.tengo"
RemoteNickFormat="remotenickformat.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 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"
}
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
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.
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
RemoteNickFormat="remotenickformat.tengo"
You can find more tengo examples/info here:
- https://github.com/42wim/matterbridge/issues?q=is%3Aissue+tengo+label%3Atengo+is%3Aclosed
- https://github.com/42wim/matterbridge/tree/master/internal/tengo
- https://github.com/42wim/matterbridge/tree/master/contrib
- https://github.com/42wim/matterbridge/wiki/settings#tengo
The tengo documentation can be found here: https://github.com/d5/tengo/tree/master/docs
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