From 0518df40eb38a81596c7d4c864254c5405703be4 Mon Sep 17 00:00:00 2001 From: Yasir Aris Date: Fri, 3 Jan 2025 12:48:10 +0700 Subject: [PATCH] pyrofork: Add start bot method Signed-off-by: Yasir Aris --- pyrogram/methods/messages/__init__.py | 4 +- pyrogram/methods/messages/start_bot.py | 78 ++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 pyrogram/methods/messages/start_bot.py diff --git a/pyrogram/methods/messages/__init__.py b/pyrogram/methods/messages/__init__.py index a29275c4d..ab66ffac6 100644 --- a/pyrogram/methods/messages/__init__.py +++ b/pyrogram/methods/messages/__init__.py @@ -70,6 +70,7 @@ from .send_video_note import SendVideoNote from .send_voice import SendVoice from .send_web_page import SendWebPage +from .start_bot import StartBot from .stop_poll import StopPoll from .stream_media import StreamMedia from .vote_poll import VotePoll @@ -132,6 +133,7 @@ class Messages( GetDiscussionRepliesCount, StreamMedia, GetCustomEmojiStickers, - TranslateText + TranslateText, + StartBot ): pass diff --git a/pyrogram/methods/messages/start_bot.py b/pyrogram/methods/messages/start_bot.py new file mode 100644 index 000000000..52a436a37 --- /dev/null +++ b/pyrogram/methods/messages/start_bot.py @@ -0,0 +1,78 @@ +# Pyrofork - Telegram MTProto API Client Library for Python +# Copyright (C) 2017-present Dan +# Copyright (C) 2022-present Mayuri-Chan +# +# This file is part of Pyrofork. +# +# Pyrofork 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. +# +# Pyrofork 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 Pyrofork. If not, see . + +from typing import Union + +import pyrogram +from pyrogram import raw +from pyrogram import types + + +class StartBot: + async def start_bot( + self: "pyrogram.Client", + chat_id: Union[int, str], + param: str = "" + ) -> "types.Message": + """Start bot + + .. include:: /_includes/usable-by/users.rst + + Parameters: + chat_id (``int`` | ``str``): + Unique identifier of the bot you want to be started. You can specify + a @username (str) or a bot ID (int). + + param (``str``): + Text of the deep linking parameter (up to 64 characters). + Defaults to "" (empty string). + + Returns: + :obj:`~pyrogram.types.Message`: On success, the sent message is returned. + + Example: + .. code-block:: python + + # Start bot + await app.start_bot("pyrogrambot") + + # Start bot with param + await app.start_bot("pyrogrambot", "ref123456") + """ + if not param: + return await self.send_message(chat_id, "/start") + + peer = await self.resolve_peer(chat_id) + + r = await self.invoke( + raw.functions.messages.StartBot( + bot=peer, + peer=peer, + random_id=self.rnd_id(), + start_param=param + ) + ) + + for i in r.updates: + if isinstance(i, raw.types.UpdateNewMessage): + return await types.Message._parse( + self, i.message, + {i.id: i for i in r.users}, + {i.id: i for i in r.chats} + ) \ No newline at end of file