When we don't recognize a message from Telegram, respond with 200 OK so Telegram doesn't keep retrying.

This commit is contained in:
Pēteris Caune 2018-05-30 15:24:12 +03:00
parent 6bf6ab6479
commit 5f908a01e4
No known key found for this signature in database
GPG Key ID: E28D7679E9A9EDE2
2 changed files with 11 additions and 3 deletions

View File

@ -61,7 +61,7 @@ class AddTelegramTestCase(BaseTestCase):
"message": {"chat": {"id": 123, "type": "group"}}
}))
# bad message type
# bad chat type
samples.append(json.dumps({
"message": {
"chat": {"id": 123, "type": "invalid"},
@ -73,4 +73,10 @@ class AddTelegramTestCase(BaseTestCase):
r = self.client.post("/integrations/telegram/bot/", sample,
content_type="application/json")
if sample == "":
# Bad JSON payload
self.assertEqual(r.status_code, 400)
else:
# JSON decodes but message structure not recognized
self.assertEqual(r.status_code, 200)

View File

@ -838,7 +838,9 @@ def telegram_bot(request):
except ValueError:
return HttpResponseBadRequest()
except jsonschema.ValidationError:
return HttpResponseBadRequest()
# We don't recognize the message format, but don't want Telegram
# retrying this over and over again, so respond with 200 OK
return HttpResponse()
if "/start" not in doc["message"]["text"]:
return HttpResponse()