From 12f0a16feeb703de13f2eca7e1bd61ea58e75142 Mon Sep 17 00:00:00 2001 From: Igor Date: Mon, 20 Aug 2018 12:38:58 +0300 Subject: [PATCH 1/4] Add chat event 4, fix NOTIFICATION_SETTINGS_UPDATE --- vk_api/longpoll.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/vk_api/longpoll.py b/vk_api/longpoll.py index 38ec97b1..f738548a 100644 --- a/vk_api/longpoll.py +++ b/vk_api/longpoll.py @@ -233,6 +233,9 @@ class VkChatEventType(IntEnum): #: Назначен новый администратор ADMIN_ADDED = 3 + #: Изменены настройки беседы + SETTINGS_CHANGED = 4 + #: Закреплено сообщение MESSAGE_PINNED = 5 @@ -283,9 +286,7 @@ class VkChatEventType(IntEnum): VkEventType.USER_CALL: ['user_id', 'call_id'], VkEventType.MESSAGES_COUNTER_UPDATE: ['count'], - VkEventType.NOTIFICATION_SETTINGS_UPDATE: [ - 'peer_id', 'sound', 'disabled_until' - ] + VkEventType.NOTIFICATION_SETTINGS_UPDATE: ['values'] } @@ -352,6 +353,10 @@ def __init__(self, raw): self._parse_chat_info() self.type = VkChatEventType(self.type_id) + elif self.type is VkEventType.NOTIFICATION_SETTINGS_UPDATE: + self._dict_to_attr(self.values) + self._parse_peer_id() + elif self.type is VkEventType.PEER_FLAGS_REPLACE: self._parse_peer_flags() @@ -373,6 +378,10 @@ def _list_to_attr(self, raw, attrs): for i in range(min(len(raw), len(attrs))): self.__setattr__(attrs[i], raw[i]) + def _dict_to_attr(self, values): + for i in values.keys(): + self.__setattr__(i, values[i]) + def _parse_peer_id(self): if self.peer_id < 0: # Сообщение от/для группы From 254c31c6d2071f0a6d5f0e7562f54e3b4066b1ea Mon Sep 17 00:00:00 2001 From: Igor Date: Sun, 26 Aug 2018 12:38:03 +0300 Subject: [PATCH 2/4] Update lp version --- vk_api/longpoll.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vk_api/longpoll.py b/vk_api/longpoll.py index f738548a..b36b087e 100644 --- a/vk_api/longpoll.py +++ b/vk_api/longpoll.py @@ -518,7 +518,7 @@ def check(self): 'ts': self.ts, 'wait': self.wait, 'mode': self.mode, - 'version': 1 + 'version': 3 } response = self.session.get( From 0ad97e277be549fe5ff0eaf0c8f9991bc4487fbb Mon Sep 17 00:00:00 2001 From: Igor Date: Sun, 26 Aug 2018 16:23:59 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=9E=D1=82=D0=BA=D0=B0=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vk_api/longpoll.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vk_api/longpoll.py b/vk_api/longpoll.py index b36b087e..f738548a 100644 --- a/vk_api/longpoll.py +++ b/vk_api/longpoll.py @@ -518,7 +518,7 @@ def check(self): 'ts': self.ts, 'wait': self.wait, 'mode': self.mode, - 'version': 3 + 'version': 1 } response = self.session.get( From 0d2850b73284c8474af1e7748dc85f039cabd757 Mon Sep 17 00:00:00 2001 From: Igor Date: Mon, 27 Aug 2018 19:56:21 +0300 Subject: [PATCH 4/4] Fix unknown events --- vk_api/longpoll.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/vk_api/longpoll.py b/vk_api/longpoll.py index f738548a..69217eb8 100644 --- a/vk_api/longpoll.py +++ b/vk_api/longpoll.py @@ -351,7 +351,10 @@ def __init__(self, raw): if self.type is VkEventType.CHAT_UPDATE: self._parse_chat_info() - self.type = VkChatEventType(self.type_id) + try: + self.update_type = VkChatEventType(self.type_id) + except ValueError: + self.update_type = self.type_id elif self.type is VkEventType.NOTIFICATION_SETTINGS_UPDATE: self._dict_to_attr(self.values) @@ -379,8 +382,8 @@ def _list_to_attr(self, raw, attrs): self.__setattr__(attrs[i], raw[i]) def _dict_to_attr(self, values): - for i in values.keys(): - self.__setattr__(i, values[i]) + for k, v in six.iteritems(values): + self.__setattr__(k, v) def _parse_peer_id(self):