diff --git a/Tengo.md b/Tengo.md new file mode 100644 index 0000000..e8c2675 --- /dev/null +++ b/Tengo.md @@ -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 +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 + +`RemoteNickFormat="remotenickformat.tengo"` + +## More information + +You can find more tengo examples/info here: +- +- +- +- + +The tengo documentation can be found here: \ No newline at end of file