the-guard-bot
the-guard-bot copied to clipboard
[Suggestion] Switch to webhooks
About this suggestion
While long polling is used in the Guard, switching to webhooks can make the bot faster and can even catch up things missed during downtimes. That means, we need to pick a module that we can use for handling requests from Telegram. Express.js maybe a good choice, but others are available.
It should be configurable whenever they want to go back to polling by setting NODE_ENV
variable to development
. If they want to use webhooks by default, they need to configure config.serverApi.hostUrl
and config.serverApi.tgWebhookEndpoint
(defaults to /api/telegram/webhookEndpoint
).
Why going to webhooks?
- Fewer CPU cycles = faster response time
- Bot can catch up things missed during downtimes. 48 hours is good for small networks, but how about large networks having downtimes longer than the time window?
- More secure because Telegram knows where it sends webhook requests (unless somebody knew the API token or had SSH access). Having SSL stuff on your bot server domain is required to keep hackers from intercepting Telegram secrets.
- We're now adding API stuff to our bot. So people can fetch global bans and integrate it with their bot, but we should add some layers of authentication and protection against spammers.
Known Issues
- Bot leaves even the bot master/s added it to the group. See in Telegram and backread.
-
The logs firing up some errors.
chat
is undefined for some reasons inutils/tg.js
. See also in Telegram for details and its workaround.
FAQs
Should I blame Telegraf for these issues listed above?
Maybe, but the best way is to create an issue in their Issue Tracker so they can fix it.
That means, we need to pick a module that we can use for handling requests from Telegram. Express.js maybe a good choice
Unnecessary. .launch
can start a webhook if configured to do so.
I don't mind adding webhook?: LaunchWebhookOptions
to config.
- More secure
How?
chat
is undefined for some reasons inutils/tg.js
webhookReply
needs to be false
.
PR welcome.
The bot picks up the last 48 Hours with long polling Speed shouldn't be affected much since the bot wouldn't be in many groups. There's no real point of switching, it would only make the setup of the bot more tedious.
Also not sure how it's supposed to be more secure, long polling should use https
Updated the issue description to detail some more stuff.
Actually I just checked and Telegram doesn't store updates longer than 24 Hours regardless of using long polling or Webhooks:
"Incoming updates are stored on the server until the bot receives them either way, but they will not be kept longer than 24 hours."