Skip to content

Commit 22679b7

Browse files
authored
Merge pull request #3 from erjanmx/error-handler
Error handler
2 parents ebe10bd + fce62f8 commit 22679b7

3 files changed

Lines changed: 23 additions & 4 deletions

File tree

nambaone/bot.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,11 @@
55

66

77
class Bot:
8-
_response = {
9-
'code': 200,
10-
'success': True,
11-
}
128

139
def __init__(self,
1410
token,
1511
base_url=None,
12+
error_handler=None,
1613
user_follow_handler=None,
1714
user_unfollow_handler=None,
1815
message_new_handler=None,
@@ -25,12 +22,17 @@ def __init__(self,
2522

2623
self.handler = EventHandler(
2724
self,
25+
error_handler,
2826
user_follow_handler,
2927
user_unfollow_handler,
3028
message_new_handler,
3129
message_update_handler,
3230
chat_new_handler
3331
)
32+
self._response = {
33+
'code': 200,
34+
'success': True,
35+
}
3436

3537
@property
3638
def response(self):
@@ -50,6 +52,7 @@ def run(self, request):
5052
update = getattr(self.handler, 'event_{}'.format(event))(request['data'])
5153
self.__call_handler(event, update)
5254
except Exception as e:
55+
self.__call_handler('error', {'event': event, 'error': repr(e)})
5356
self._response['code'] = 520
5457

5558
def __call_handler(self, event, update):

nambaone/event_handler.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
class EventHandler:
88
def __init__(self,
99
bot,
10+
error_handler,
1011
user_follow_handler,
1112
user_unfollow_handler,
1213
message_new_handler,
@@ -15,6 +16,7 @@ def __init__(self,
1516

1617
self.bot = bot
1718

19+
self.error = error_handler
1820
self.user_follow = user_follow_handler
1921
self.user_unfollow = user_unfollow_handler
2022
self.message_new = message_new_handler

tests/test_event_handler.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,20 @@ def test_run_message_update(self):
103103

104104
self.assertEqual(self.bot.response, self.success_response)
105105

106+
def test_error(self):
107+
self.bot.handler.add('message_new', self.handler_mock)
108+
error_handler_mock = MagicMock()
109+
110+
self.bot.handler.add('error', error_handler_mock)
111+
112+
self.bot.run({
113+
'event': 'message_new',
114+
})
115+
116+
error_handler_mock.assert_called_once_with(self.bot, {'event': 'message_new', 'error': "KeyError('data',)"})
117+
self.assertEqual(self.bot.response, {'code': 520, 'success': False})
118+
106119

107120
if __name__ == '__main__':
108121
unittest.main()
122+

0 commit comments

Comments
 (0)