Skip to content

Commit 10fab8e

Browse files
committed
Update Checklist and get_send_as_chats for new Layer
1 parent 6198d41 commit 10fab8e

File tree

6 files changed

+35
-11
lines changed

6 files changed

+35
-11
lines changed

pyrogram/methods/chats/get_send_as_chats.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ class GetSendAsChats:
2626
async def get_send_as_chats(
2727
self: "pyrogram.Client",
2828
chat_id: Union[int, str],
29-
for_paid_reactions: Optional[bool] = None
29+
for_paid_reactions: Optional[bool] = None,
30+
for_live_stories: Optional[bool] = None,
3031
) -> list["types.Chat"]:
3132
"""Get the list of "send_as" chats available.
3233
@@ -39,6 +40,9 @@ async def get_send_as_chats(
3940
for_paid_reactions (``bool``, *optional*):
4041
Pass True to get the list of available send_as chats for paid reactions.
4142
43+
for_live_stories (``bool``, *optional*):
44+
Pass True to get the list of available send_as chats for viewing live stories.
45+
4246
Returns:
4347
List of :obj:`~pyrogram.types.Chat`: The list of chats.
4448
@@ -52,7 +56,8 @@ async def get_send_as_chats(
5256
r = await self.invoke(
5357
raw.functions.channels.GetSendAs(
5458
peer=await self.resolve_peer(chat_id),
55-
for_paid_reactions=for_paid_reactions
59+
for_paid_reactions=for_paid_reactions,
60+
for_live_stories=for_live_stories
5661
)
5762
)
5863

pyrogram/types/input_message_content/external_reply_info.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ async def _parse(
327327
media_type = enums.MessageMediaType.PAID_MEDIA
328328
elif isinstance(media, raw.types.MessageMediaToDo):
329329
media_type = enums.MessageMediaType.CHECKLIST
330-
checklist = types.Checklist._parse(client, media, users)
330+
checklist = types.Checklist._parse(client, media, users, chats)
331331
else:
332332
media_type = enums.MessageMediaType.UNKNOWN
333333

pyrogram/types/messages_and_media/checklist.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def _parse(
6969
client: "pyrogram.Client",
7070
checklist: "raw.types.MessageMediaToDo",
7171
users: Dict[int, "raw.base.User"],
72+
chats: Dict[int, "raw.base.User"],
7273
) -> "Checklist":
7374
completions = {i.id: i for i in getattr(checklist, "completions", [])}
7475

@@ -80,7 +81,8 @@ def _parse(
8081
client,
8182
task,
8283
completions.get(task.id),
83-
users
84+
users,
85+
chats
8486
)
8587
)
8688

pyrogram/types/messages_and_media/checklist_task.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class ChecklistTask(Object):
4040
Special entities that appear in the task text.
4141
May contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, Url, EmailAddress, Mention, Hashtag, Cashtag and PhoneNumber entities.
4242
43-
completed_by_user (:obj:`~pyrogram.types.User`, *optional*):
43+
completed_by_user (:obj:`~pyrogram.types.Chat`, *optional*):
4444
The user that completed the task.
4545
None if the task isn't completed.
4646
@@ -56,7 +56,7 @@ def __init__(
5656
id: int,
5757
text: str,
5858
text_entities: Optional[list["types.MessageEntity"]] = None,
59-
completed_by_user: Optional["types.User"] = None,
59+
completed_by_user: Optional["types.Chat"] = None,
6060
completion_date: Optional[datetime] = None,
6161
):
6262
super().__init__()
@@ -73,6 +73,7 @@ def _parse(
7373
item: "raw.types.TodoItem",
7474
completion: "raw.types.TodoCompletion",
7575
users: Dict[int, "raw.base.User"],
76+
chats: Dict[int, "raw.base.Chat"],
7677
) -> "ChecklistTask":
7778
text_entities = [
7879
types.MessageEntity._parse(client, entity, users)
@@ -81,10 +82,19 @@ def _parse(
8182
text_entities = types.List(filter(lambda x: x is not None, text_entities))
8283
text = Str(item.title.text).init(text_entities) or None
8384

85+
completed_by_peer = getattr(completion, "completed_by", None)
86+
completed_by_chat = None
87+
if completed_by_peer:
88+
completed_by_peer_id = utils.get_raw_peer_id(completed_by_peer)
89+
if isinstance(completed_by_peer, raw.types.PeerUser):
90+
completed_by_chat = types.Chat._parse_chat(client, users.get(completed_by_peer_id))
91+
else:
92+
completed_by_chat = types.Chat._parse_chat(client, chats.get(completed_by_peer_id))
93+
8494
return ChecklistTask(
8595
id=item.id,
8696
text=text,
8797
text_entities=text_entities,
88-
completed_by_user=types.User._parse(client, users.get(getattr(completion, "completed_by", None))),
98+
completed_by_user=completed_by_chat,
8999
completion_date=utils.timestamp_to_datetime(getattr(completion, "date", None))
90100
)

pyrogram/types/messages_and_media/checklist_tasks_added.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
# You should have received a copy of the GNU Lesser General Public License
1717
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
1818

19+
from typing import Dict
20+
1921
import pyrogram
2022
from pyrogram import raw, types
2123

@@ -48,10 +50,15 @@ def __init__(
4850
self.tasks = tasks
4951

5052
@staticmethod
51-
def _parse(client: "pyrogram.Client", message: "raw.types.MessageService") -> "ChecklistTasksAdded":
53+
def _parse(
54+
client: "pyrogram.Client",
55+
message: "raw.types.MessageService",
56+
users: Dict[int, "raw.base.User"],
57+
chats: Dict[int, "raw.base.Chat"],
58+
) -> "ChecklistTasksAdded":
5259
action: "raw.types.MessageActionTodoAppendTasks" = message.action
5360

5461
return ChecklistTasksAdded(
5562
checklist_message_id=getattr(message.reply_to, "reply_to_msg_id", None),
56-
tasks=types.List([types.ChecklistTask._parse(client, task, None, {}) for task in action.list])
63+
tasks=types.List([types.ChecklistTask._parse(client, task, None, users, chats) for task in action.list])
5764
)

pyrogram/types/messages_and_media/message.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,7 +1097,7 @@ async def _parse(
10971097

10981098
elif isinstance(action, raw.types.MessageActionTodoAppendTasks):
10991099
service_type = enums.MessageServiceType.CHECKLIST_TASKS_ADDED
1100-
checklist_tasks_added = types.ChecklistTasksAdded._parse(client, message)
1100+
checklist_tasks_added = types.ChecklistTasksAdded._parse(client, message, users, chats)
11011101

11021102
parsed_message = Message(
11031103
id=message.id,
@@ -1363,7 +1363,7 @@ async def _parse(
13631363
media_type = enums.MessageMediaType.PAID_MEDIA
13641364
elif isinstance(media, raw.types.MessageMediaToDo):
13651365
media_type = enums.MessageMediaType.CHECKLIST
1366-
checklist = types.Checklist._parse(client, media, users)
1366+
checklist = types.Checklist._parse(client, media, users, chats)
13671367
else:
13681368
media = None
13691369
media_type = enums.MessageMediaType.UNKNOWN

0 commit comments

Comments
 (0)