diff --git a/telebot/__init__.py b/telebot/__init__.py index 549a69d..c1aaec0 100644 --- a/telebot/__init__.py +++ b/telebot/__init__.py @@ -3462,6 +3462,22 @@ class TeleBot: return apihelper.set_my_name(self.token, name, language_code) + def get_my_name(self, language_code: Optional[str]=None): + """ + Use this method to get the current bot name for the given user language. + Returns BotName on success. + + Telegram documentation: https://core.telegram.org/bots/api#getmyname + + :param language_code: Optional. A two-letter ISO 639-1 language code or an empty string + :type language_code: :obj:`str` + + :return: :class:`telebot.types.BotName` + """ + + result = apihelper.get_my_name(self.token, language_code) + return types.BotName.de_json(result) + def set_my_description(self, description: Optional[str]=None, language_code: Optional[str]=None): """ Use this method to change the bot's description, which is shown in diff --git a/telebot/apihelper.py b/telebot/apihelper.py index 8d2b1e7..57102f9 100644 --- a/telebot/apihelper.py +++ b/telebot/apihelper.py @@ -1205,6 +1205,13 @@ def set_my_name(token, name=None, language_code=None): payload['language_code'] = language_code return _make_request(token, method_url, params=payload, method='post') +def get_my_name(token, language_code=None): + method_url = r'getMyName' + payload = {} + if language_code is not None: + payload['language_code'] = language_code + return _make_request(token, method_url, params=payload) + def set_chat_menu_button(token, chat_id=None, menu_button=None): method_url = r'setChatMenuButton' payload = {} diff --git a/telebot/async_telebot.py b/telebot/async_telebot.py index 242e74c..a9d2ac8 100644 --- a/telebot/async_telebot.py +++ b/telebot/async_telebot.py @@ -4379,6 +4379,22 @@ class AsyncTeleBot: return await asyncio_helper.set_my_name(self.token, name, language_code) + async def get_my_name(self, language_code: Optional[str]=None): + """ + Use this method to get the current bot name for the given user language. + Returns BotName on success. + + Telegram documentation: https://core.telegram.org/bots/api#getmyname + + :param language_code: Optional. A two-letter ISO 639-1 language code or an empty string + :type language_code: :obj:`str` + + :return: :class:`telebot.types.BotName` + """ + + result = await asyncio_helper.get_my_name(self.token, language_code) + return types.BotName.de_json(result) + async def set_chat_menu_button(self, chat_id: Union[int, str]=None, menu_button: types.MenuButton=None) -> bool: """ diff --git a/telebot/asyncio_helper.py b/telebot/asyncio_helper.py index 804e516..507aec0 100644 --- a/telebot/asyncio_helper.py +++ b/telebot/asyncio_helper.py @@ -1193,6 +1193,13 @@ async def set_my_name(token, name=None, language_code=None): payload['language_code'] = language_code return await _process_request(token, method_url, params=payload, method='post') +async def get_my_name(token, language_code=None): + method_url = r'getMyName' + payload = {} + if language_code is not None: + payload['language_code'] = language_code + return await _process_request(token, method_url, params=payload) + async def set_chat_menu_button(token, chat_id=None, menu_button=None): method_url = r'setChatMenuButton' payload = {} diff --git a/telebot/types.py b/telebot/types.py index 53b692d..8a4460e 100644 --- a/telebot/types.py +++ b/telebot/types.py @@ -7658,3 +7658,27 @@ class SwitchInlineQueryChosenChat(JsonDeserializable, Dictionaryable, JsonSerial def to_json(self): return json.dumps(self.to_dict()) + + +class BotName(JsonDeserializable): + """ + This object represents a bot name. + + Telegram Documentation: https://core.telegram.org/bots/api#botname + + :param name: The bot name + :type name: :obj:`str` + + :return: Instance of the class + :rtype: :class:`BotName` + """ + + @classmethod + def de_json(cls, json_string): + if json_string is None: + return None + obj = cls.check_json(json_string) + return cls(**obj) + + def __init__(self, name: str): + self.name: str = name \ No newline at end of file