-
-
Notifications
You must be signed in to change notification settings - Fork 144
Description
Checklist
- I am sure the error is coming from Pyrofork's code and not elsewhere
- I have searched in the issue tracker for similar bug reports, including closed ones
- I ran
pip3 install -U git+https://github.com/Mayuri-Chan/pyroforkand reproduced the issue using the latest development version
Description
Pyrofork version: 2.3.68, 2.3.69
Python version: 3.11
Operating System: Linux
When calling client.send_gift() with the text parameter, the method raises a TypeError because entities is None instead of an empty list []
The gift should be sent successfully with the text message attached, but the method raises the following error:
TypeError: object of type 'NoneType' has no len()
Traceback:
File "pyrogram/methods/payments/send_gift.py", line 90, in send_gift
form = await self.invoke(
File "pyrogram/raw/types/text_with_entities.py", line 79, in write
b.write(Vector(self.entities))
File "pyrogram/raw/core/primitives/vector.py", line 74, in new
[Int(cls.ID, False), Int(len(value))]
TypeError: object of type 'NoneType' has no len()
In pyrogram/methods/payments/send_gift.py line 87:
message=raw.types.TextWithEntities(text=text, entities=entities) if text else None
When text is provided but entities is None (default), the TextWithEntities object is created with entities=None. Later, when Pyrogram tries to serialize this object, it calls len(self.entities) which fails because None has no length.
I tried change line 87 to:
message=raw.types.TextWithEntities(text=text, entities=entities or []) if text else None
Steps to reproduce
from pyrogram import Client
app = Client("my_account")
async with app:
# This will fail with TypeError
await app.send_gift(
chat_id=123456789,
gift_id=5170233102089322756,
text="Hello! This is a gift message"
)
Code example
if message_text and message_text.strip():
await client.send_gift(
chat_id=user['user_id'],
gift_id=5170233102089322756,
text=message_text.strip()
)
else:
await client.send_gift(
chat_id=user['user_id'],
gift_id=5170233102089322756
)