settelegramwebhook now sends a correct "allowed_updates" field.

This commit is contained in:
Pēteris Caune 2018-01-18 00:58:19 +02:00
parent c6e35c9b39
commit fc176cd832
4 changed files with 10 additions and 23 deletions

View File

@ -14,9 +14,13 @@ class Command(BaseCommand):
if settings.TELEGRAM_TOKEN is None: if settings.TELEGRAM_TOKEN is None:
return "Abort: settings.TELEGRAM_TOKEN is not set" return "Abort: settings.TELEGRAM_TOKEN is not set"
form = {"url": settings.SITE_ROOT + reverse("hc-telegram-webhook")} form = {
"url": settings.SITE_ROOT + reverse("hc-telegram-webhook"),
"allowed_updates": ["message"]
}
url = SETWEBHOOK_TMPL % settings.TELEGRAM_TOKEN url = SETWEBHOOK_TMPL % settings.TELEGRAM_TOKEN
r = requests.post(url, data=form) r = requests.post(url, json=form)
if r.status_code != 200: if r.status_code != 200:
return "Fail: status=%d, %s" % (r.status_code, r.content) return "Fail: status=%d, %s" % (r.status_code, r.content)

View File

@ -16,7 +16,7 @@ telegram_callback = {
}, },
"text": {"type": "string"} "text": {"type": "string"}
}, },
"required": ["chat"] "required": ["chat", "text"]
} }
}, },
"required": ["message"] "required": ["message"]

View File

@ -56,12 +56,9 @@ class AddTelegramTestCase(BaseTestCase):
def test_bot_handles_bad_message(self, mock_get): def test_bot_handles_bad_message(self, mock_get):
samples = ["", "{}"] samples = ["", "{}"]
# text is not string # text is missing
samples.append(json.dumps({ samples.append(json.dumps({
"message": { "message": {"chat": {"id": 123, "type": "group"}}
"chat": {"id": 123, "type": "invalid"},
"text": 123
}
})) }))
# bad message type # bad message type
@ -77,16 +74,3 @@ class AddTelegramTestCase(BaseTestCase):
content_type="application/json") content_type="application/json")
self.assertEqual(r.status_code, 400) self.assertEqual(r.status_code, 400)
@patch("hc.api.transports.requests.request")
def test_it_handles_missing_text(self, mock_get):
data = {
"message": {
"chat": {"id": 123, "title": "My Group", "type": "group"}
}
}
r = self.client.post("/integrations/telegram/bot/", json.dumps(data),
content_type="application/json")
self.assertEqual(r.status_code, 200)
self.assertFalse(mock_get.called)

View File

@ -823,8 +823,7 @@ def telegram_bot(request):
except jsonschema.ValidationError: except jsonschema.ValidationError:
return HttpResponseBadRequest() return HttpResponseBadRequest()
text = doc["message"].get("text", "") if "/start" not in doc["message"]["text"]:
if "/start" not in text:
return HttpResponse() return HttpResponse()
chat = doc["message"]["chat"] chat = doc["message"]["chat"]