Refactor ForumTopic

This commit is contained in:
KurimuzonAkuma 2023-11-24 19:05:06 +03:00
parent 8a39fe49e1
commit 8064b24143
35 changed files with 126 additions and 348 deletions

View File

@ -66,8 +66,13 @@ class Dispatcher:
async def message_parser(update, users, chats): async def message_parser(update, users, chats):
return ( return (
await pyrogram.types.Message._parse(self.client, update.message, users, chats, None, await pyrogram.types.Message._parse(
isinstance(update, UpdateNewScheduledMessage)), self.client,
update.message,
users,
chats,
is_scheduled=isinstance(update, UpdateNewScheduledMessage)
),
MessageHandler MessageHandler
) )

View File

@ -60,7 +60,7 @@ class SendGame:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs. Unique identifier of a message thread to which the message belongs.
for supergroups only For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -60,7 +60,7 @@ class SendInlineBotResult:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs. Unique identifier of a message thread to which the message belongs.
for supergroups only For supergroups only.
reply_to_message_id (``bool``, *optional*): reply_to_message_id (``bool``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -74,7 +74,7 @@ class CopyMediaGroup:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -87,7 +87,7 @@ class CopyMessage:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -54,7 +54,8 @@ class ForwardMessages:
An iterable of message identifiers in the chat specified in *from_chat_id* or a single message id. An iterable of message identifiers in the chat specified in *from_chat_id* or a single message id.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
disable_notification (``bool``, *optional*): disable_notification (``bool``, *optional*):
Sends the message silently. Sends the message silently.

View File

@ -122,7 +122,7 @@ class SendAnimation:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -115,7 +115,7 @@ class SendAudio:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -84,7 +84,7 @@ class SendCachedMedia:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -78,7 +78,7 @@ class SendContact:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -69,7 +69,7 @@ class SendDice:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -107,7 +107,7 @@ class SendDocument:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -68,7 +68,7 @@ class SendLocation:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message If the message is a reply, ID of the original message

View File

@ -74,7 +74,7 @@ class SendMediaGroup:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -77,7 +77,7 @@ class SendMessage:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -98,7 +98,7 @@ class SendPhoto:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -121,7 +121,7 @@ class SendPoll:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -78,7 +78,7 @@ class SendSticker:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -85,7 +85,7 @@ class SendVenue:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message If the message is a reply, ID of the original message

View File

@ -128,7 +128,7 @@ class SendVideo:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.

View File

@ -92,7 +92,7 @@ class SendVideoNote:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message If the message is a reply, ID of the original message

View File

@ -93,7 +93,7 @@ class SendVoice:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message If the message is a reply, ID of the original message

View File

@ -58,7 +58,7 @@ class ForwardStory:
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
schedule_date (:py:obj:`~datetime.datetime`, *optional*): schedule_date (:py:obj:`~datetime.datetime`, *optional*):
Date when the message will be automatically sent. Date when the message will be automatically sent.

View File

@ -17,10 +17,8 @@
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>. # along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from .input_message_content import InputMessageContent from .input_message_content import InputMessageContent
from .input_reply_to_message import InputReplyToMessage
from .input_reply_to_story import InputReplyToStory
from .input_text_message_content import InputTextMessageContent from .input_text_message_content import InputTextMessageContent
__all__ = [ __all__ = [
"InputMessageContent", "InputReplyToMessage", "InputReplyToStory", "InputTextMessageContent" "InputMessageContent", "InputTextMessageContent"
] ]

View File

@ -1,52 +0,0 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
#
# This file is part of Pyrogram.
#
# Pyrogram is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Pyrogram is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from pyrogram import raw
from ..object import Object
class InputReplyToMessage(Object):
"""Contains information about a target replied message.
Parameters:
reply_to_message_id (``int``, *optional*):
ID of the original message you want to reply.
message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only.
"""
def __init__(
self, *,
reply_to_message_id: int = None,
message_thread_id: int = None
):
super().__init__()
self.reply_to_message_id = reply_to_message_id
self.message_thread_id = message_thread_id
def write(self):
if not any((self.reply_to_message_id, self.message_thread_id)):
return None
return raw.types.InputReplyToMessage(
reply_to_msg_id=self.reply_to_message_id or message_thread_id, # type: ignore[arg-type]
top_msg_id=self.message_thread_id if self.reply_to_message_id else None,
).write()

View File

@ -1,48 +0,0 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
#
# This file is part of Pyrogram.
#
# Pyrogram is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Pyrogram is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from pyrogram import raw
from ..object import Object
class InputReplyToStory(Object):
"""Contains information about a target replied story.
Parameters:
user_id (:obj:`~pyrogram.raw.types.InputUser`):
An InputUser.
story_id (``int``):
Unique identifier for the target story.
"""
def __init__(
self, *,
user_id: "raw.types.InputUser" = None,
story_id: int = None
):
super().__init__()
self.user_id = user_id
self.story_id = story_id
def write(self):
return raw.types.InputReplyToStory(
user_id=self.user_id,
story_id=self.story_id
).write()

View File

@ -16,65 +16,49 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>. # along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from pyrogram import raw, types from pyrogram import raw, utils
from typing import Union
from ..object import Object from ..object import Object
class ForumTopic(Object): class ForumTopic(Object):
# todo
# notify_settings: `~pyrogram.types.PeerNotifySettings`
# draft: `~pyrogram.types.DraftMessage`
"""A forum topic. """A forum topic.
Parameters: Parameters:
id (``Integer``): id (``int``):
Id of the topic Unique topic identifier inside this chat.
date (``Integer``): date (``int``):
Date topic created Date when the topic was created.
title (``String``): title (``str``):
Name of the topic The topic title.
icon_color (``Integer``): icon_color (``int``):
Color of the topic icon in RGB format Color of the topic icon in RGB format
top_message (``Integer``): icon_emoji_id (``int``, *optional*):
N/A
read_inbox_max_id (``Integer``):
N/A
read_outbox_max_id (``Integer``):
N/A
unread_count (``Integer``):
N/A
unread_mentions_count (``Integer``):
N/A
unread_reactions_count (``Integer``):
N/A
from_id (:obj:`~pyrogram.types.PeerChannel` | :obj:`~pyrogram.types.PeerUser`):
Topic creator.
my (``Boolean``, *optional*):
N/A
closed (``Boolean``, *optional*):
N/A
pinned (``Boolean``, *optional*):
N/A
short (``Boolean``, *optional*):
N/A
icon_emoji_id (``Integer``, *optional*):
Unique identifier of the custom emoji shown as the topic icon Unique identifier of the custom emoji shown as the topic icon
top_message (``int``):
The last message sent in the topic at this time.
unread_count (``int``):
Amount of unread messages in this topic.
unread_mentions_count (``int``):
Amount of unread messages containing a mention in this topic.
unread_reactions_count (``int``):
Amount of unread messages containing a reaction in this topic.
is_my (``bool``, *optional*):
True, if you are creator of topic.
is_closed (``bool``, *optional*):
True, if the topic is closed.
is_pinned (``bool``, *optional*):
True, if the topic is pinned.
""" """
def __init__( def __init__(
@ -84,20 +68,14 @@ class ForumTopic(Object):
date: int, date: int,
title: str, title: str,
icon_color: int, icon_color: int,
icon_emoji_id: int = None,
top_message: int, top_message: int,
read_inbox_max_id: int,
read_outbox_max_id: int,
unread_count: int, unread_count: int,
unread_mentions_count: int, unread_mentions_count: int,
unread_reactions_count: int, unread_reactions_count: int,
from_id: Union["types.PeerChannel", "types.PeerUser"], is_my: bool = None,
# notify_settings: "types.PeerNotifySettings", //todo is_closed: bool = None,
my: bool = None, is_pinned: bool = None,
closed: bool = None,
pinned: bool = None,
short: bool = None,
icon_emoji_id: int = None,
# draft: "types.DraftMessage" = None //todo
): ):
super().__init__() super().__init__()
@ -105,46 +83,28 @@ class ForumTopic(Object):
self.date = date self.date = date
self.title = title self.title = title
self.icon_color = icon_color self.icon_color = icon_color
self.icon_emoji_id = icon_emoji_id
self.top_message = top_message self.top_message = top_message
self.read_inbox_max_id = read_inbox_max_id
self.read_outbox_max_id = read_outbox_max_id
self.unread_count = unread_count self.unread_count = unread_count
self.unread_mentions_count = unread_mentions_count self.unread_mentions_count = unread_mentions_count
self.unread_reactions_count = unread_reactions_count self.unread_reactions_count = unread_reactions_count
self.from_id = from_id self.is_my = is_my
# self.notify_settings = notify_settings //todo self.is_closed = is_closed
self.my = my self.is_pinned = is_pinned
self.closed = closed
self.pinned = pinned
self.short = short
self.icon_emoji_id = icon_emoji_id
# self.draft = draft //todo
@staticmethod @staticmethod
def _parse(forum_topic: "raw.types.forum_topic") -> "ForumTopic": def _parse(forum_topic: "raw.types.ForumTopic") -> "ForumTopic":
from_id = forum_topic.from_id
if isinstance(from_id, raw.types.PeerChannel):
peer = types.PeerChannel._parse(from_id)
if isinstance(from_id, raw.types.PeerUser):
peer = types.PeerUser._parse(from_id)
return ForumTopic( return ForumTopic(
id=getattr(forum_topic, "id", None), id=forum_topic.id,
date=getattr(forum_topic, "date", None), date=utils.timestamp_to_datetime(forum_topic.date),
title=getattr(forum_topic, "title", None), title=forum_topic.title,
icon_color=getattr(forum_topic, "icon_color", None), icon_color=getattr(forum_topic, "icon_color", None),
icon_emoji_id=getattr(forum_topic, "icon_emoji_id", None),
top_message=getattr(forum_topic, "top_message", None), top_message=getattr(forum_topic, "top_message", None),
read_inbox_max_id=getattr(forum_topic, "read_inbox_max_id", None),
read_outbox_max_id=getattr(forum_topic, "read_outbox_max_id", None),
unread_count=getattr(forum_topic, "unread_count", None), unread_count=getattr(forum_topic, "unread_count", None),
unread_mentions_count=getattr(forum_topic, "unread_mentions_count", None), unread_mentions_count=getattr(forum_topic, "unread_mentions_count", None),
unread_reactions_count=getattr(forum_topic, "unread_reactions_count", None), unread_reactions_count=getattr(forum_topic, "unread_reactions_count", None),
from_id=peer, is_my=getattr(forum_topic, "my", None),
# notify_settings=None, //todo is_closed=getattr(forum_topic, "closed", None),
my=getattr(forum_topic, "my", None), is_pinned=getattr(forum_topic, "pinned", None),
closed=getattr(forum_topic, "closed", None),
pinned=getattr(forum_topic, "pinned", None),
short=getattr(forum_topic, "short", None),
icon_emoji_id=getattr(forum_topic, "icon_emoji_id", None),
# draft=None //todo
) )

View File

@ -78,7 +78,7 @@ class Message(Object, Update):
chat (:obj:`~pyrogram.types.Chat`, *optional*): chat (:obj:`~pyrogram.types.Chat`, *optional*):
Conversation the message belongs to. Conversation the message belongs to.
topics (:obj:`~pyrogram.types.ForumTopic`, *optional*): topic (:obj:`~pyrogram.types.ForumTopic`, *optional*):
Topic the message belongs to. Topic the message belongs to.
forward_from (:obj:`~pyrogram.types.User`, *optional*): forward_from (:obj:`~pyrogram.types.User`, *optional*):
@ -99,12 +99,9 @@ class Message(Object, Update):
forward_date (:py:obj:`~datetime.datetime`, *optional*): forward_date (:py:obj:`~datetime.datetime`, *optional*):
For forwarded messages, date the original message was sent. For forwarded messages, date the original message was sent.
is_topic_message (``bool``, *optional*):
True, if the message is sent to a forum topic
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs. Unique identifier of a message thread to which the message belongs.
for supergroups only For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
The id of the message which this message directly replied to. The id of the message which this message directly replied to.
@ -377,14 +374,13 @@ class Message(Object, Update):
sender_chat: "types.Chat" = None, sender_chat: "types.Chat" = None,
date: datetime = None, date: datetime = None,
chat: "types.Chat" = None, chat: "types.Chat" = None,
topics: "types.ForumTopic" = None, topic: "types.ForumTopic" = None,
forward_from: "types.User" = None, forward_from: "types.User" = None,
forward_sender_name: str = None, forward_sender_name: str = None,
forward_from_chat: "types.Chat" = None, forward_from_chat: "types.Chat" = None,
forward_from_message_id: int = None, forward_from_message_id: int = None,
forward_signature: str = None, forward_signature: str = None,
forward_date: datetime = None, forward_date: datetime = None,
is_topic_message: bool = None,
message_thread_id: int = None, message_thread_id: int = None,
reply_to_message_id: int = None, reply_to_message_id: int = None,
reply_to_story_id: int = None, reply_to_story_id: int = None,
@ -474,14 +470,13 @@ class Message(Object, Update):
self.sender_chat = sender_chat self.sender_chat = sender_chat
self.date = date self.date = date
self.chat = chat self.chat = chat
self.topics = topics self.topic = topic
self.forward_from = forward_from self.forward_from = forward_from
self.forward_sender_name = forward_sender_name self.forward_sender_name = forward_sender_name
self.forward_from_chat = forward_from_chat self.forward_from_chat = forward_from_chat
self.forward_from_message_id = forward_from_message_id self.forward_from_message_id = forward_from_message_id
self.forward_signature = forward_signature self.forward_signature = forward_signature
self.forward_date = forward_date self.forward_date = forward_date
self.is_topic_message = is_topic_message
self.message_thread_id = message_thread_id self.message_thread_id = message_thread_id
self.reply_to_message_id = reply_to_message_id self.reply_to_message_id = reply_to_message_id
self.reply_to_story_id = reply_to_story_id self.reply_to_story_id = reply_to_story_id
@ -606,7 +601,6 @@ class Message(Object, Update):
group_chat_created = None group_chat_created = None
channel_chat_created = None channel_chat_created = None
new_chat_photo = None new_chat_photo = None
is_topic_message = None
forum_topic_created = None forum_topic_created = None
forum_topic_closed = None forum_topic_closed = None
forum_topic_reopened = None forum_topic_reopened = None
@ -708,7 +702,6 @@ class Message(Object, Update):
message_thread_id=message_thread_id, message_thread_id=message_thread_id,
date=utils.timestamp_to_datetime(message.date), date=utils.timestamp_to_datetime(message.date),
chat=types.Chat._parse(client, message, users, chats, is_chat=True), chat=types.Chat._parse(client, message, users, chats, is_chat=True),
topics=None,
from_user=from_user, from_user=from_user,
sender_chat=sender_chat, sender_chat=sender_chat,
service=service_type, service=service_type,
@ -722,7 +715,6 @@ class Message(Object, Update):
migrate_from_chat_id=-migrate_from_chat_id if migrate_from_chat_id else None, migrate_from_chat_id=-migrate_from_chat_id if migrate_from_chat_id else None,
group_chat_created=group_chat_created, group_chat_created=group_chat_created,
channel_chat_created=channel_chat_created, channel_chat_created=channel_chat_created,
is_topic_message=is_topic_message,
forum_topic_created=forum_topic_created, forum_topic_created=forum_topic_created,
forum_topic_closed=forum_topic_closed, forum_topic_closed=forum_topic_closed,
forum_topic_reopened=forum_topic_reopened, forum_topic_reopened=forum_topic_reopened,
@ -775,7 +767,6 @@ class Message(Object, Update):
parsed_message.message_thread_id = message.reply_to.reply_to_top_id parsed_message.message_thread_id = message.reply_to.reply_to_top_id
else: else:
parsed_message.message_thread_id = message.reply_to.reply_to_msg_id parsed_message.message_thread_id = message.reply_to.reply_to_msg_id
parsed_message.is_topic_message = True
return parsed_message return parsed_message
@ -790,7 +781,6 @@ class Message(Object, Update):
forward_from_message_id = None forward_from_message_id = None
forward_signature = None forward_signature = None
forward_date = None forward_date = None
is_topic_message = None
forward_header = message.fwd_from # type: raw.types.MessageFwdHeader forward_header = message.fwd_from # type: raw.types.MessageFwdHeader
@ -936,7 +926,6 @@ class Message(Object, Update):
message_thread_id=message_thread_id, message_thread_id=message_thread_id,
date=utils.timestamp_to_datetime(message.date), date=utils.timestamp_to_datetime(message.date),
chat=types.Chat._parse(client, message, users, chats, is_chat=True), chat=types.Chat._parse(client, message, users, chats, is_chat=True),
topics=None,
from_user=from_user, from_user=from_user,
sender_chat=sender_chat, sender_chat=sender_chat,
text=( text=(
@ -968,7 +957,6 @@ class Message(Object, Update):
forward_from_message_id=forward_from_message_id, forward_from_message_id=forward_from_message_id,
forward_signature=forward_signature, forward_signature=forward_signature,
forward_date=forward_date, forward_date=forward_date,
is_topic_message=is_topic_message,
mentioned=message.mentioned, mentioned=message.mentioned,
scheduled=is_scheduled, scheduled=is_scheduled,
from_scheduled=message.from_scheduled, from_scheduled=message.from_scheduled,
@ -1014,14 +1002,13 @@ class Message(Object, Update):
else: else:
thread_id = message.reply_to.reply_to_msg_id thread_id = message.reply_to.reply_to_msg_id
parsed_message.message_thread_id = thread_id parsed_message.message_thread_id = thread_id
parsed_message.is_topic_message = True
if topics: if topics:
parsed_message.topics = types.ForumTopic._parse(topics[thread_id]) parsed_message.topic = types.ForumTopic._parse(topics[thread_id])
else: else:
try: try:
msg = await client.get_messages(parsed_message.chat.id,message.id) msg = await client.get_messages(parsed_message.chat.id,message.id)
if getattr(msg, "topics"): if msg.topic:
parsed_message.topics = msg.topics parsed_message.topic = msg.topic
except Exception: except Exception:
pass pass
else: else:
@ -1186,7 +1173,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -1327,7 +1315,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -1485,7 +1474,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -1619,7 +1609,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -1760,7 +1751,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -1892,7 +1884,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -2017,7 +2010,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -2096,7 +2090,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``bool``, *optional*): reply_to_message_id (``bool``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -2189,7 +2184,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message If the message is a reply, ID of the original message
@ -2274,7 +2270,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -2390,7 +2387,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -2569,7 +2567,8 @@ class Message(Object, Update):
Protects the contents of the sent message from forwarding and saving. Protects the contents of the sent message from forwarding and saving.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -2683,7 +2682,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -2826,7 +2826,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message If the message is a reply, ID of the original message
@ -2974,7 +2975,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message. If the message is a reply, ID of the original message.
@ -3118,7 +3120,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message If the message is a reply, ID of the original message
@ -3261,7 +3264,8 @@ class Message(Object, Update):
Users will receive a notification with no sound. Users will receive a notification with no sound.
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
reply_to_message_id (``int``, *optional*): reply_to_message_id (``int``, *optional*):
If the message is a reply, ID of the original message If the message is a reply, ID of the original message
@ -3555,7 +3559,8 @@ class Message(Object, Update):
For a contact that exists in your Telegram address book you can use his phone number (str). For a contact that exists in your Telegram address book you can use his phone number (str).
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
disable_notification (``bool``, *optional*): disable_notification (``bool``, *optional*):
Sends the message silently. Sends the message silently.
@ -3642,7 +3647,7 @@ class Message(Object, Update):
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier for the target message thread (topic) of the forum. Unique identifier for the target message thread (topic) of the forum.
for forum supergroups only. For supergroups only.
reply_to_chat_id (``int``, *optional*): reply_to_chat_id (``int``, *optional*):
If the message is a reply, ID of the original chat. If the message is a reply, ID of the original chat.

View File

@ -1669,7 +1669,8 @@ class Story(Object, Update):
For a contact that exists in your Telegram address book you can use his phone number (str). For a contact that exists in your Telegram address book you can use his phone number (str).
message_thread_id (``int``, *optional*): message_thread_id (``int``, *optional*):
Unique identifier of a message thread to which the message belongs; for supergroups only Unique identifier of a message thread to which the message belongs.
For supergroups only.
disable_notification (``bool``, *optional*): disable_notification (``bool``, *optional*):
Sends the message silently. Sends the message silently.

View File

@ -35,8 +35,6 @@ from .emoji_status import EmojiStatus
from .folder import Folder from .folder import Folder
from .invite_link_importer import InviteLinkImporter from .invite_link_importer import InviteLinkImporter
from .restriction import Restriction from .restriction import Restriction
from .peer_channel import PeerChannel
from .peer_user import PeerUser
from .user import User from .user import User
from .username import Username from .username import Username
from .video_chat_ended import VideoChatEnded from .video_chat_ended import VideoChatEnded
@ -51,8 +49,6 @@ __all__ = [
"ChatPhoto", "ChatPhoto",
"ChatPreview", "ChatPreview",
"Dialog", "Dialog",
"PeerChannel",
"PeerUser",
"User", "User",
"Username", "Username",
"Restriction", "Restriction",

View File

@ -37,7 +37,7 @@ class Chat(Object):
Type of chat. Type of chat.
is_forum (``bool``, *optional*): is_forum (``bool``, *optional*):
True, if the supergroup chat is a forum True, if the supergroup chat is a forum.
is_verified (``bool``, *optional*): is_verified (``bool``, *optional*):
True, if this chat has been verified by Telegram. Supergroups, channels and bots only. True, if this chat has been verified by Telegram. Supergroups, channels and bots only.

View File

@ -56,7 +56,7 @@ class ChatPermissions(Object):
can_manage_topics (``bool``, *optional*): can_manage_topics (``bool``, *optional*):
True, if the user is allowed to create, rename, close, and reopen forum topics. True, if the user is allowed to create, rename, close, and reopen forum topics.
supergroups only. Supergroups only.
""" """
def __init__( def __init__(

View File

@ -63,7 +63,7 @@ class ChatPrivileges(Object):
True, if the user is allowed to pin messages. True, if the user is allowed to pin messages.
can_manage_topics (``bool``, *optional*): can_manage_topics (``bool``, *optional*):
supergroups only. Supergroups only.
True, if the user is allowed to create, rename, close, and reopen forum topics. True, if the user is allowed to create, rename, close, and reopen forum topics.
is_anonymous (``bool``, *optional*): is_anonymous (``bool``, *optional*):

View File

@ -1,44 +0,0 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
#
# This file is part of Pyrogram.
#
# Pyrogram is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Pyrogram is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from pyrogram import raw
from ..object import Object
class PeerChannel(Object):
"""A PeerChannel.
Parameters:
channel_id (``int``):
Id of the channel.
"""
def __init__(
self, *,
channel_id: int
):
super().__init__()
self.channel_id = channel_id
@staticmethod
def _parse(action: "raw.types.PeerChannel") -> "PeerChannel":
return PeerChannel(
channel_id=getattr(action, "channel_id", None)
)

View File

@ -1,44 +0,0 @@
# Pyrogram - Telegram MTProto API Client Library for Python
# Copyright (C) 2017-present Dan <https://github.com/delivrance>
#
# This file is part of Pyrogram.
#
# Pyrogram is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Pyrogram is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
from pyrogram import raw
from ..object import Object
class PeerUser(Object):
"""A PeerUser.
Parameters:
user_id (``int``):
Id of the user.
"""
def __init__(
self, *,
user_id: int
):
super().__init__()
self.user_id = user_id
@staticmethod
def _parse(action: "raw.types.PeerUser") -> "PeerUser":
return PeerUser(
user_id=getattr(action, "user_id", None)
)