Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mrDoctorWho/vk4xmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Smith <mrdoctorwho@helldev.net>2020-06-02 17:52:32 +0300
committerJohn Smith <mrdoctorwho@helldev.net>2020-06-02 17:52:32 +0300
commitd07c9705bd77af2f0f2a09579babf1ec09648550 (patch)
treee71e197b9ba6c4cc01027a61089188f599493ad1
parent5bca416acd57e94af1ec1cb87d8ab40f4f68e0f2 (diff)
Skip messages which id is smaller than the last
-rw-r--r--gateway.py15
-rw-r--r--library/longpoll.py2
2 files changed, 9 insertions, 8 deletions
diff --git a/gateway.py b/gateway.py
index a5ba21d..f7e0484 100644
--- a/gateway.py
+++ b/gateway.py
@@ -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