diff options
author | John Smith <mrdoctorwho@helldev.net> | 2020-06-02 17:52:32 +0300 |
---|---|---|
committer | John Smith <mrdoctorwho@helldev.net> | 2020-06-02 17:52:32 +0300 |
commit | d07c9705bd77af2f0f2a09579babf1ec09648550 (patch) | |
tree | e71e197b9ba6c4cc01027a61089188f599493ad1 | |
parent | 5bca416acd57e94af1ec1cb87d8ab40f4f68e0f2 (diff) |
Skip messages which id is smaller than the last
-rw-r--r-- | gateway.py | 15 | ||||
-rw-r--r-- | library/longpoll.py | 2 |
2 files changed, 9 insertions, 8 deletions
@@ -514,7 +514,7 @@ class VK(object): cursor += step return messages - def getMessages(self, count=20, mid=0, uid=0, filter_="all"): + def getMessages(self, count=20, mid=0, uid=0, filter_="unread"): """ Gets the last messages list Args: @@ -802,7 +802,7 @@ class User(object): if dist: self.markRosterSet() - def sendMessages(self, init=False, messages=None, mid=0, uid=0, filter_="all"): + def sendMessages(self, init=False, messages=None, mid=0, uid=0, filter_="unread"): """ Sends messages from vk to xmpp and call message01 handlers Args: @@ -816,13 +816,15 @@ class User(object): with self.sync: date = 0 if not messages: - messages = self.vk.getMessages(MAX_MESSAGES_PER_REQUEST, mid or self.lastMsgID, uid, filter_) + messages = self.vk.getMessages(MAX_MESSAGES_PER_REQUEST, mid or self.lastMsgID+1, uid, filter_) if not messages: return None messages = sorted(messages, sortMsg) for message in messages: # check if message wasn't sent by our user if not message["out"]: + if self.lastMsgID >= message["id"]: + continue Stats["msgin"] += 1 frm = message["user_id"] mid = message["id"] @@ -852,10 +854,9 @@ class User(object): sendMessage(self.source, fromjid, escape("", body), date, mid=mid) if messages: newLastMsgID = messages[-1]["id"] - if self.lastMsgID < newLastMsgID: - self.lastMsgID = newLastMsgID - runDatabaseQuery("update users set lastMsgID=? where jid=?", - (newLastMsgID, self.source), True) + self.lastMsgID = newLastMsgID + runDatabaseQuery("update users set lastMsgID=? where jid=?", + (newLastMsgID, self.source), True) def updateTypingUsers(self, cTime): """ diff --git a/library/longpoll.py b/library/longpoll.py index c8db9f0..cd47df5 100644 --- a/library/longpoll.py +++ b/library/longpoll.py @@ -117,7 +117,7 @@ def processPollResult(user, data): if not out: if not attachments and not chat: message = [{"out": 0, "user_id": uid, "id": mid, "date": date, "body": body}] - utils.runThread(user.sendMessages, (False, message, mid - 1, uid), "sendMessages-%s" % user.source) + utils.runThread(user.sendMessages, (False, message, mid, uid), "sendMessages-%s" % user.source) elif typ == TYPE_MSG_READ_OUT: uid, mid = evt |