Dockerized version of telegram middleman bot
332

I'm the @MiddleMan bot! I sit in the middle between whatever you want to send yourself as a message and your Telegram.
I translate simple JSON HTTP requests into Telegram push messages that you will get on your Smartphone, PC or whatever Telegram client you have.
Thanks to contributions by peet1993.
This is especially useful for developers or sysadmins. Imagine you want some kind of reporting from your application or server, like a daily report including some statistics. You don't want to actively look it up on a website but you want to receive it in a passive fashion. Just like getting an e-mail. But come on, let's be honest. E-Mails are so 2010. And they require your little server-side script to include some SMTP library and connect to a mail server. That's too heavyweight just to get some short information. Personally, I have a Python script running on my server which gathers some statistics from log files and databases and regularly sends me a Telegram message.
If you develop those thoughts further, this could potentially replace any kind of e-mail notifications - be it the message that someone has answered to your forum post, your favorite game is now on sale at Steam, and so on. It's lightweight and easy, unlike e-mails that have way too much overhead.
You can either set up your own instance or use mine, which is running at https://apps.muetsch.io/middleman. The hosted instance only allows for a maxmimum of 240 requests per recipient per day. If you want to set this up on your own, do the following. You can either run the bot in long-polling- or webhook mode. For production use the latter option is recommended for various reasons. However, you'll need a server with a static IP and s (self-signed) SSL certificate.
go get github.com/n1try/telegram-middleman-botcd <YOUR_GO_WORKSPACE_PATH>/src/github.com/n1try/telegram-middleman-botgo get ./...go build ../telegram-middleman-bot --token <TOKEN_YOU_GOT_FROM_BOTFATHER> --port 8080 (of course you can use a different port)openssl req -newkey rsa:2048 -sha256 -nodes -keyout middleman.key -x509 -days 365 -out middleman.pem (the CN must match your server's IP address)curl -F "url=https://<YOUR_DOMAIN_OR_IP>/api/updates" -F "certificate=@<YOUR_CERTS_PATH>.pem" https://api.telegram.org/bot<TOKEN_YOU_GOT_FROM_BOTFATHER>/setWebhook./telegram-middleman-bot --token <TOKEN_YOU_GOT_FROM_BOTFATHER> --mode webhook --certPath middleman.pem --keyPath middleman.key --port 8443 --useHttps (of course you can use a different port)Alternatively, you can also use a reverse proxy like nginx or Caddy to handle encryption. In that case you would set the mode to webhook, but useHttps to false and your bot wouldn't need any certificate.
--address (string) – Network address (IPv4) to bind to. Default to 127.0.0.1.--address6 (string) – Network address (IPv6) to bind to. Default to ::1.--disableIPv6 (bool) – Whether or not to disable listening on both IPv4 and IPv6 interfaces. Default to false.--proxy (string) – Proxy connection string to be used for long-polling mode. Defaults to none.--rateLimit (int) – Maximum number of messages to be delivered to each recipient per hour. Defaults to 10./start to the @MiddleManBot therefore.http://localhost:8080/api/messages (replace localhost by the hostname of your server running the bot or mine as shown above) with a body that looks like this.{
"recipient_token": "3edf633a-eab0-45ea-9721-16c07bb8f245",
"text": "*Hello World!* (yes, this is Markdown)",
"type": "TEXT",
"origin": "My lonely server script"
}
NOTE: If the field type is omitted then the TEXT type will be used as default, though this is not recommended as this may change in future versions.
{
"recipient_token": "3edf633a-eab0-45ea-9721-16c07bb8f245",
"file": "SGVsbG8gV29ybGQhCg==",
"filename": "file.txt",
"type": "FILE",
"origin": "My lonely server script"
}
MIT @ Ferdinand Mütsch
Content type
Image
Digest
Size
132.7 MB
Last updated
almost 7 years ago
docker pull stockmind/telegram-middleman-bot