mirror of
https://github.com/42wim/matterbridge.git
synced 2025-02-16 13:31:12 +01:00
Created Tengo (markdown)
parent
efce2692b8
commit
81e5580a51
86
Tengo.md
Normal file
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>
|
Loading…
x
Reference in New Issue
Block a user