mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2025-03-17 04:39:55 +01:00
Add missing shortcuts (#2043)
* Add all the methods * Add tests and fix some typos * A few more minor changes * Address review
This commit is contained in:
parent
dea24bcb7c
commit
fc5844c13d
8 changed files with 722 additions and 46 deletions
|
@ -175,10 +175,10 @@ class CallbackQuery(TelegramObject):
|
|||
def edit_message_reply_markup(self, reply_markup, *args, **kwargs):
|
||||
"""Shortcut for either::
|
||||
|
||||
bot.edit_message_replyMarkup(chat_id=update.callback_query.message.chat_id,
|
||||
message_id=update.callback_query.message.message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs)
|
||||
bot.edit_message_reply_markup(chat_id=update.callback_query.message.chat_id,
|
||||
message_id=update.callback_query.message.message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs)
|
||||
|
||||
or::
|
||||
|
||||
|
@ -200,3 +200,142 @@ class CallbackQuery(TelegramObject):
|
|||
chat_id=self.message.chat_id,
|
||||
message_id=self.message.message_id,
|
||||
*args, **kwargs)
|
||||
|
||||
def edit_message_media(self, *args, **kwargs):
|
||||
"""Shortcut for either::
|
||||
|
||||
bot.edit_message_media(chat_id=update.callback_query.message.chat_id,
|
||||
message_id=update.callback_query.message.message_id,
|
||||
media=media,
|
||||
*args, **kwargs)
|
||||
|
||||
or::
|
||||
|
||||
bot.edit_message_media(inline_message_id=update.callback_query.inline_message_id,
|
||||
media=media,
|
||||
*args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
|
||||
"""
|
||||
if self.inline_message_id:
|
||||
return self.bot.edit_message_media(inline_message_id=self.inline_message_id,
|
||||
*args, **kwargs)
|
||||
else:
|
||||
return self.bot.edit_message_media(chat_id=self.message.chat_id,
|
||||
message_id=self.message.message_id,
|
||||
*args, **kwargs)
|
||||
|
||||
def edit_message_live_location(self, *args, **kwargs):
|
||||
"""Shortcut for either::
|
||||
|
||||
bot.edit_message_live_location(chat_id=update.callback_query.message.chat_id,
|
||||
message_id=update.callback_query.message.message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs)
|
||||
|
||||
or::
|
||||
|
||||
bot.edit_message_live_location(
|
||||
inline_message_id=update.callback_query.inline_message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs
|
||||
)
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
|
||||
"""
|
||||
if self.inline_message_id:
|
||||
return self.bot.edit_message_live_location(inline_message_id=self.inline_message_id,
|
||||
*args, **kwargs)
|
||||
else:
|
||||
return self.bot.edit_message_live_location(chat_id=self.message.chat_id,
|
||||
message_id=self.message.message_id,
|
||||
*args, **kwargs)
|
||||
|
||||
def stop_message_live_location(self, *args, **kwargs):
|
||||
"""Shortcut for either::
|
||||
|
||||
bot.stop_message_live_location(chat_id=update.callback_query.message.chat_id,
|
||||
message_id=update.callback_query.message.message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs)
|
||||
|
||||
or::
|
||||
|
||||
bot.stop_message_live_location(
|
||||
inline_message_id=update.callback_query.inline_message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs
|
||||
)
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
|
||||
"""
|
||||
if self.inline_message_id:
|
||||
return self.bot.stop_message_live_location(inline_message_id=self.inline_message_id,
|
||||
*args, **kwargs)
|
||||
else:
|
||||
return self.bot.stop_message_live_location(chat_id=self.message.chat_id,
|
||||
message_id=self.message.message_id,
|
||||
*args, **kwargs)
|
||||
|
||||
def set_game_score(self, *args, **kwargs):
|
||||
"""Shortcut for either::
|
||||
|
||||
bot.set_game_score(chat_id=update.callback_query.message.chat_id,
|
||||
message_id=update.callback_query.message.message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs)
|
||||
|
||||
or::
|
||||
|
||||
bot.set_game_score(inline_message_id=update.callback_query.inline_message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
|
||||
"""
|
||||
if self.inline_message_id:
|
||||
return self.bot.set_game_score(inline_message_id=self.inline_message_id,
|
||||
*args, **kwargs)
|
||||
else:
|
||||
return self.bot.set_game_score(chat_id=self.message.chat_id,
|
||||
message_id=self.message.message_id,
|
||||
*args, **kwargs)
|
||||
|
||||
def get_game_high_scores(self, *args, **kwargs):
|
||||
"""Shortcut for either::
|
||||
|
||||
bot.get_game_high_scores(chat_id=update.callback_query.message.chat_id,
|
||||
message_id=update.callback_query.message.message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs)
|
||||
|
||||
or::
|
||||
|
||||
bot.get_game_high_scores(inline_message_id=update.callback_query.inline_message_id,
|
||||
reply_markup=reply_markup,
|
||||
*args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
|
||||
"""
|
||||
if self.inline_message_id:
|
||||
return self.bot.get_game_high_scores(inline_message_id=self.inline_message_id,
|
||||
*args, **kwargs)
|
||||
else:
|
||||
return self.bot.get_game_high_scores(chat_id=self.message.chat_id,
|
||||
message_id=self.message.message_id,
|
||||
*args, **kwargs)
|
||||
|
|
157
telegram/chat.py
157
telegram/chat.py
|
@ -149,22 +149,10 @@ class Chat(TelegramObject):
|
|||
|
||||
return cls(bot=bot, **data)
|
||||
|
||||
def send_action(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_chat_action(update.message.chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: If the action was sent successfully.
|
||||
|
||||
"""
|
||||
|
||||
return self.bot.send_chat_action(self.id, *args, **kwargs)
|
||||
|
||||
def leave(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.leave_chat(update.message.chat.id, *args, **kwargs)
|
||||
bot.leave_chat(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:obj:`bool` If the action was sent successfully.
|
||||
|
@ -175,7 +163,7 @@ class Chat(TelegramObject):
|
|||
def get_administrators(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.get_chat_administrators(update.message.chat.id, *args, **kwargs)
|
||||
bot.get_chat_administrators(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
List[:class:`telegram.ChatMember`]: A list of administrators in a chat. An Array of
|
||||
|
@ -189,7 +177,7 @@ class Chat(TelegramObject):
|
|||
def get_members_count(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.get_chat_members_count(update.message.chat.id, *args, **kwargs)
|
||||
bot.get_chat_members_count(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:obj:`int`
|
||||
|
@ -200,7 +188,7 @@ class Chat(TelegramObject):
|
|||
def get_member(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.get_chat_member(update.message.chat.id, *args, **kwargs)
|
||||
bot.get_chat_member(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:class:`telegram.ChatMember`
|
||||
|
@ -211,10 +199,10 @@ class Chat(TelegramObject):
|
|||
def kick_member(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.kick_chat_member(update.message.chat.id, *args, **kwargs)
|
||||
bot.kick_chat_member(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: If the action was sent succesfully.
|
||||
:obj:`bool`: If the action was sent successfully.
|
||||
|
||||
Note:
|
||||
This method will only work if the `All Members Are Admins` setting is off in the
|
||||
|
@ -227,7 +215,7 @@ class Chat(TelegramObject):
|
|||
def unban_member(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.unban_chat_member(update.message.chat.id, *args, **kwargs)
|
||||
bot.unban_chat_member(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: If the action was sent successfully.
|
||||
|
@ -238,7 +226,7 @@ class Chat(TelegramObject):
|
|||
def set_permissions(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.set_chat_permissions(update.message.chat.id, *args, **kwargs)
|
||||
bot.set_chat_permissions(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: If the action was sent successfully.
|
||||
|
@ -249,7 +237,7 @@ class Chat(TelegramObject):
|
|||
def set_administrator_custom_title(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.set_chat_administrator_custom_title(update.message.chat.id, *args, **kwargs)
|
||||
bot.set_chat_administrator_custom_title(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: If the action was sent successfully.
|
||||
|
@ -260,7 +248,7 @@ class Chat(TelegramObject):
|
|||
def send_message(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_message(Chat.id, *args, **kwargs)
|
||||
bot.send_message(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -270,10 +258,39 @@ class Chat(TelegramObject):
|
|||
"""
|
||||
return self.bot.send_message(self.id, *args, **kwargs)
|
||||
|
||||
def send_media_group(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_media_group(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
Returns:
|
||||
List[:class:`telegram.Message`:] On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_media_group(self.id, *args, **kwargs)
|
||||
|
||||
def send_chat_action(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_chat_action(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
Returns:
|
||||
:obj:`True`: On success.
|
||||
|
||||
"""
|
||||
return self.bot.send_chat_action(self.id, *args, **kwargs)
|
||||
|
||||
send_action = send_chat_action
|
||||
"""Alias for :attr:`send_chat_action`"""
|
||||
|
||||
def send_photo(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_photo(Chat.id, *args, **kwargs)
|
||||
bot.send_photo(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -283,10 +300,23 @@ class Chat(TelegramObject):
|
|||
"""
|
||||
return self.bot.send_photo(self.id, *args, **kwargs)
|
||||
|
||||
def send_contact(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_contact(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_contact(self.id, *args, **kwargs)
|
||||
|
||||
def send_audio(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_audio(Chat.id, *args, **kwargs)
|
||||
bot.send_audio(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -299,7 +329,7 @@ class Chat(TelegramObject):
|
|||
def send_document(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_document(Chat.id, *args, **kwargs)
|
||||
bot.send_document(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -309,10 +339,62 @@ class Chat(TelegramObject):
|
|||
"""
|
||||
return self.bot.send_document(self.id, *args, **kwargs)
|
||||
|
||||
def send_dice(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_dice(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_dice(self.id, *args, **kwargs)
|
||||
|
||||
def send_game(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_game(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_game(self.id, *args, **kwargs)
|
||||
|
||||
def send_invoice(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_invoice(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_invoice(self.id, *args, **kwargs)
|
||||
|
||||
def send_location(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_location(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_location(self.id, *args, **kwargs)
|
||||
|
||||
def send_animation(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_animation(Chat.id, *args, **kwargs)
|
||||
bot.send_animation(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -325,7 +407,7 @@ class Chat(TelegramObject):
|
|||
def send_sticker(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_sticker(Chat.id, *args, **kwargs)
|
||||
bot.send_sticker(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -335,10 +417,23 @@ class Chat(TelegramObject):
|
|||
"""
|
||||
return self.bot.send_sticker(self.id, *args, **kwargs)
|
||||
|
||||
def send_venue(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_venue(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_venue(self.id, *args, **kwargs)
|
||||
|
||||
def send_video(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_video(Chat.id, *args, **kwargs)
|
||||
bot.send_video(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -351,7 +446,7 @@ class Chat(TelegramObject):
|
|||
def send_video_note(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_video_note(Chat.id, *args, **kwargs)
|
||||
bot.send_video_note(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -364,7 +459,7 @@ class Chat(TelegramObject):
|
|||
def send_voice(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_voice(Chat.id, *args, **kwargs)
|
||||
bot.send_voice(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
@ -377,7 +472,7 @@ class Chat(TelegramObject):
|
|||
def send_poll(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_poll(Chat.id, *args, **kwargs)
|
||||
bot.send_poll(update.effective_chat.id, *args, **kwargs)
|
||||
|
||||
Where Chat is the current instance.
|
||||
|
||||
|
|
|
@ -935,6 +935,86 @@ class Message(TelegramObject):
|
|||
return self.bot.edit_message_reply_markup(
|
||||
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)
|
||||
|
||||
def edit_live_location(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.edit_message_live_location(chat_id=message.chat_id,
|
||||
message_id=message.message_id,
|
||||
*args,
|
||||
**kwargs)
|
||||
|
||||
Note:
|
||||
You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family
|
||||
of methods) or channel posts, if the bot is an admin in that channel. However, this
|
||||
behaviour is undocumented and might be changed by Telegram.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
"""
|
||||
return self.bot.edit_message_live_location(
|
||||
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)
|
||||
|
||||
def stop_live_location(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.stop_message_live_location(chat_id=message.chat_id,
|
||||
message_id=message.message_id,
|
||||
*args,
|
||||
**kwargs)
|
||||
|
||||
Note:
|
||||
You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family
|
||||
of methods) or channel posts, if the bot is an admin in that channel. However, this
|
||||
behaviour is undocumented and might be changed by Telegram.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
"""
|
||||
return self.bot.stop_message_live_location(
|
||||
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)
|
||||
|
||||
def set_game_score(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.set_game_score(chat_id=message.chat_id,
|
||||
message_id=message.message_id,
|
||||
*args,
|
||||
**kwargs)
|
||||
|
||||
Note:
|
||||
You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family
|
||||
of methods) or channel posts, if the bot is an admin in that channel. However, this
|
||||
behaviour is undocumented and might be changed by Telegram.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
"""
|
||||
return self.bot.set_game_score(
|
||||
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)
|
||||
|
||||
def get_game_high_scores(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.get_game_high_scores(chat_id=message.chat_id,
|
||||
message_id=message.message_id,
|
||||
*args,
|
||||
**kwargs)
|
||||
|
||||
Note:
|
||||
You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family
|
||||
of methods) or channel posts, if the bot is an admin in that channel. However, this
|
||||
behaviour is undocumented and might be changed by Telegram.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, if edited message is sent by the bot, the
|
||||
edited Message is returned, otherwise ``True`` is returned.
|
||||
"""
|
||||
return self.bot.get_game_high_scores(
|
||||
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
|
@ -966,6 +1046,21 @@ class Message(TelegramObject):
|
|||
return self.bot.stop_poll(
|
||||
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)
|
||||
|
||||
def pin(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.pin_chat_message(chat_id=message.chat_id,
|
||||
message_id=message.message_id,
|
||||
*args,
|
||||
**kwargs)
|
||||
|
||||
Returns:
|
||||
:obj:`True`: On success.
|
||||
|
||||
"""
|
||||
return self.bot.pin_chat_message(
|
||||
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)
|
||||
|
||||
def parse_entity(self, entity):
|
||||
"""Returns the text from a given :class:`telegram.MessageEntity`.
|
||||
|
||||
|
|
129
telegram/user.py
129
telegram/user.py
|
@ -124,7 +124,7 @@ class User(TelegramObject):
|
|||
"""
|
||||
Shortcut for::
|
||||
|
||||
bot.get_user_profile_photos(update.message.from_user.id, *args, **kwargs)
|
||||
bot.get_user_profile_photos(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
"""
|
||||
|
||||
|
@ -183,7 +183,7 @@ class User(TelegramObject):
|
|||
def send_message(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_message(User.id, *args, **kwargs)
|
||||
bot.send_message(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -196,7 +196,7 @@ class User(TelegramObject):
|
|||
def send_photo(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_photo(User.id, *args, **kwargs)
|
||||
bot.send_photo(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -206,10 +206,23 @@ class User(TelegramObject):
|
|||
"""
|
||||
return self.bot.send_photo(self.id, *args, **kwargs)
|
||||
|
||||
def send_media_group(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_media_group(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
Returns:
|
||||
List[:class:`telegram.Message`:] On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_media_group(self.id, *args, **kwargs)
|
||||
|
||||
def send_audio(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_audio(User.id, *args, **kwargs)
|
||||
bot.send_audio(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -219,10 +232,52 @@ class User(TelegramObject):
|
|||
"""
|
||||
return self.bot.send_audio(self.id, *args, **kwargs)
|
||||
|
||||
def send_chat_action(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_chat_action(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
Returns:
|
||||
:obj:`True`: On success.
|
||||
|
||||
"""
|
||||
return self.bot.send_chat_action(self.id, *args, **kwargs)
|
||||
|
||||
send_action = send_chat_action
|
||||
"""Alias for :attr:`send_chat_action`"""
|
||||
|
||||
def send_contact(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_contact(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_contact(self.id, *args, **kwargs)
|
||||
|
||||
def send_dice(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_dice(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_dice(self.id, *args, **kwargs)
|
||||
|
||||
def send_document(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_document(User.id, *args, **kwargs)
|
||||
bot.send_document(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -232,10 +287,49 @@ class User(TelegramObject):
|
|||
"""
|
||||
return self.bot.send_document(self.id, *args, **kwargs)
|
||||
|
||||
def send_game(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_game(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_game(self.id, *args, **kwargs)
|
||||
|
||||
def send_invoice(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_invoice(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_invoice(self.id, *args, **kwargs)
|
||||
|
||||
def send_location(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_location(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_location(self.id, *args, **kwargs)
|
||||
|
||||
def send_animation(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_animation(User.id, *args, **kwargs)
|
||||
bot.send_animation(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -248,7 +342,7 @@ class User(TelegramObject):
|
|||
def send_sticker(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_sticker(User.id, *args, **kwargs)
|
||||
bot.send_sticker(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -261,7 +355,7 @@ class User(TelegramObject):
|
|||
def send_video(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_video(User.id, *args, **kwargs)
|
||||
bot.send_video(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -271,10 +365,23 @@ class User(TelegramObject):
|
|||
"""
|
||||
return self.bot.send_video(self.id, *args, **kwargs)
|
||||
|
||||
def send_venue(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_venue(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
Returns:
|
||||
:class:`telegram.Message`: On success, instance representing the message posted.
|
||||
|
||||
"""
|
||||
return self.bot.send_venue(self.id, *args, **kwargs)
|
||||
|
||||
def send_video_note(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_video_note(User.id, *args, **kwargs)
|
||||
bot.send_video_note(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -287,7 +394,7 @@ class User(TelegramObject):
|
|||
def send_voice(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_voice(User.id, *args, **kwargs)
|
||||
bot.send_voice(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
@ -300,7 +407,7 @@ class User(TelegramObject):
|
|||
def send_poll(self, *args, **kwargs):
|
||||
"""Shortcut for::
|
||||
|
||||
bot.send_poll(User.id, *args, **kwargs)
|
||||
bot.send_poll(update.effective_user.id, *args, **kwargs)
|
||||
|
||||
Where User is the current instance.
|
||||
|
||||
|
|
|
@ -133,6 +133,81 @@ class TestCallbackQuery:
|
|||
assert callback_query.edit_message_reply_markup(reply_markup=[['1', '2']])
|
||||
assert callback_query.edit_message_reply_markup([['1', '2']])
|
||||
|
||||
def test_edit_message_media(self, monkeypatch, callback_query):
|
||||
def test(*args, **kwargs):
|
||||
message_media = kwargs.get('media') == [['1', '2']] or args[0] == [['1', '2']]
|
||||
try:
|
||||
id_ = kwargs['inline_message_id'] == callback_query.inline_message_id
|
||||
return id_ and message_media
|
||||
except KeyError:
|
||||
id_ = kwargs['chat_id'] == callback_query.message.chat_id
|
||||
message = kwargs['message_id'] == callback_query.message.message_id
|
||||
return id_ and message and message_media
|
||||
|
||||
monkeypatch.setattr(callback_query.bot, 'edit_message_media', test)
|
||||
assert callback_query.edit_message_media(media=[['1', '2']])
|
||||
assert callback_query.edit_message_media([['1', '2']])
|
||||
|
||||
def test_edit_message_live_location(self, monkeypatch, callback_query):
|
||||
def test(*args, **kwargs):
|
||||
latitude = kwargs.get('latitude') == 1 or args[0] == 1
|
||||
longitude = kwargs.get('longitude') == 2 or args[1] == 2
|
||||
try:
|
||||
id_ = kwargs['inline_message_id'] == callback_query.inline_message_id
|
||||
return id_ and latitude and longitude
|
||||
except KeyError:
|
||||
id_ = kwargs['chat_id'] == callback_query.message.chat_id
|
||||
message = kwargs['message_id'] == callback_query.message.message_id
|
||||
return id_ and message and latitude and longitude
|
||||
|
||||
monkeypatch.setattr(callback_query.bot, 'edit_message_live_location', test)
|
||||
assert callback_query.edit_message_live_location(latitude=1, longitude=2)
|
||||
assert callback_query.edit_message_live_location(1, 2)
|
||||
|
||||
def test_stop_message_live_location(self, monkeypatch, callback_query):
|
||||
def test(*args, **kwargs):
|
||||
try:
|
||||
id_ = kwargs['inline_message_id'] == callback_query.inline_message_id
|
||||
return id_
|
||||
except KeyError:
|
||||
id_ = kwargs['chat_id'] == callback_query.message.chat_id
|
||||
message = kwargs['message_id'] == callback_query.message.message_id
|
||||
return id_ and message
|
||||
|
||||
monkeypatch.setattr(callback_query.bot, 'stop_message_live_location', test)
|
||||
assert callback_query.stop_message_live_location()
|
||||
|
||||
def test_set_game_score(self, monkeypatch, callback_query):
|
||||
def test(*args, **kwargs):
|
||||
user_id = kwargs.get('user_id') == 1 or args[0] == 1
|
||||
score = kwargs.get('score') == 2 or args[1] == 2
|
||||
try:
|
||||
id_ = kwargs['inline_message_id'] == callback_query.inline_message_id
|
||||
return id_ and user_id and score
|
||||
except KeyError:
|
||||
id_ = kwargs['chat_id'] == callback_query.message.chat_id
|
||||
message = kwargs['message_id'] == callback_query.message.message_id
|
||||
return id_ and message and user_id and score
|
||||
|
||||
monkeypatch.setattr(callback_query.bot, 'set_game_score', test)
|
||||
assert callback_query.set_game_score(user_id=1, score=2)
|
||||
assert callback_query.set_game_score(1, 2)
|
||||
|
||||
def test_get_game_high_scores(self, monkeypatch, callback_query):
|
||||
def test(*args, **kwargs):
|
||||
user_id = kwargs.get('user_id') == 1 or args[0] == 1
|
||||
try:
|
||||
id_ = kwargs['inline_message_id'] == callback_query.inline_message_id
|
||||
return id_ and user_id
|
||||
except KeyError:
|
||||
id_ = kwargs['chat_id'] == callback_query.message.chat_id
|
||||
message = kwargs['message_id'] == callback_query.message.message_id
|
||||
return id_ and message and user_id
|
||||
|
||||
monkeypatch.setattr(callback_query.bot, 'get_game_high_scores', test)
|
||||
assert callback_query.get_game_high_scores(user_id=1)
|
||||
assert callback_query.get_game_high_scores(1)
|
||||
|
||||
def test_equality(self):
|
||||
a = CallbackQuery(self.id_, self.from_user, 'chat')
|
||||
b = CallbackQuery(self.id_, self.from_user, 'chat')
|
||||
|
|
|
@ -113,6 +113,7 @@ class TestChat:
|
|||
|
||||
monkeypatch.setattr(chat.bot, 'send_chat_action', test)
|
||||
assert chat.send_action(action=ChatAction.TYPING)
|
||||
assert chat.send_chat_action(action=ChatAction.TYPING)
|
||||
|
||||
def test_leave(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
|
@ -189,6 +190,13 @@ class TestChat:
|
|||
monkeypatch.setattr(chat.bot, 'send_message', test)
|
||||
assert chat.send_message('test')
|
||||
|
||||
def test_instance_method_send_media_group(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_media_group'
|
||||
|
||||
monkeypatch.setattr(chat.bot, 'send_media_group', test)
|
||||
assert chat.send_media_group('test_media_group')
|
||||
|
||||
def test_instance_method_send_photo(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_photo'
|
||||
|
@ -196,6 +204,13 @@ class TestChat:
|
|||
monkeypatch.setattr(chat.bot, 'send_photo', test)
|
||||
assert chat.send_photo('test_photo')
|
||||
|
||||
def test_instance_method_send_contact(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_contact'
|
||||
|
||||
monkeypatch.setattr(chat.bot, 'send_contact', test)
|
||||
assert chat.send_contact('test_contact')
|
||||
|
||||
def test_instance_method_send_audio(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_audio'
|
||||
|
@ -210,6 +225,34 @@ class TestChat:
|
|||
monkeypatch.setattr(chat.bot, 'send_document', test)
|
||||
assert chat.send_document('test_document')
|
||||
|
||||
def test_instance_method_send_dice(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_dice'
|
||||
|
||||
monkeypatch.setattr(chat.bot, 'send_dice', test)
|
||||
assert chat.send_dice('test_dice')
|
||||
|
||||
def test_instance_method_send_game(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_game'
|
||||
|
||||
monkeypatch.setattr(chat.bot, 'send_game', test)
|
||||
assert chat.send_game('test_game')
|
||||
|
||||
def test_instance_method_send_invoice(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_invoice'
|
||||
|
||||
monkeypatch.setattr(chat.bot, 'send_invoice', test)
|
||||
assert chat.send_invoice('test_invoice')
|
||||
|
||||
def test_instance_method_send_location(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_location'
|
||||
|
||||
monkeypatch.setattr(chat.bot, 'send_location', test)
|
||||
assert chat.send_location('test_location')
|
||||
|
||||
def test_instance_method_send_sticker(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_sticker'
|
||||
|
@ -217,6 +260,13 @@ class TestChat:
|
|||
monkeypatch.setattr(chat.bot, 'send_sticker', test)
|
||||
assert chat.send_sticker('test_sticker')
|
||||
|
||||
def test_instance_method_send_venue(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_venue'
|
||||
|
||||
monkeypatch.setattr(chat.bot, 'send_venue', test)
|
||||
assert chat.send_venue('test_venue')
|
||||
|
||||
def test_instance_method_send_video(self, monkeypatch, chat):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == chat.id and args[1] == 'test_video'
|
||||
|
|
|
@ -795,6 +795,47 @@ class TestMessage:
|
|||
monkeypatch.setattr(message.bot, 'edit_message_reply_markup', test)
|
||||
assert message.edit_reply_markup(reply_markup=[['1', '2']])
|
||||
|
||||
def test_edit_live_location(self, monkeypatch, message):
|
||||
def test(*args, **kwargs):
|
||||
chat_id = kwargs['chat_id'] == message.chat_id
|
||||
message_id = kwargs['message_id'] == message.message_id
|
||||
latitude = kwargs['latitude'] == 1
|
||||
longitude = kwargs['longitude'] == 2
|
||||
return chat_id and message_id and longitude and latitude
|
||||
|
||||
monkeypatch.setattr(message.bot, 'edit_message_live_location', test)
|
||||
assert message.edit_live_location(latitude=1, longitude=2)
|
||||
|
||||
def test_stop_live_location(self, monkeypatch, message):
|
||||
def test(*args, **kwargs):
|
||||
chat_id = kwargs['chat_id'] == message.chat_id
|
||||
message_id = kwargs['message_id'] == message.message_id
|
||||
return chat_id and message_id
|
||||
|
||||
monkeypatch.setattr(message.bot, 'stop_message_live_location', test)
|
||||
assert message.stop_live_location()
|
||||
|
||||
def test_set_game_score(self, monkeypatch, message):
|
||||
def test(*args, **kwargs):
|
||||
chat_id = kwargs['chat_id'] == message.chat_id
|
||||
message_id = kwargs['message_id'] == message.message_id
|
||||
user_id = kwargs['user_id'] == 1
|
||||
score = kwargs['score'] == 2
|
||||
return chat_id and message_id and user_id and score
|
||||
|
||||
monkeypatch.setattr(message.bot, 'set_game_score', test)
|
||||
assert message.set_game_score(user_id=1, score=2)
|
||||
|
||||
def test_get_game_high_scores(self, monkeypatch, message):
|
||||
def test(*args, **kwargs):
|
||||
chat_id = kwargs['chat_id'] == message.chat_id
|
||||
message_id = kwargs['message_id'] == message.message_id
|
||||
user_id = kwargs['user_id'] == 1
|
||||
return chat_id and message_id and user_id
|
||||
|
||||
monkeypatch.setattr(message.bot, 'get_game_high_scores', test)
|
||||
assert message.get_game_high_scores(user_id=1, score=2)
|
||||
|
||||
def test_delete(self, monkeypatch, message):
|
||||
def test(*args, **kwargs):
|
||||
chat_id = kwargs['chat_id'] == message.chat_id
|
||||
|
@ -804,6 +845,24 @@ class TestMessage:
|
|||
monkeypatch.setattr(message.bot, 'delete_message', test)
|
||||
assert message.delete()
|
||||
|
||||
def test_stop_poll(self, monkeypatch, message):
|
||||
def test(*args, **kwargs):
|
||||
chat_id = kwargs['chat_id'] == message.chat_id
|
||||
message_id = kwargs['message_id'] == message.message_id
|
||||
return chat_id and message_id
|
||||
|
||||
monkeypatch.setattr(message.bot, 'stop_poll', test)
|
||||
assert message.stop_poll()
|
||||
|
||||
def test_pin(self, monkeypatch, message):
|
||||
def test(*args, **kwargs):
|
||||
chat_id = kwargs['chat_id'] == message.chat_id
|
||||
message_id = kwargs['message_id'] == message.message_id
|
||||
return chat_id and message_id
|
||||
|
||||
monkeypatch.setattr(message.bot, 'pin_chat_message', test)
|
||||
assert message.pin()
|
||||
|
||||
def test_default_quote(self, message):
|
||||
kwargs = {}
|
||||
|
||||
|
|
|
@ -141,6 +141,13 @@ class TestUser:
|
|||
monkeypatch.setattr(user.bot, 'send_photo', test)
|
||||
assert user.send_photo('test_photo')
|
||||
|
||||
def test_instance_method_send_media_group(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_media_group'
|
||||
|
||||
monkeypatch.setattr(user.bot, 'send_media_group', test)
|
||||
assert user.send_media_group('test_media_group')
|
||||
|
||||
def test_instance_method_send_audio(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_audio'
|
||||
|
@ -148,6 +155,27 @@ class TestUser:
|
|||
monkeypatch.setattr(user.bot, 'send_audio', test)
|
||||
assert user.send_audio('test_audio')
|
||||
|
||||
def test_instance_method_send_chat_action(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_chat_action'
|
||||
|
||||
monkeypatch.setattr(user.bot, 'send_chat_action', test)
|
||||
assert user.send_chat_action('test_chat_action')
|
||||
|
||||
def test_instance_method_send_contact(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_contact'
|
||||
|
||||
monkeypatch.setattr(user.bot, 'send_contact', test)
|
||||
assert user.send_contact('test_contact')
|
||||
|
||||
def test_instance_method_send_dice(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_dice'
|
||||
|
||||
monkeypatch.setattr(user.bot, 'send_dice', test)
|
||||
assert user.send_dice('test_dice')
|
||||
|
||||
def test_instance_method_send_document(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_document'
|
||||
|
@ -155,6 +183,27 @@ class TestUser:
|
|||
monkeypatch.setattr(user.bot, 'send_document', test)
|
||||
assert user.send_document('test_document')
|
||||
|
||||
def test_instance_method_send_game(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_game'
|
||||
|
||||
monkeypatch.setattr(user.bot, 'send_game', test)
|
||||
assert user.send_game('test_game')
|
||||
|
||||
def test_instance_method_send_invoice(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_invoice'
|
||||
|
||||
monkeypatch.setattr(user.bot, 'send_invoice', test)
|
||||
assert user.send_invoice('test_invoice')
|
||||
|
||||
def test_instance_method_send_location(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_location'
|
||||
|
||||
monkeypatch.setattr(user.bot, 'send_location', test)
|
||||
assert user.send_location('test_location')
|
||||
|
||||
def test_instance_method_send_sticker(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_sticker'
|
||||
|
@ -169,6 +218,13 @@ class TestUser:
|
|||
monkeypatch.setattr(user.bot, 'send_video', test)
|
||||
assert user.send_video('test_video')
|
||||
|
||||
def test_instance_method_send_venue(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_venue'
|
||||
|
||||
monkeypatch.setattr(user.bot, 'send_venue', test)
|
||||
assert user.send_venue('test_venue')
|
||||
|
||||
def test_instance_method_send_video_note(self, monkeypatch, user):
|
||||
def test(*args, **kwargs):
|
||||
return args[0] == user.id and args[1] == 'test_video_note'
|
||||
|
|
Loading…
Add table
Reference in a new issue