forked from python-telegram-bot/python-telegram-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchatmember.py
More file actions
130 lines (114 loc) · 5.78 KB
/
chatmember.py
File metadata and controls
130 lines (114 loc) · 5.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/usr/bin/env python
#
# A library that provides a Python interface to the Telegram Bot API
# Copyright (C) 2015-2017
# Leandro Toledo de Souza <[email protected]>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program 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 Public License for more details.
#
# You should have received a copy of the GNU Lesser Public License
# along with this program. If not, see [http://www.gnu.org/licenses/].
"""This module contains an object that represents a Telegram ChatMember."""
from telegram import User, TelegramObject
from telegram.utils.helpers import to_timestamp, from_timestamp
class ChatMember(TelegramObject):
"""This object represents a Telegram ChatMember.
Attributes:
user (:class:`telegram.User`): Information about the user.
status (str): The member's status in the chat. Can be 'creator', 'administrator', 'member',
'left' or 'kicked'.
until_date (Optional[:class:`datetime.datetime`]): Restricted and kicked only. Date when
restrictions will be lifted for this user.
can_be_edited (Optional[boolean]): Administrators only. True, if the bot is allowed to
edit administrator privileges of that user
can_change_info (Optional[boolean]): Administrators only. True, if the administrator can
change the chat title, photo and other settings
can_post_messages (Optional[boolean]): Administrators only. True, if the administrator can
post in the channel, channels only
can_edit_messages (Optional[boolean]): Administrators only. True, if the administrator can
edit messages of other users, channels only
can_delete_messages (Optional[boolean]): Administrators only. True, if the administrator
can delete messages of other user
can_invite_users (Optional[boolean]): Administrators only. True, if the administrator can
invite new users to the chat
can_restrict_members (Optional[boolean]): Administrators only. True, if the administrator
can restrict, ban or unban chat members
can_pin_messages (Optional[boolean]): Administrators only. True, if the administrator can
pin messages, supergroups only
can_promote_members (Optional[boolean]): Administrators only. 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 the user)
can_send_messages (Optional[boolean]): Restricted only. True, if the user can send text
messages, contacts, locations and venues
can_send_media_messages (Optional[boolean]): Restricted only. True, if the user can send
audios, documents, photos, videos, video notes and voice notes,
implies can_send_messages
can_send_other_messages (Optional[boolean]): Restricted only. True, if the user can send
animations, games, stickers and use inline bots, implies can_send_media_messages
can_add_web_page_previews (Optional[boolean]): Restricted only. True, if user may add
web page previews to his messages, implies can_send_media_messages
Args:
**kwargs (dict): Arbitrary keyword arguments.
"""
CREATOR = 'creator'
ADMINISTRATOR = 'administrator'
MEMBER = 'member'
LEFT = 'left'
KICKED = 'kicked'
def __init__(self, user, status, until_date=None, can_be_edited=None,
can_change_info=None, can_post_messages=None, can_edit_messages=None,
can_delete_messages=None, can_invite_users=None,
can_restrict_members=None, can_pin_messages=None,
can_promote_members=None, can_send_messages=None,
can_send_media_messages=None, can_send_other_messages=None,
can_add_web_page_previews=None, **kwargs):
# Required
self.user = user
self.status = status
self.until_date = until_date
self.can_be_edited = can_be_edited
self.can_change_info = can_change_info
self.can_post_messages = can_post_messages
self.can_edit_messages = can_edit_messages
self.can_delete_messages = can_delete_messages
self.can_invite_users = can_invite_users
self.can_restrict_members = can_restrict_members
self.can_pin_messages = can_pin_messages
self.can_promote_members = can_promote_members
self.can_send_messages = can_send_messages
self.can_send_media_messages = can_send_media_messages
self.can_send_other_messages = can_send_other_messages
self.can_add_web_page_previews = can_add_web_page_previews
self._id_attrs = (self.user, self.status)
@staticmethod
def de_json(data, bot):
"""
Args:
data (dict):
bot (telegram.Bot):
Returns:
telegram.ChatMember:
"""
if not data:
return None
data = super(ChatMember, ChatMember).de_json(data, bot)
data['user'] = User.de_json(data.get('user'), bot)
data['until_date'] = from_timestamp(data.get('until_date', None))
return ChatMember(**data)
def to_dict(self):
"""
Returns:
dict:
"""
data = super(ChatMember, self).to_dict()
data['until_date'] = to_timestamp(self.until_date)
return data