3 Tengo
mahdi1234 edited this page 2022-02-21 16:37:53 +00:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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

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, itll 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

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

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"

More information

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