Skip to content

Commit d89d238

Browse files
committed
Fix BadMsgNotification error_code 32
1 parent 3bd3d99 commit d89d238

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

pyrogram/session/auth.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ def __init__(self, dc_id: int, test_mode: bool, proxy: type):
5151
self.test_mode = test_mode
5252

5353
self.connection = Connection(DataCenter(dc_id, test_mode), proxy)
54-
self.msg_id = MsgId()
5554

56-
def pack(self, data: Object) -> bytes:
55+
@staticmethod
56+
def pack(data: Object) -> bytes:
5757
return (
5858
bytes(8)
59-
+ Long(self.msg_id())
59+
+ Long(MsgId())
6060
+ Int(len(data.write()))
6161
+ data.write()
6262
)

pyrogram/session/internals/msg_factory.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,13 @@
2626

2727

2828
class MsgFactory:
29-
def __init__(self, msg_id: MsgId):
30-
self.msg_id = msg_id
29+
def __init__(self):
3130
self.seq_no = SeqNo()
3231

3332
def __call__(self, body: Object) -> Message:
3433
return Message(
3534
body,
36-
self.msg_id(),
35+
MsgId(),
3736
self.seq_no(type(body) not in not_content_related),
3837
len(body)
3938
)

pyrogram/session/internals/msg_id.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,15 @@
2121

2222

2323
class MsgId:
24-
def __init__(self, delta_time: float = 0.0):
25-
self.delta_time = delta_time
26-
self.last_time = 0
27-
self.offset = 0
28-
self.lock = Lock()
24+
last_time = 0
25+
offset = 0
26+
lock = Lock()
2927

30-
def __call__(self) -> int:
31-
with self.lock:
28+
def __new__(cls) -> int:
29+
with cls.lock:
3230
now = time()
33-
self.offset = self.offset + 4 if now == self.last_time else 0
34-
msg_id = int((now + self.delta_time) * 2 ** 32) + self.offset
35-
self.last_time = now
31+
cls.offset = cls.offset + 4 if now == cls.last_time else 0
32+
msg_id = int(now * 2 ** 32) + cls.offset
33+
cls.last_time = now
3634

3735
return msg_id

pyrogram/session/session.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,8 @@ def __init__(self,
8989
self.auth_key = auth_key
9090
self.auth_key_id = sha1(auth_key).digest()[-8:]
9191

92-
self.msg_id = MsgId()
93-
self.session_id = Long(self.msg_id())
94-
self.msg_factory = MsgFactory(self.msg_id)
92+
self.session_id = Long(MsgId())
93+
self.msg_factory = MsgFactory()
9594

9695
self.current_salt = None
9796

0 commit comments

Comments
 (0)