Compare commits
127 Commits
4a79535321
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
53802728a1
|
|||
|
2cdb4e743f
|
|||
|
98fbbf0127
|
|||
|
856d53de1c
|
|||
|
5e8a2b65f5
|
|||
|
3b0bfb4880
|
|||
|
a49e727e31
|
|||
|
c78522d46b
|
|||
|
c4964105b4
|
|||
|
3396bc6f18
|
|||
|
c1f4abc541
|
|||
|
c4a822e45d
|
|||
|
6b4a95be36
|
|||
|
beaf3f8516
|
|||
|
fc1f087d4a
|
|||
|
aeac4aea52
|
|||
|
5ab22909cf
|
|||
|
9094955812
|
|||
|
173783e154
|
|||
|
92a986d090
|
|||
|
3e6e364336
|
|||
|
f0a4c914e4
|
|||
|
80a1440e75
|
|||
|
b978022658
|
|||
|
50f561e7f9
|
|||
|
a9b785f49d
|
|||
|
b7d08ab2ba
|
|||
|
d362ec496b
|
|||
|
0bfc1e157b
|
|||
|
bc40957b27
|
|||
|
45117610f9
|
|||
|
f91661927e
|
|||
|
12f3a2cc73
|
|||
|
25abb80343
|
|||
|
76ea65a660
|
|||
|
e254dbf42a
|
|||
|
b7b91a65ea
|
|||
|
abebff43d9
|
|||
|
a460f71b69
|
|||
|
6ad5ec2865
|
|||
|
cfae729270
|
|||
|
dc9c2a7b14
|
|||
|
a3cc676432
|
|||
|
15a7a58537
|
|||
|
ea30fd39cf
|
|||
|
a5cabdd102
|
|||
|
89fa73d1a5
|
|||
|
4b22658bf5
|
|||
|
bce8cff3cf
|
|||
|
ea07aa47cf
|
|||
|
d49bab54ca
|
|||
|
83d01e4da9
|
|||
|
59dde0d25e
|
|||
|
713f4ffd0e
|
|||
|
51bc95332f
|
|||
|
92758d923c
|
|||
|
946e2a881f
|
|||
|
|
0f4d31892f
|
||
|
|
c4eaa0b9db | ||
|
|
21214feb0a | ||
|
|
f7ee5b71a1 | ||
|
|
fb58c0239d | ||
|
|
c848bfc228 | ||
|
|
f823057cbe | ||
|
|
d7a1acd23b | ||
|
|
70053c9279 | ||
|
|
1c76c7d797 | ||
|
|
dfffbff7c6 | ||
|
|
a4b1ed09a2 | ||
|
|
a1bd681cbf | ||
|
|
9c57677320 | ||
|
|
956e982157 | ||
|
|
4bd10894a8 | ||
|
|
89a9863510 | ||
|
|
ed36e53a28 | ||
|
|
8977e0fbc3 | ||
|
|
cf7e0c740b | ||
|
|
12b18cff58 | ||
|
|
3160723aa7 | ||
|
|
8e2feb5ac2 | ||
|
|
cbc7424a97 | ||
|
|
1e7c384b6d | ||
|
|
7cc2e02f47 | ||
|
|
6315c0dcc2 | ||
|
|
f06c525f5b | ||
|
|
ea5c63c1f8 | ||
|
|
ea549b63c8 | ||
|
|
e63b0f9265 | ||
|
|
cb9310437f | ||
|
|
5bc58dd7d5 | ||
|
|
5d35579e10 | ||
|
|
b0132e0b30 | ||
|
|
49ecee63d0 | ||
|
|
273eda2b67 | ||
|
|
b12f653096 | ||
|
|
05878f3fbd | ||
|
|
c583c3c3b0 | ||
|
|
2d40903069 | ||
|
|
217a445a65 | ||
|
|
b68dbe7a07 | ||
|
|
258ca9f6ef | ||
|
|
3648a36636 | ||
|
|
ef99493c7f | ||
|
|
841f7f0c8d | ||
|
|
23882e5b3b | ||
|
|
6ba21f0115 | ||
|
|
ca6dca3cb7 | ||
|
|
9072c3abe5 | ||
|
|
e74e38c6ae | ||
|
|
7a23045479 | ||
|
|
5ef449a542 | ||
|
|
a2c83f8d9c | ||
|
|
dddaf20ea2 | ||
|
|
a828bb5d3c | ||
|
|
25f5514dff | ||
|
|
34f802732b | ||
|
|
f6466b0540 | ||
|
|
7565df17ba | ||
|
|
4be33370b9 | ||
|
|
cf3f7a88fb | ||
|
|
a4d464da58 | ||
|
|
83c0a91919 | ||
|
|
85a5ce3882 | ||
|
|
77405d2dd3 | ||
|
|
1e2316e748 | ||
|
|
16014c5a42 | ||
|
|
f0be5b5ff2 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -41,7 +41,6 @@ __pycache__/
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
env/
|
||||
.venv/
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
|
||||
@@ -11,7 +11,7 @@ __author__ = "Davide Testa"
|
||||
__email__ = "davide@davte.it"
|
||||
__credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
|
||||
__license__ = "GNU General Public License v3.0"
|
||||
__version__ = "2.10.9"
|
||||
__version__ = "2.10.6"
|
||||
__maintainer__ = "Davide Testa"
|
||||
__contact__ = "t.me/davte"
|
||||
|
||||
|
||||
@@ -1890,8 +1890,6 @@ async def create_promotion_command(bot: Bot):
|
||||
of the machine running the bot.
|
||||
"""
|
||||
await bot.get_me()
|
||||
if len(bot.administrators) > 0:
|
||||
return
|
||||
bot.administration_token = get_secure_key(length=10)
|
||||
print(f"To become administrator click "
|
||||
f"https://t.me/{bot.name}?start="
|
||||
@@ -2134,4 +2132,6 @@ def init(telegram_bot: Bot,
|
||||
update=update,
|
||||
user_record=user_record,
|
||||
language=language)
|
||||
|
||||
if len(telegram_bot.administrators) == 0:
|
||||
asyncio.ensure_future(create_promotion_command(bot=telegram_bot))
|
||||
|
||||
@@ -457,40 +457,6 @@ class InputPaidMediaVideo(InputPaidMedia):
|
||||
self['supports_streaming'] = supports_streaming
|
||||
|
||||
|
||||
class MessageEntity(DictToDump):
|
||||
def __init__(self,
|
||||
type_: str,
|
||||
offset: int,
|
||||
length: int,
|
||||
url: str,
|
||||
user: 'User',
|
||||
language: str,
|
||||
custom_emoji_id: str):
|
||||
super().__init__()
|
||||
self['type'] = type_
|
||||
self['offset'] = offset
|
||||
self['length'] = length
|
||||
self['url'] = url
|
||||
self['user'] = user
|
||||
self['language'] = language
|
||||
self['custom_emoji_id'] = custom_emoji_id
|
||||
|
||||
|
||||
class PreparedInlineMessage(DictToDump):
|
||||
"""Describes an inline message to be sent by a user of a Mini App.
|
||||
|
||||
Attributes:
|
||||
id (str): Unique identifier of the prepared message
|
||||
expiration_date (int): Expiration date of the prepared message,
|
||||
in Unix time. Expired prepared messages can no longer be used.
|
||||
"""
|
||||
def __init__(self,
|
||||
id: str,
|
||||
expiration_date: int):
|
||||
super().__init__()
|
||||
self['id'] = id
|
||||
self['expiration_date'] = expiration_date
|
||||
|
||||
def handle_deprecated_disable_web_page_preview(parameters: dict,
|
||||
kwargs: dict):
|
||||
if 'disable_web_page_preview' in kwargs:
|
||||
@@ -951,7 +917,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a text message. On success, return it.
|
||||
|
||||
@@ -998,7 +963,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a photo from file_id, HTTP url or file.
|
||||
|
||||
@@ -1028,7 +992,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send an audio file from file_id, HTTP url or file.
|
||||
|
||||
@@ -1061,7 +1024,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a document from file_id, HTTP url or file.
|
||||
|
||||
@@ -1099,7 +1061,6 @@ class TelegramBot:
|
||||
has_spoiler: bool = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a video from file_id, HTTP url or file.
|
||||
|
||||
@@ -1136,7 +1097,6 @@ class TelegramBot:
|
||||
has_spoiler: bool = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send animation files (GIF or H.264/MPEG-4 AVC video without sound).
|
||||
|
||||
@@ -1168,7 +1128,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send an audio file to be displayed as playable voice message.
|
||||
|
||||
@@ -1195,7 +1154,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a rounded square mp4 video message of up to 1 minute long.
|
||||
|
||||
@@ -1222,7 +1180,6 @@ class TelegramBot:
|
||||
protect_content: bool = None,
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a group of photos or videos as an album.
|
||||
|
||||
@@ -1252,7 +1209,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a point on the map. May be kept updated for a `live_period`.
|
||||
|
||||
@@ -1340,7 +1296,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send information about a venue.
|
||||
|
||||
@@ -1368,7 +1323,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a phone contact.
|
||||
|
||||
@@ -1406,7 +1360,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a native poll in a group, a supergroup or channel.
|
||||
|
||||
@@ -1928,7 +1881,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send `.webp` stickers.
|
||||
|
||||
@@ -2148,7 +2100,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send an invoice.
|
||||
|
||||
@@ -2229,7 +2180,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a game.
|
||||
|
||||
@@ -2297,7 +2247,6 @@ class TelegramBot:
|
||||
message_effect_id: str = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Send a dice.
|
||||
|
||||
@@ -2447,7 +2396,6 @@ class TelegramBot:
|
||||
disable_notification: bool = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
reply_markup=None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
**kwargs):
|
||||
"""Use this method to copy messages of any kind.
|
||||
|
||||
@@ -2810,27 +2758,11 @@ class TelegramBot:
|
||||
need_shipping_address: bool,
|
||||
send_phone_number_to_provider: bool,
|
||||
send_email_to_provider: bool,
|
||||
is_flexible: bool,
|
||||
business_connection_id: str = None,
|
||||
subscription_period: int = None
|
||||
):
|
||||
is_flexible: bool):
|
||||
"""Use this method to create a link for an invoice.
|
||||
|
||||
Returns the created invoice link as String on success. See
|
||||
https://core.telegram.org/bots/api#createinvoicelink for details.
|
||||
|
||||
Attributes:
|
||||
business_connection_id (Optional[str]): Unique identifier of the
|
||||
business connection on behalf of which the link will be created.
|
||||
For payments in Telegram Stars only.
|
||||
subscription_period (Optional[int]): The number of seconds the
|
||||
subscription will be active for before the next payment. The
|
||||
currency must be set to “XTR” (Telegram Stars) if the parameter
|
||||
is used. Currently, it must always be 2592000 (30 days) if
|
||||
specified. Any number of subscriptions can be active for a given
|
||||
bot at the same time, including multiple concurrent
|
||||
subscriptions from the same user.
|
||||
Subscription price must no exceed 2500 Telegram Stars.
|
||||
Returns the created invoice link as String on success.
|
||||
See https://core.telegram.org/bots/api#createinvoicelink for details.
|
||||
"""
|
||||
return await self.api_request(
|
||||
'createInvoiceLink',
|
||||
@@ -3177,7 +3109,6 @@ class TelegramBot:
|
||||
|
||||
async def sendPaidMedia(self, chat_id: Union[int, str], star_count: int,
|
||||
media: List[InputPaidMedia],
|
||||
payload: str = None,
|
||||
business_connection_id: str = None,
|
||||
caption: str = None, parse_mode: str = None,
|
||||
caption_entities: List[dict] = None,
|
||||
@@ -3185,7 +3116,6 @@ class TelegramBot:
|
||||
disable_notification: bool = None,
|
||||
protect_content: bool = None,
|
||||
reply_parameters: ReplyParameters = None,
|
||||
allow_paid_broadcast: bool = None,
|
||||
reply_markup = None):
|
||||
"""Send paid media to channel chats.
|
||||
|
||||
@@ -3258,146 +3188,3 @@ class TelegramBot:
|
||||
'editChatSubscriptionInviteLink',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def setUserEmojiStatus(self, user_id: int,
|
||||
emoji_status_custom_emoji_id: str = None,
|
||||
emoji_status_expiration_date: int = None):
|
||||
"""Changes the emoji status for a given user that previously allowed the
|
||||
bot to manage their emoji status via the Mini App method
|
||||
requestEmojiStatusAccess.
|
||||
|
||||
Returns True on success.
|
||||
See https://core.telegram.org/bots/api#setuseremojistatus for details.
|
||||
"""
|
||||
if emoji_status_custom_emoji_id is None:
|
||||
emoji_status_custom_emoji_id = ''
|
||||
return await self.api_request(
|
||||
'setUserEmojiStatus',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def getAvailableGifts(self):
|
||||
"""Returns the list of gifts that can be sent by the bot to users.
|
||||
|
||||
Requires no parameters.
|
||||
Returns a Gifts object.
|
||||
See https://core.telegram.org/bots/api#getavailablegifts for details.
|
||||
"""
|
||||
return await self.api_request(
|
||||
'getAvailableGifts',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def sendGift(self, user_id: int, gift_id: str, pay_for_upgrade: bool,
|
||||
text: str, text_parse_mode: str,
|
||||
text_entities: List['MessageEntity']):
|
||||
"""Sends a gift to the given user.
|
||||
|
||||
The gift can't be converted to Telegram Stars by the user.
|
||||
Returns True on success.
|
||||
See https://core.telegram.org/bots/api#sendgift for details.
|
||||
"""
|
||||
return await self.api_request(
|
||||
'sendGift',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def verifyUser(self, user_id: int,
|
||||
custom_description: str = None):
|
||||
"""Verifies a user on behalf of the organization which is represented by
|
||||
the bot.
|
||||
|
||||
Returns True on success.
|
||||
See https://core.telegram.org/bots/api#verifyuser for details.
|
||||
"""
|
||||
if len(custom_description) > 70:
|
||||
raise TypeError("Parameter `custom_description` is too long "
|
||||
"(0-70 characters).")
|
||||
return await self.api_request(
|
||||
'verifyUser',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def verifyChat(self, chat_id: Union[int, str],
|
||||
custom_description: str = None):
|
||||
"""Verifies a chat on behalf of the organization which is represented by
|
||||
the bot.
|
||||
|
||||
Returns True on success.
|
||||
See https://core.telegram.org/bots/api#verifychat for details.
|
||||
"""
|
||||
if isinstance(chat_id, str) and chat_id.isnumeric():
|
||||
chat_id = int(chat_id)
|
||||
if not (isinstance(chat_id, int) or
|
||||
(isinstance(chat_id, str) and chat_id.startswith('@'))):
|
||||
raise TypeError(f"Invalid chat_id: `{chat_id}`")
|
||||
if len(custom_description) > 70:
|
||||
raise TypeError("Parameter `custom_description` is too long "
|
||||
"(0-70 characters).")
|
||||
return await self.api_request(
|
||||
'verifyChat',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def removeUserVerification(self, user_id: int):
|
||||
"""Removes verification from a user who is currently verified on behalf
|
||||
of the organization represented by the bot.
|
||||
|
||||
Returns True on success.
|
||||
See https://core.telegram.org/bots/api#removeuserverification for
|
||||
details.
|
||||
"""
|
||||
return await self.api_request(
|
||||
'removeUserVerification',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def removeChatVerification(self, chat_id: Union[int, str]):
|
||||
"""Removes verification from a chat that is currently verified on behalf
|
||||
of the organization represented by the bot.
|
||||
|
||||
Returns True on success.
|
||||
See https://core.telegram.org/bots/api#removechatverification for
|
||||
details.
|
||||
"""
|
||||
if not (isinstance(chat_id, int) or
|
||||
(isinstance(chat_id, str) and chat_id.startswith('@'))):
|
||||
raise TypeError(f"Invalid chat_id: `{chat_id}`")
|
||||
return await self.api_request(
|
||||
'removeChatVerification',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def savePreparedInlineMessage(self,
|
||||
user_id: int,
|
||||
result: 'InlineQueryResult',
|
||||
allow_user_chats: bool = None,
|
||||
allow_bot_chats: bool = None,
|
||||
allow_group_chats: bool = None,
|
||||
allow_channel_chats: bool = None
|
||||
) -> 'PreparedInlineMessage':
|
||||
"""Stores a message that can be sent by a user of a Mini App.
|
||||
|
||||
Returns a PreparedInlineMessage object.
|
||||
See https://core.telegram.org/bots/api#savepreparedinlinemessage for
|
||||
details.
|
||||
"""
|
||||
return await self.api_request(
|
||||
'savePreparedInlineMessage',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
async def editUserStarSubscription(self, user_id: int,
|
||||
telegram_payment_charge_id: str,
|
||||
is_canceled: bool):
|
||||
"""Allows the bot to cancel or re-enable extension of a subscription
|
||||
paid in Telegram Stars.
|
||||
|
||||
Returns True on success.
|
||||
See https://core.telegram.org/bots/api#edituserstarsubscription for
|
||||
details.
|
||||
"""
|
||||
return await self.api_request(
|
||||
'editUserStarSubscription',
|
||||
parameters=locals()
|
||||
)
|
||||
|
||||
@@ -122,47 +122,12 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject):
|
||||
'edited_message': self.edited_message_handler,
|
||||
'channel_post': self.channel_post_handler,
|
||||
'edited_channel_post': self.edited_channel_post_handler,
|
||||
'business_connection': self.get_update_handler(
|
||||
update_type='business_connection'
|
||||
),
|
||||
'business_message': self.get_update_handler(
|
||||
update_type='business_message'
|
||||
),
|
||||
'edited_business_message': self.get_update_handler(
|
||||
update_type='edited_business_message'
|
||||
),
|
||||
'deleted_business_messages': self.get_update_handler(
|
||||
update_type='deleted_business_messages'
|
||||
),
|
||||
'message_reaction': self.get_update_handler(
|
||||
update_type='message_reaction'
|
||||
),
|
||||
'message_reaction_count': self.get_update_handler(
|
||||
update_type='message_reaction_count'
|
||||
),
|
||||
'inline_query': self.inline_query_handler,
|
||||
'chosen_inline_result': self.chosen_inline_result_handler,
|
||||
'callback_query': self.callback_query_handler,
|
||||
'shipping_query': self.shipping_query_handler,
|
||||
'pre_checkout_query': self.pre_checkout_query_handler,
|
||||
'purchased_paid_media': self.get_update_handler(
|
||||
update_type='purchased_paid_media'
|
||||
),
|
||||
'poll': self.poll_handler,
|
||||
'poll_answer': self.get_update_handler(
|
||||
update_type='poll_answer'
|
||||
),
|
||||
'my_chat_member': self.get_update_handler(
|
||||
update_type='my_chat_member'
|
||||
),
|
||||
'chat_member': self.get_update_handler( update_type='chat_member' ),
|
||||
'chat_join_request': self.get_update_handler(
|
||||
update_type='chat_join_request'
|
||||
),
|
||||
'chat_boost': self.get_update_handler( update_type='chat_boost' ),
|
||||
'removed_chat_boost': self.get_update_handler(
|
||||
update_type='removed_chat_boost'
|
||||
),
|
||||
}
|
||||
# Different message update types need different handlers
|
||||
self.message_handlers = {
|
||||
@@ -256,8 +221,6 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject):
|
||||
self.Role = None
|
||||
self.packages = [sys.modules['davtelepot']]
|
||||
self._documents_max_dimension = None
|
||||
self._getting_me = False
|
||||
self._got_me = False
|
||||
# Add `users` table with its fields if missing
|
||||
if 'users' not in self.db.tables:
|
||||
table = self.db.create_table(
|
||||
@@ -717,18 +680,6 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject):
|
||||
)
|
||||
return
|
||||
|
||||
def get_update_handler(self, update_type: str):
|
||||
"""Get update handler for `update_type`."""
|
||||
bot = self
|
||||
async def handler(update, user_record, language=None):
|
||||
"""Handle update message of type `update_type`"""
|
||||
logging.info(
|
||||
"The following update was received: %s\n"
|
||||
"However, this `%s` handler does nothing yet.",
|
||||
update, update_type
|
||||
)
|
||||
return handler
|
||||
|
||||
async def edited_channel_post_handler(self, update, user_record, language=None):
|
||||
"""Handle Telegram `edited_channel_post` update."""
|
||||
logging.info(
|
||||
@@ -2853,7 +2804,9 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject):
|
||||
"""
|
||||
if not callable(condition):
|
||||
raise TypeError(
|
||||
f'Condition {condition.__name__} is not a callable'
|
||||
'Condition {c} is not a callable'.format(
|
||||
c=condition.__name__
|
||||
)
|
||||
)
|
||||
|
||||
def query_decorator(handler):
|
||||
@@ -3194,41 +3147,26 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject):
|
||||
|
||||
Restart bots if bot can't be got.
|
||||
"""
|
||||
for _ in range(60):
|
||||
if not self._getting_me:
|
||||
break
|
||||
await asyncio.sleep(0.5)
|
||||
else:
|
||||
raise TimeoutError("Getting bot information was in progress but "
|
||||
"did not make it in 30 seconds...")
|
||||
if self._got_me:
|
||||
return
|
||||
self._getting_me = True
|
||||
try:
|
||||
me = await self.getMe()
|
||||
if isinstance(me, Exception):
|
||||
raise me
|
||||
if me is None:
|
||||
raise TypeError('getMe returned None')
|
||||
elif me is None:
|
||||
raise Exception('getMe returned None')
|
||||
self._name = me["username"]
|
||||
self._telegram_id = me['id']
|
||||
except Exception as e:
|
||||
logging.error(
|
||||
"API getMe method failed, information about this bot could "
|
||||
"not be retrieved. Restarting in 5 minutes...\n\n"
|
||||
"Error information:\n%s", e
|
||||
f"API getMe method failed, information about this bot could "
|
||||
f"not be retrieved. Restarting in 5 minutes...\n\n"
|
||||
f"Error information:\n{e}"
|
||||
)
|
||||
self._getting_me = False
|
||||
await asyncio.sleep(5*60)
|
||||
if self._got_me:
|
||||
return
|
||||
self.__class__.stop(
|
||||
message="Information about this bot could not be retrieved.\n"
|
||||
"Restarting...",
|
||||
final_state=65
|
||||
)
|
||||
self._getting_me = False
|
||||
self._got_me = True
|
||||
|
||||
def setup(self):
|
||||
"""Make bot ask for updates and handle responses."""
|
||||
@@ -3243,11 +3181,9 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject):
|
||||
|
||||
async def close_sessions(self):
|
||||
"""Close open sessions."""
|
||||
for session_name in list(self.sessions.keys()):
|
||||
session = self.sessions[session_name]
|
||||
for session_name, session in self.sessions.items():
|
||||
if not session.closed:
|
||||
await session.close()
|
||||
del self.sessions[session_name]
|
||||
|
||||
async def send_one_message(self, *args, **kwargs):
|
||||
sent_message = await self.send_message(*args, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user