A small tool for automatically forwarding telegram messages from source chats to destination chats in real time as messages appear.
- Monitoring multiple sources and forwarding/copying messages to all the defined destinations
- Forwarding (with 'Forwarded to' label) or copying (posting as new) messages
- Filtering messages with regular expressions, so only messages that match the filter get copied/forwarded
--auth-onlyflag to only interactively login to Telegram and then exit- The app uses Telegram Client API, so there is no need to create any bots and be an admin of the group/channel from where you want to forward messages
- You don't need to trust any third party software or service with your Telegram account, this app does not force you to forward your Telegram OTP code anywhere.
You'll need a Telegram account for the app to work. The account must be a member and have necessary permissions in the chats/groups/channels between which you want to forward messages.
- Create an application
- Obtain your
api_idandapi_hash - Create a configuration JSON file
- Run as a console application or with Docker
- When run for the first time, follow console messages to log in to your account
- Optionally, run with
--auth-onlyflag to only authorize to Telegram and then exit
Configuration is done via a json file. File name of the json file can be specified with CONFIG_FILE environment variable, by default it
is simple-telegram-forwarder.config.json.
| Field JSONPath | Example value | Description |
|---|---|---|
$.api_hash |
cb01sdfe7922afd2970359f6aa76d0 |
api_hash obtained from creating a Telegram application |
$.api_id |
98011131 |
api_id obtained from creating a Telegram application |
$.forwarding_config.sources[*].username |
@telegram |
Username or channel name of the source. Use this field or $.forwarding_config.sources[*].chat_id |
$.forwarding_config.sources[*].chat_id |
-1001005640892 |
Chat ID of the source. Use i.e. @userinfobot to get it. Use this field or $.forwarding_config.sources[*].username |
$.forwarding_config.destinations |
Array of destinations. Must contain at least one | |
$.forwarding_config.destinations[*].username |
@telegram |
Username or channel name of the source. Use this field or $.forwarding_config.destinations[*].chat_id |
$.forwarding_config.destinations[*].chat_id |
-1001005640892 |
Chat ID of the destination. Use i.e. @userinfobot to get it. Use this field or $.forwarding_config.destinations[*].username |
$.forwarding_config.forward |
bool |
Forward messages instead of sending a copy. Default: false |
$.forwarding_config.filter |
(?i)(any|regex?|(you)*want) |
Optional regular expression for message filtering: only matched messages are forwarded. |
Example configuration file:
{
"api_hash": "cb01sdfe7922afd2970359f6aa76d0",
"api_id": 98011131,
"forwarding_config": {
"sources": [{
"username": "@telegram"
},{
"chat_id": "-1001005640893"
}],
"destinations": [
{
"chat_id": -1001005640892
}
],
"forward": true,
"filter": {
"regex": "(?i)(any|regex?|(you)*want)"
}
}
}In order to compile and run this application you'll need a TDLib library installed on your system. Please refer to TDLib building instructions. Then run:
go build .
./simple-telegram-forwarderIf it is the first run, then you will be prompted to enter your phone and OTP code.
After that TDLib will create .tdlib folder in the working directory which stores session data.
If you wish to decouple logging in to Telegram from normal app usage, then run the executable with --auth-only flag.
./simple-telegram-forwarder --auth-onlyBuild docker image (may take a while):
docker build -t simple-telegram-forwarder .Or pull an existing one from DockerHub (for linux-amd64 only):
docker pull marchukd/simple-telegram-forwarderWhen running for the first time, pass--auth-only flag to make application interactively authorize to Telegram and then exit:
docker container run -it -v ./.tdlib:/app/.tdlib -v ./simple-telegram-forwarder.config.json:/app/simple-telegram-forwarder.config.json:ro simple-telegram-forwarder ./simple-telegram-forwarder --auth-onlyAfter that execute to run the app normally:
docker run -v ./.tdlib:/app/.tdlib -v ./simple-telegram-forwarder.config.json:/app/simple-telegram-forwarder.config.json:ro simple-telegram-forwarder