IrrelevantTgUpdate: Can`t find session ids in update of unknown type.
На production сервере в одном из чат-ботов ошибкой заказчивается обработка вебхука с Update от Telegram. Сообщение об ошибке:
2024-05-02T12:47:20+03:00 Webhook call finished with error
2024-05-02T12:47:20+03:00 Traceback (most recent call last):
2024-05-02T12:47:20+03:00 File "/opt/app/src/.contrib-candidates/django_tg_bot_framework/views.py", line 54, in process_webhook_call
2024-05-02T12:47:20+03:00 process_update(update)
2024-05-02T12:47:20+03:00 File "/opt/app/src/tg_bot/urls.py", line 38, in process_tg_update
2024-05-02T12:47:20+03:00 with state_machine.restore_or_create_session_from_tg_update(update) as session:
2024-05-02T12:47:20+03:00 File "/usr/local/lib/python3.11/contextlib.py", line 137, in __enter__
2024-05-02T12:47:20+03:00 return next(self.gen)
2024-05-02T12:47:20+03:00 ^^^^^^^^^^^^^^
2024-05-02T12:47:20+03:00 File "/opt/app/src/.contrib-candidates/django_tg_bot_framework/private_chats/state_machine.py", line 149, in restore_or_create_session_from_tg_update
2024-05-02T12:47:20+03:00 tg_chat_id, tg_user_id = self._find_session_ids_in_tg_update(update)
2024-05-02T12:47:20+03:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-05-02T12:47:20+03:00 File "/opt/app/src/.contrib-candidates/django_tg_bot_framework/private_chats/state_machine.py", line 283, in _find_session_ids_in_tg_update
2024-05-02T12:47:20+03:00 raise self.IrrelevantTgUpdate('Can`t find session ids in update of unknown type.')
2024-05-02T12:47:20+03:00 django_tg_bot_framework.private_chats.state_machine.PrivateChatStateMachine.IrrelevantTgUpdate: Can`t find session ids in update of unknown type
Проблема в том, что от Telegram прилетел Update-объект, который чат-бот не знает как обработать, и при этом в функции process_tg_update забыли добавить обработку исключения IrrelevantTgUpdate.
Хорошо бы добавить обработку исключения IrrelevantTgUpdate внутрь функции process_webhook_call, чтобы это стало частью фреймворка. Это обезопасит прикладных программистов от такой ошибки по невнимательности.
Новую фичу хорошо бы сразу покрыть автотестом.