Created Tengo (markdown)

Wim 2021-02-11 23:54:15 +01:00
parent efce2692b8
commit 81e5580a51

86
Tengo.md Normal file

@ -0,0 +1,86 @@
# Tengo
Tengo can be used fo 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](https://github.com/42wim/matterbridge/pull/1272).
## 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"
}
```
`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>