Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added support for topics in Bot API 6.3 #1061

Merged
merged 4 commits into from Nov 5, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
96 changes: 94 additions & 2 deletions aiogram/bot/bot.py

Large diffs are not rendered by default.

7 changes: 6 additions & 1 deletion aiogram/dispatcher/webhook.py
Expand Up @@ -1450,7 +1450,7 @@ class PromoteChatMember(BaseResponse):

__slots__ = ('chat_id', 'user_id', 'can_change_info', 'can_post_messages', 'can_edit_messages',
'can_delete_messages', 'can_invite_users', 'can_restrict_members', 'can_pin_messages',
'can_promote_members')
'can_manage_topics', 'can_promote_members')

method = api.Methods.PROMOTE_CHAT_MEMBER

Expand All @@ -1463,6 +1463,7 @@ def __init__(self, chat_id: Union[Integer, String],
can_invite_users: Optional[Boolean] = None,
can_restrict_members: Optional[Boolean] = None,
can_pin_messages: Optional[Boolean] = None,
can_manage_topics: Optional[Boolean] = None,
can_promote_members: Optional[Boolean] = None):
"""
:param chat_id: Union[Integer, String] - Unique identifier for the target chat
Expand All @@ -1477,6 +1478,8 @@ def __init__(self, chat_id: Union[Integer, String],
:param can_invite_users: Boolean - Pass True, if the administrator can invite new users to the chat
:param can_restrict_members: Boolean - Pass True, if the administrator can restrict, ban or unban chat members
:param can_pin_messages: Boolean - Pass True, if the administrator can pin messages, supergroups only
:param can_manage_topics: Boolean - Pass True if the user is allowed to create, rename, close, and reopen forum
topics, supergroups only
:param can_promote_members: Boolean - Pass True, if the administrator can add new administrators
with a subset of his own privileges or demote administrators that he has promoted,
directly or indirectly (promoted by administrators that were appointed by him)
Expand All @@ -1490,6 +1493,7 @@ def __init__(self, chat_id: Union[Integer, String],
self.can_invite_users = can_invite_users
self.can_restrict_members = can_restrict_members
self.can_pin_messages = can_pin_messages
self.can_manage_topics = can_manage_topics
self.can_promote_members = can_promote_members

def prepare(self):
Expand All @@ -1503,6 +1507,7 @@ def prepare(self):
'can_invite_users': self.can_invite_users,
'can_restrict_members': self.can_restrict_members,
'can_pin_messages': self.can_pin_messages,
'can_manage_topics': self.can_manage_topics,
'can_promote_members': self.can_promote_members
}

Expand Down
6 changes: 6 additions & 0 deletions aiogram/types/__init__.py
Expand Up @@ -29,6 +29,9 @@
from .encrypted_passport_element import EncryptedPassportElement
from .file import File
from .force_reply import ForceReply
from .forum_topic_created import ForumTopicCreated
from .forum_topic_closed import ForumTopicClosed
from .forum_topic_reopened import ForumTopicReopened
from .game import Game
from .game_high_score import GameHighScore
from .inline_keyboard import InlineKeyboardButton, InlineKeyboardMarkup
Expand Down Expand Up @@ -240,6 +243,9 @@
'WebAppData',
'WebAppInfo',
'WebhookInfo',
'ForumTopicCreated',
'ForumTopicClosed',
'ForumTopicReopened',
'base',
'fields',
)
3 changes: 3 additions & 0 deletions aiogram/types/chat.py
Expand Up @@ -27,8 +27,11 @@ class Chat(base.TelegramObject):
username: base.String = fields.Field()
first_name: base.String = fields.Field()
last_name: base.String = fields.Field()
is_forum: base.Boolean = fields.Field()
all_members_are_administrators: base.Boolean = fields.Field()
photo: ChatPhoto = fields.Field(base=ChatPhoto)
active_usernames: typing.List[base.String] = fields.Field()
emoji_status_custom_emoji_id: base.String = fields.Field()
bio: base.String = fields.Field()
has_private_forwards: base.Boolean = fields.Field()
has_restricted_voice_and_video_messages: base.Boolean = fields.Field()
Expand Down
7 changes: 5 additions & 2 deletions aiogram/types/chat_administrator_rights.py
Expand Up @@ -19,6 +19,7 @@ class ChatAdministratorRights(base.TelegramObject):
can_post_messages: base.Boolean = fields.Field()
can_edit_messages: base.Boolean = fields.Field()
can_pin_messages: base.Boolean = fields.Field()
can_manage_topics: base.Boolean = fields.Field()

def __init__(self,
is_anonymous: base.Boolean = None,
Expand All @@ -31,7 +32,8 @@ def __init__(self,
can_invite_users: base.Boolean = None,
can_post_messages: base.Boolean = None,
can_edit_messages: base.Boolean = None,
can_pin_messages: base.Boolean = None):
can_pin_messages: base.Boolean = None,
can_manage_topics: base.Boolean = None):
super(ChatAdministratorRights, self).__init__(
is_anonymous=is_anonymous,
can_manage_chat=can_manage_chat,
Expand All @@ -43,4 +45,5 @@ def __init__(self,
can_invite_users=can_invite_users,
can_post_messages=can_post_messages,
can_edit_messages=can_edit_messages,
can_pin_messages=can_pin_messages)
can_pin_messages=can_pin_messages,
can_manage_topics=can_manage_topics)
3 changes: 3 additions & 0 deletions aiogram/types/chat_member.py
Expand Up @@ -135,6 +135,7 @@ class ChatMemberOwner(ChatMember):
can_change_info: base.Boolean = fields.ConstField(True)
can_invite_users: base.Boolean = fields.ConstField(True)
can_pin_messages: base.Boolean = fields.ConstField(True)
can_manage_topics: base.Boolean = fields.ConstField(True)


class ChatMemberAdministrator(ChatMember):
Expand All @@ -159,6 +160,7 @@ class ChatMemberAdministrator(ChatMember):
can_change_info: base.Boolean = fields.Field()
can_invite_users: base.Boolean = fields.Field()
can_pin_messages: base.Boolean = fields.Field()
can_manage_topics: base.Boolean = fields.Field()


class ChatMemberMember(ChatMember):
Expand All @@ -185,6 +187,7 @@ class ChatMemberRestricted(ChatMember):
can_change_info: base.Boolean = fields.Field()
can_invite_users: base.Boolean = fields.Field()
can_pin_messages: base.Boolean = fields.Field()
can_manage_topics: base.Boolean = fields.Field()
can_send_messages: base.Boolean = fields.Field()
can_send_media_messages: base.Boolean = fields.Field()
can_send_polls: base.Boolean = fields.Field()
Expand Down
3 changes: 3 additions & 0 deletions aiogram/types/chat_permissions.py
Expand Up @@ -16,6 +16,7 @@ class ChatPermissions(base.TelegramObject):
can_change_info: base.Boolean = fields.Field()
can_invite_users: base.Boolean = fields.Field()
can_pin_messages: base.Boolean = fields.Field()
can_manage_topics: base.Boolean = fields.Field()

def __init__(self,
can_send_messages: base.Boolean = None,
Expand All @@ -26,6 +27,7 @@ def __init__(self,
can_change_info: base.Boolean = None,
can_invite_users: base.Boolean = None,
can_pin_messages: base.Boolean = None,
can_manage_topics: base.Boolean = None,
**kwargs):
super(ChatPermissions, self).__init__(
can_send_messages=can_send_messages,
Expand All @@ -36,4 +38,5 @@ def __init__(self,
can_change_info=can_change_info,
can_invite_users=can_invite_users,
can_pin_messages=can_pin_messages,
can_manage_topics=can_manage_topics,
)
10 changes: 10 additions & 0 deletions aiogram/types/forum_topic_closed.py
@@ -0,0 +1,10 @@
from . import base


class ForumTopicClosed(base.TelegramObject):
"""
This object represents a service message about a forum topic closed in the chat. Currently holds no information.

https://core.telegram.org/bots/api#forumtopicclosed
"""
pass
13 changes: 13 additions & 0 deletions aiogram/types/forum_topic_created.py
@@ -0,0 +1,13 @@
from . import base
from . import fields


class ForumTopicCreated(base.TelegramObject):
"""
This object represents a service message about a new forum topic created in the chat.

https://core.telegram.org/bots/api#forumtopiccreated
"""
name: base.String = fields.Field()
icon_color: base.Integer = fields.Field()
icon_custom_emoji_id: base.String = fields.Field()
10 changes: 10 additions & 0 deletions aiogram/types/forum_topic_reopened.py
@@ -0,0 +1,10 @@
from . import base


class ForumTopicReopened(base.TelegramObject):
"""
This object represents a service message about a forum topic closed in the chat. Currently holds no information.

https://core.telegram.org/bots/api#forumtopicreopened
"""
pass