2022-10-17 13:52:15 +00:00
|
|
|
from __future__ import annotations
|
|
|
|
|
2023-10-18 13:15:01 +00:00
|
|
|
from typing import Any
|
|
|
|
|
2017-12-27 16:28:34 +00:00
|
|
|
from django.conf import settings
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
|
2022-08-17 09:02:06 +00:00
|
|
|
from hc.lib import curl
|
2024-12-03 15:24:27 +00:00
|
|
|
from hc.lib.urls import absolute_reverse
|
2017-12-27 16:28:34 +00:00
|
|
|
|
|
|
|
SETWEBHOOK_TMPL = "https://api.telegram.org/bot%s/setWebhook"
|
|
|
|
|
|
|
|
|
|
|
|
class Command(BaseCommand):
|
|
|
|
help = "Set up telegram bot's webhook address"
|
|
|
|
|
2023-10-18 13:15:01 +00:00
|
|
|
def handle(self, **options: Any) -> str:
|
2017-12-27 16:28:34 +00:00
|
|
|
if settings.TELEGRAM_TOKEN is None:
|
|
|
|
return "Abort: settings.TELEGRAM_TOKEN is not set"
|
|
|
|
|
2018-01-17 22:58:19 +00:00
|
|
|
form = {
|
2024-12-03 15:24:27 +00:00
|
|
|
"url": absolute_reverse("hc-telegram-webhook"),
|
2021-12-28 16:50:06 +00:00
|
|
|
"allowed_updates": ["message", "channel_post"],
|
2018-01-17 22:58:19 +00:00
|
|
|
}
|
|
|
|
|
2017-12-27 16:28:34 +00:00
|
|
|
url = SETWEBHOOK_TMPL % settings.TELEGRAM_TOKEN
|
2022-08-17 09:02:06 +00:00
|
|
|
r = curl.post(url, json=form)
|
2017-12-27 16:28:34 +00:00
|
|
|
|
|
|
|
if r.status_code != 200:
|
2023-10-20 16:11:08 +00:00
|
|
|
return "Fail: status=%d, %s" % (r.status_code, r.content.decode())
|
2017-12-27 16:28:34 +00:00
|
|
|
|
|
|
|
return "Done, Telegram's webhook set to: %s" % form["url"]
|