mirror of
https://github.com/pyrogram/pyrogram
synced 2025-09-02 07:15:23 +00:00
@@ -288,6 +288,8 @@ def pyrogram_api():
|
|||||||
set_game_score
|
set_game_score
|
||||||
get_game_high_scores
|
get_game_high_scores
|
||||||
set_bot_commands
|
set_bot_commands
|
||||||
|
get_bot_commands
|
||||||
|
delete_bot_commands
|
||||||
""",
|
""",
|
||||||
authorization="""
|
authorization="""
|
||||||
Authorization
|
Authorization
|
||||||
@@ -395,8 +397,8 @@ def pyrogram_api():
|
|||||||
VoiceChatEnded
|
VoiceChatEnded
|
||||||
VoiceChatMembersInvited
|
VoiceChatMembersInvited
|
||||||
""",
|
""",
|
||||||
bots_keyboard="""
|
bot_keyboards="""
|
||||||
Bots & Keyboards
|
Bot keyboards
|
||||||
ReplyKeyboardMarkup
|
ReplyKeyboardMarkup
|
||||||
KeyboardButton
|
KeyboardButton
|
||||||
ReplyKeyboardRemove
|
ReplyKeyboardRemove
|
||||||
@@ -407,7 +409,18 @@ def pyrogram_api():
|
|||||||
CallbackQuery
|
CallbackQuery
|
||||||
GameHighScore
|
GameHighScore
|
||||||
CallbackGame
|
CallbackGame
|
||||||
|
""",
|
||||||
|
bot_commands="""
|
||||||
|
Bot commands
|
||||||
BotCommand
|
BotCommand
|
||||||
|
BotCommandScope
|
||||||
|
BotCommandScopeDefault
|
||||||
|
BotCommandScopeAllPrivateChats
|
||||||
|
BotCommandScopeAllGroupChats
|
||||||
|
BotCommandScopeAllChatAdministrators
|
||||||
|
BotCommandScopeChat
|
||||||
|
BotCommandScopeChatAdministrators
|
||||||
|
BotCommandScopeChatMember
|
||||||
""",
|
""",
|
||||||
input_media="""
|
input_media="""
|
||||||
Input Media
|
Input Media
|
||||||
|
21
compiler/docs/template/types.rst
vendored
21
compiler/docs/template/types.rst
vendored
@@ -51,18 +51,31 @@ Messages & Media
|
|||||||
|
|
||||||
{messages_media}
|
{messages_media}
|
||||||
|
|
||||||
Bots & Keyboards
|
Bot keyboards
|
||||||
----------------
|
-------------
|
||||||
|
|
||||||
.. autosummary::
|
.. autosummary::
|
||||||
:nosignatures:
|
:nosignatures:
|
||||||
|
|
||||||
{bots_keyboard}
|
{bot_keyboards}
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:hidden:
|
:hidden:
|
||||||
|
|
||||||
{bots_keyboard}
|
{bot_keyboards}
|
||||||
|
|
||||||
|
Bot commands
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. autosummary::
|
||||||
|
:nosignatures:
|
||||||
|
|
||||||
|
{bot_commands}
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:hidden:
|
||||||
|
|
||||||
|
{bot_commands}
|
||||||
|
|
||||||
Input Media
|
Input Media
|
||||||
-----------
|
-----------
|
||||||
|
@@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
from .answer_callback_query import AnswerCallbackQuery
|
from .answer_callback_query import AnswerCallbackQuery
|
||||||
from .answer_inline_query import AnswerInlineQuery
|
from .answer_inline_query import AnswerInlineQuery
|
||||||
|
from .delete_bot_commands import DeleteBotCommands
|
||||||
|
from .get_bot_commands import GetBotCommands
|
||||||
from .get_game_high_scores import GetGameHighScores
|
from .get_game_high_scores import GetGameHighScores
|
||||||
from .get_inline_bot_results import GetInlineBotResults
|
from .get_inline_bot_results import GetInlineBotResults
|
||||||
from .request_callback_answer import RequestCallbackAnswer
|
from .request_callback_answer import RequestCallbackAnswer
|
||||||
@@ -36,6 +38,8 @@ class Bots(
|
|||||||
SendGame,
|
SendGame,
|
||||||
SetGameScore,
|
SetGameScore,
|
||||||
GetGameHighScores,
|
GetGameHighScores,
|
||||||
SetBotCommands
|
SetBotCommands,
|
||||||
|
GetBotCommands,
|
||||||
|
DeleteBotCommands
|
||||||
):
|
):
|
||||||
pass
|
pass
|
||||||
|
61
pyrogram/methods/bots/delete_bot_commands.py
Normal file
61
pyrogram/methods/bots/delete_bot_commands.py
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# 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/>.
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw, types
|
||||||
|
from pyrogram.scaffold import Scaffold
|
||||||
|
|
||||||
|
|
||||||
|
class DeleteBotCommands(Scaffold):
|
||||||
|
async def delete_bot_commands(
|
||||||
|
self: "pyrogram.Client",
|
||||||
|
scope: "types.BotCommandScope" = types.BotCommandScopeDefault(),
|
||||||
|
language_code: str = "",
|
||||||
|
):
|
||||||
|
"""Delete the list of the bot's commands for the given scope and user language.
|
||||||
|
After deletion, higher level commands will be shown to affected users.
|
||||||
|
|
||||||
|
The commands passed will overwrite any command set previously.
|
||||||
|
This method can be used by the own bot only.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
scope (:obj:`~pyrogram.types.BotCommandScope`, *optional*):
|
||||||
|
An object describing the scope of users for which the commands are relevant.
|
||||||
|
Defaults to :obj:`~pyrogram.types.BotCommandScopeDefault`.
|
||||||
|
|
||||||
|
language_code (``str``, *optional*):
|
||||||
|
A two-letter ISO 639-1 language code.
|
||||||
|
If empty, commands will be applied to all users from the given scope, for whose language there are no
|
||||||
|
dedicated commands.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
``bool``: On success, True is returned.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# Delete commands
|
||||||
|
app.delete_bot_commands()
|
||||||
|
"""
|
||||||
|
|
||||||
|
return await self.send(
|
||||||
|
raw.functions.bots.ResetBotCommands(
|
||||||
|
scope=await scope.write(self),
|
||||||
|
lang_code=language_code,
|
||||||
|
)
|
||||||
|
)
|
62
pyrogram/methods/bots/get_bot_commands.py
Normal file
62
pyrogram/methods/bots/get_bot_commands.py
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# 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/>.
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw, types
|
||||||
|
from pyrogram.scaffold import Scaffold
|
||||||
|
|
||||||
|
|
||||||
|
class GetBotCommands(Scaffold):
|
||||||
|
async def get_bot_commands(
|
||||||
|
self: "pyrogram.Client",
|
||||||
|
scope: "types.BotCommandScope" = types.BotCommandScopeDefault(),
|
||||||
|
language_code: str = "",
|
||||||
|
):
|
||||||
|
"""Get the current list of the bot's commands for the given scope and user language.
|
||||||
|
Returns Array of BotCommand on success. If commands aren't set, an empty list is returned.
|
||||||
|
|
||||||
|
The commands passed will overwrite any command set previously.
|
||||||
|
This method can be used by the own bot only.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
scope (:obj:`~pyrogram.types.BotCommandScope`, *optional*):
|
||||||
|
An object describing the scope of users for which the commands are relevant.
|
||||||
|
Defaults to :obj:`~pyrogram.types.BotCommandScopeDefault`.
|
||||||
|
|
||||||
|
language_code (``str``, *optional*):
|
||||||
|
A two-letter ISO 639-1 language code.
|
||||||
|
If empty, commands will be applied to all users from the given scope, for whose language there are no
|
||||||
|
dedicated commands.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
List of :obj:`~pyrogram.types.BotCommand`: On success, the list of bot commands is returned.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# Get commands
|
||||||
|
commands = app.get_bot_commands()
|
||||||
|
print(commands)
|
||||||
|
"""
|
||||||
|
|
||||||
|
return await self.send(
|
||||||
|
raw.functions.bots.GetBotCommands(
|
||||||
|
scope=await scope.write(self),
|
||||||
|
lang_code=language_code,
|
||||||
|
)
|
||||||
|
)
|
@@ -16,22 +16,21 @@
|
|||||||
# 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 typing import List, Optional
|
from typing import List
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
from pyrogram import raw, types
|
from pyrogram import raw, types
|
||||||
from pyrogram.scaffold import Scaffold
|
from pyrogram.scaffold import Scaffold
|
||||||
|
|
||||||
|
|
||||||
class SetBotCommands(Scaffold):
|
class SetBotCommands(Scaffold):
|
||||||
async def set_bot_commands(
|
async def set_bot_commands(
|
||||||
self,
|
self: "pyrogram.Client",
|
||||||
commands: Optional[List[types.BotCommand]],
|
commands: List["types.BotCommand"],
|
||||||
scope: types.BotCommandScope = types.BotCommandScope(
|
scope: "types.BotCommandScope" = types.BotCommandScopeDefault(),
|
||||||
types.BotCommandScope.DEFAULT
|
language_code: str = "",
|
||||||
),
|
|
||||||
lang_code: str = "",
|
|
||||||
):
|
):
|
||||||
"""Set the bot commands list.
|
"""Set the list of the bot's commands.
|
||||||
|
|
||||||
The commands passed will overwrite any command set previously.
|
The commands passed will overwrite any command set previously.
|
||||||
This method can be used by the own bot only.
|
This method can be used by the own bot only.
|
||||||
@@ -39,10 +38,19 @@ class SetBotCommands(Scaffold):
|
|||||||
Parameters:
|
Parameters:
|
||||||
commands (List of :obj:`~pyrogram.types.BotCommand`):
|
commands (List of :obj:`~pyrogram.types.BotCommand`):
|
||||||
A list of bot commands.
|
A list of bot commands.
|
||||||
Pass None to remove all commands.
|
At most 100 commands can be specified.
|
||||||
|
|
||||||
|
scope (:obj:`~pyrogram.types.BotCommandScope`, *optional*):
|
||||||
|
An object describing the scope of users for which the commands are relevant.
|
||||||
|
Defaults to :obj:`~pyrogram.types.BotCommandScopeDefault`.
|
||||||
|
|
||||||
|
language_code (``str``, *optional*):
|
||||||
|
A two-letter ISO 639-1 language code.
|
||||||
|
If empty, commands will be applied to all users from the given scope, for whose language there are no
|
||||||
|
dedicated commands.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
``bool``: True on success, False otherwise.
|
``bool``: On success, True is returned.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
@@ -53,15 +61,12 @@ class SetBotCommands(Scaffold):
|
|||||||
app.set_bot_commands([
|
app.set_bot_commands([
|
||||||
BotCommand("start", "Start the bot"),
|
BotCommand("start", "Start the bot"),
|
||||||
BotCommand("settings", "Bot settings")])
|
BotCommand("settings", "Bot settings")])
|
||||||
|
|
||||||
# Remove commands
|
|
||||||
app.set_bot_commands(None)
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return await self.send(
|
return await self.send(
|
||||||
raw.functions.bots.SetBotCommands(
|
raw.functions.bots.SetBotCommands(
|
||||||
commands=[c.write() for c in commands or []],
|
commands=[c.write() for c in commands],
|
||||||
scope=scope.write(),
|
scope=await scope.write(self),
|
||||||
lang_code=lang_code,
|
lang_code=language_code,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@@ -16,7 +16,15 @@
|
|||||||
# 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 .bot_command import BotCommand, BotCommandScope
|
from .bot_command import BotCommand
|
||||||
|
from .bot_command_scope import BotCommandScope
|
||||||
|
from .bot_command_scope_all_chat_administrators import BotCommandScopeAllChatAdministrators
|
||||||
|
from .bot_command_scope_all_group_chats import BotCommandScopeAllGroupChats
|
||||||
|
from .bot_command_scope_all_private_chats import BotCommandScopeAllPrivateChats
|
||||||
|
from .bot_command_scope_chat import BotCommandScopeChat
|
||||||
|
from .bot_command_scope_chat_administrators import BotCommandScopeChatAdministrators
|
||||||
|
from .bot_command_scope_chat_member import BotCommandScopeChatMember
|
||||||
|
from .bot_command_scope_default import BotCommandScopeDefault
|
||||||
from .callback_game import CallbackGame
|
from .callback_game import CallbackGame
|
||||||
from .callback_query import CallbackQuery
|
from .callback_query import CallbackQuery
|
||||||
from .force_reply import ForceReply
|
from .force_reply import ForceReply
|
||||||
@@ -41,4 +49,11 @@ __all__ = [
|
|||||||
"LoginUrl",
|
"LoginUrl",
|
||||||
"BotCommand",
|
"BotCommand",
|
||||||
"BotCommandScope",
|
"BotCommandScope",
|
||||||
|
"BotCommandScopeAllChatAdministrators",
|
||||||
|
"BotCommandScopeAllGroupChats",
|
||||||
|
"BotCommandScopeAllPrivateChats",
|
||||||
|
"BotCommandScopeChat",
|
||||||
|
"BotCommandScopeChatAdministrators",
|
||||||
|
"BotCommandScopeChatMember",
|
||||||
|
"BotCommandScopeDefault",
|
||||||
]
|
]
|
||||||
|
@@ -26,10 +26,11 @@ class BotCommand(Object):
|
|||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
command (``str``):
|
command (``str``):
|
||||||
The bot command, for example: "/start".
|
Text of the command; 1-32 characters.
|
||||||
|
Can contain only lowercase English letters, digits and underscores.
|
||||||
|
|
||||||
description (``str``):
|
description (``str``):
|
||||||
Description of the bot command.
|
Description of the command; 1-256 characters.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, command: str, description: str):
|
def __init__(self, command: str, description: str):
|
||||||
@@ -38,77 +39,15 @@ class BotCommand(Object):
|
|||||||
self.command = command
|
self.command = command
|
||||||
self.description = description
|
self.description = description
|
||||||
|
|
||||||
def write(self):
|
def write(self) -> "raw.types.BotCommand":
|
||||||
return raw.types.BotCommand(
|
return raw.types.BotCommand(
|
||||||
command=self.command,
|
command=self.command,
|
||||||
description=self.description,
|
description=self.description,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
class BotCommandScope(Object):
|
def read(c: "raw.types.BotCommand") -> "BotCommand":
|
||||||
"""
|
return BotCommand(
|
||||||
Represents a scope where the bot commands, specified
|
command=c.command,
|
||||||
using bots.setBotCommands will be valid.
|
description=c.description
|
||||||
|
)
|
||||||
Parameters:
|
|
||||||
scope (``str``):
|
|
||||||
|
|
||||||
- DEFAULT: The commands will be valid in all chats (default value)
|
|
||||||
|
|
||||||
- PRIVATE: The specified bot commands will only be valid in all private
|
|
||||||
chats with users.
|
|
||||||
|
|
||||||
- GROUP: The specified bot commands will be valid in all groups and supergroups
|
|
||||||
|
|
||||||
- GROUP_ADMINS: The specified bot commands will be valid only for chat
|
|
||||||
administrators, in all groups and supergroups.
|
|
||||||
|
|
||||||
- PEER: The specified bot commands will be valid only in a specific dialog
|
|
||||||
|
|
||||||
- PEER_ADMINS: The specified bot commands will be valid for all admins of the
|
|
||||||
specified group or supergroup.
|
|
||||||
|
|
||||||
- PEER_USER: The specified bot commands will be valid only for a specific user
|
|
||||||
in the specified chat
|
|
||||||
"""
|
|
||||||
|
|
||||||
DEFAULT = "default"
|
|
||||||
PRIVATE = "users"
|
|
||||||
GROUP = "chats"
|
|
||||||
GROUP_ADMINS = "chat_admins"
|
|
||||||
PEER = "peer"
|
|
||||||
PEER_ADMINS = "peer_admins"
|
|
||||||
PEER_USER = "peer_user"
|
|
||||||
|
|
||||||
raw_scopes = {
|
|
||||||
DEFAULT: raw.types.BotCommandScopeDefault,
|
|
||||||
PRIVATE: raw.types.BotCommandScopeUsers,
|
|
||||||
GROUP: raw.types.BotCommandScopeChats,
|
|
||||||
GROUP_ADMINS: raw.types.BotCommandScopeChatAdmins,
|
|
||||||
PEER: lambda peer: raw.types.BotCommandScopePeer(peer),
|
|
||||||
PEER_ADMINS: lambda peer: raw.types.BotCommandScopePeerAdmins(peer),
|
|
||||||
PEER_USER: lambda peer, user_id: raw.types.BotCommandScopePeerUser(
|
|
||||||
peer, user_id
|
|
||||||
),
|
|
||||||
}
|
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
scope: str,
|
|
||||||
peer: raw.types.InputPeerUser = None,
|
|
||||||
user_id: raw.types.InputUser = None,
|
|
||||||
):
|
|
||||||
super().__init__()
|
|
||||||
self.scope = scope
|
|
||||||
self.peer = peer
|
|
||||||
self.user_id = user_id
|
|
||||||
|
|
||||||
def write(self):
|
|
||||||
|
|
||||||
if self.scope in ["peer", "peer_admins"]:
|
|
||||||
return self.raw_scopes[self.scope](self.peer)
|
|
||||||
|
|
||||||
elif self.scope == "peer_user":
|
|
||||||
return self.raw_scopes[self.scopes](self.peer, self.user_id)
|
|
||||||
|
|
||||||
return self.raw_scopes[self.scope]()
|
|
||||||
|
73
pyrogram/types/bots_and_keyboards/bot_command_scope.py
Normal file
73
pyrogram/types/bots_and_keyboards/bot_command_scope.py
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# 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/>.
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from ..object import Object
|
||||||
|
|
||||||
|
|
||||||
|
class BotCommandScope(Object):
|
||||||
|
"""Represents the scope to which bot commands are applied.
|
||||||
|
|
||||||
|
Currently, the following 7 scopes are supported:
|
||||||
|
|
||||||
|
- :obj:`~pyrogram.types.BotCommandScopeDefault`
|
||||||
|
- :obj:`~pyrogram.types.BotCommandScopeAllPrivateChats`
|
||||||
|
- :obj:`~pyrogram.types.BotCommandScopeAllGroupChats`
|
||||||
|
- :obj:`~pyrogram.types.BotCommandScopeAllChatAdministrators`
|
||||||
|
- :obj:`~pyrogram.types.BotCommandScopeChat`
|
||||||
|
- :obj:`~pyrogram.types.BotCommandScopeChatAdministrators`
|
||||||
|
- :obj:`~pyrogram.types.BotCommandScopeChatMember`
|
||||||
|
|
||||||
|
**Determining list of commands**
|
||||||
|
|
||||||
|
The following algorithm is used to determine the list of commands for a particular user viewing the bot menu.
|
||||||
|
The first list of commands which is set is returned:
|
||||||
|
|
||||||
|
**Commands in the chat with the bot**:
|
||||||
|
|
||||||
|
- BotCommandScopeChat + language_code
|
||||||
|
- BotCommandScopeChat
|
||||||
|
- BotCommandScopeAllPrivateChats + language_code
|
||||||
|
- BotCommandScopeAllPrivateChats
|
||||||
|
- BotCommandScopeDefault + language_code
|
||||||
|
- BotCommandScopeDefault
|
||||||
|
|
||||||
|
**Commands in group and supergroup chats**
|
||||||
|
|
||||||
|
- BotCommandScopeChatMember + language_code
|
||||||
|
- BotCommandScopeChatMember
|
||||||
|
- BotCommandScopeChatAdministrators + language_code (administrators only)
|
||||||
|
- BotCommandScopeChatAdministrators (administrators only)
|
||||||
|
- BotCommandScopeChat + language_code
|
||||||
|
- BotCommandScopeChat
|
||||||
|
- BotCommandScopeAllChatAdministrators + language_code (administrators only)
|
||||||
|
- BotCommandScopeAllChatAdministrators (administrators only)
|
||||||
|
- BotCommandScopeAllGroupChats + language_code
|
||||||
|
- BotCommandScopeAllGroupChats
|
||||||
|
- BotCommandScopeDefault + language_code
|
||||||
|
- BotCommandScopeDefault
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, type: str):
|
||||||
|
super().__init__()
|
||||||
|
|
||||||
|
self.type = type
|
||||||
|
|
||||||
|
async def write(self, client: "pyrogram.Client") -> "raw.base.BotCommandScope":
|
||||||
|
raise NotImplementedError
|
@@ -0,0 +1,32 @@
|
|||||||
|
# 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/>.
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from .bot_command_scope import BotCommandScope
|
||||||
|
|
||||||
|
|
||||||
|
class BotCommandScopeAllChatAdministrators(BotCommandScope):
|
||||||
|
"""Represents the scope of bot commands, covering all group and supergroup chat administrators.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__("all_chat_administrators")
|
||||||
|
|
||||||
|
async def write(self, client: "pyrogram.Client") -> "raw.base.BotCommandScope":
|
||||||
|
return raw.types.BotCommandScopeChatAdmins()
|
@@ -0,0 +1,32 @@
|
|||||||
|
# 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/>.
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from .bot_command_scope import BotCommandScope
|
||||||
|
|
||||||
|
|
||||||
|
class BotCommandScopeAllGroupChats(BotCommandScope):
|
||||||
|
"""Represents the scope of bot commands, covering all group and supergroup chats.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__("all_group_chats")
|
||||||
|
|
||||||
|
async def write(self, client: "pyrogram.Client") -> "raw.base.BotCommandScope":
|
||||||
|
return raw.types.BotCommandScopeChats()
|
@@ -0,0 +1,32 @@
|
|||||||
|
# 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/>.
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from .bot_command_scope import BotCommandScope
|
||||||
|
|
||||||
|
|
||||||
|
class BotCommandScopeAllPrivateChats(BotCommandScope):
|
||||||
|
"""Represents the scope of bot commands, covering all private chats.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__("all_private_chats")
|
||||||
|
|
||||||
|
async def write(self, client: "pyrogram.Client") -> "raw.base.BotCommandScope":
|
||||||
|
return raw.types.BotCommandScopeUsers()
|
43
pyrogram/types/bots_and_keyboards/bot_command_scope_chat.py
Normal file
43
pyrogram/types/bots_and_keyboards/bot_command_scope_chat.py
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# 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 typing import Union
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from .bot_command_scope import BotCommandScope
|
||||||
|
|
||||||
|
|
||||||
|
class BotCommandScopeChat(BotCommandScope):
|
||||||
|
"""Represents the scope of bot commands, covering a specific chat.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
chat_id (``int`` | ``str``):
|
||||||
|
Unique identifier for the target chat or username of the target supergroup (in the format
|
||||||
|
@supergroupusername).
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, chat_id: Union[int, str]):
|
||||||
|
super().__init__("chat")
|
||||||
|
|
||||||
|
self.chat_id = chat_id
|
||||||
|
|
||||||
|
async def write(self, client: "pyrogram.Client") -> "raw.base.BotCommandScope":
|
||||||
|
return raw.types.BotCommandScopePeer(
|
||||||
|
peer=await client.resolve_peer(self.chat_id)
|
||||||
|
)
|
@@ -0,0 +1,43 @@
|
|||||||
|
# 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 typing import Union
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from .bot_command_scope import BotCommandScope
|
||||||
|
|
||||||
|
|
||||||
|
class BotCommandScopeChatAdministrators(BotCommandScope):
|
||||||
|
"""Represents the scope of bot commands, covering all administrators of a specific group or supergroup chat.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
chat_id (``int`` | ``str``):
|
||||||
|
Unique identifier for the target chat or username of the target supergroup (in the format
|
||||||
|
@supergroupusername).
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, chat_id: Union[int, str]):
|
||||||
|
super().__init__("chat_administrators")
|
||||||
|
|
||||||
|
self.chat_id = chat_id
|
||||||
|
|
||||||
|
async def write(self, client: "pyrogram.Client") -> "raw.base.BotCommandScope":
|
||||||
|
return raw.types.BotCommandScopePeerAdmins(
|
||||||
|
peer=await client.resolve_peer(self.chat_id)
|
||||||
|
)
|
@@ -0,0 +1,48 @@
|
|||||||
|
# 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 typing import Union
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from .bot_command_scope import BotCommandScope
|
||||||
|
|
||||||
|
|
||||||
|
class BotCommandScopeChatMember(BotCommandScope):
|
||||||
|
"""Represents the scope of bot commands, covering a specific member of a group or supergroup chat.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
chat_id (``int`` | ``str``):
|
||||||
|
Unique identifier for the target chat or username of the target supergroup (in the format
|
||||||
|
@supergroupusername).
|
||||||
|
|
||||||
|
user_id (``int`` | ``str``):
|
||||||
|
Unique identifier of the target user.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, chat_id: Union[int, str], user_id: Union[int, str]):
|
||||||
|
super().__init__("chat_member")
|
||||||
|
|
||||||
|
self.chat_id = chat_id
|
||||||
|
self.user_id = user_id
|
||||||
|
|
||||||
|
async def write(self, client: "pyrogram.Client") -> "raw.base.BotCommandScope":
|
||||||
|
return raw.types.BotCommandScopePeerUser(
|
||||||
|
peer=await client.resolve_peer(self.chat_id),
|
||||||
|
user_id=await client.resolve_peer(self.user_id)
|
||||||
|
)
|
@@ -0,0 +1,33 @@
|
|||||||
|
# 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/>.
|
||||||
|
|
||||||
|
import pyrogram
|
||||||
|
from pyrogram import raw
|
||||||
|
from .bot_command_scope import BotCommandScope
|
||||||
|
|
||||||
|
|
||||||
|
class BotCommandScopeDefault(BotCommandScope):
|
||||||
|
"""Represents the default scope of bot commands.
|
||||||
|
Default commands are used if no commands with a narrower scope are specified for the user.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__("default")
|
||||||
|
|
||||||
|
async def write(self, client: "pyrogram.Client") -> "raw.base.BotCommandScope":
|
||||||
|
return raw.types.BotCommandScopeDefault()
|
Reference in New Issue
Block a user