diff --git a/aiogram/bot/base.py b/aiogram/bot/base.py index 0617dee9..baa74b84 100644 --- a/aiogram/bot/base.py +++ b/aiogram/bot/base.py @@ -4,6 +4,7 @@ from typing import Dict, List, Optional, Union import aiohttp +from aiogram.types import ParseMode from . import api from ..types import base from ..utils import json @@ -18,7 +19,8 @@ class BaseBot: loop: Optional[Union[asyncio.BaseEventLoop, asyncio.AbstractEventLoop]] = None, connections_limit: Optional[base.Integer] = 10, proxy: str = None, proxy_auth: Optional[aiohttp.BasicAuth] = None, - validate_token: Optional[bool] = True): + validate_token: Optional[bool] = True, + parse_mode=None): """ Instructions how to get Bot token is found here: https://core.telegram.org/bots#3-how-do-i-create-a-bot @@ -34,6 +36,8 @@ class BaseBot: :type proxy_auth: Optional :obj:`aiohttp.BasicAuth` :param validate_token: Validate token. :type validate_token: :obj:`bool` + :param parse_mode: You can set default parse mode + :type parse_mode: :obj:`str` :raise: when token is invalid throw an :obj:`aiogram.utils.exceptions.ValidationError` """ # Authentication @@ -61,6 +65,8 @@ class BaseBot: # Data stored in bot instance self._data = {} + self.parse_mode = parse_mode + def __del__(self): self.close() @@ -223,3 +229,23 @@ class BaseBot: :return: value or default value """ return self._data.get(key, default) + + @property + def parse_mode(self): + return getattr(self, '_parse_mode', None) + + @parse_mode.setter + def parse_mode(self, value): + if value is None: + setattr(self, '_parse_mode', None) + else: + if not isinstance(value, str): + raise TypeError(f"Parse mode must be an 'str' not {type(value)}") + value = value.lower() + if value not in ParseMode.all(): + raise ValueError(f"Parse mode must be one of {ParseMode.all()}") + setattr(self, '_parse_mode', value) + + @parse_mode.deleter + def parse_mode(self): + self.parse_mode = None diff --git a/aiogram/bot/bot.py b/aiogram/bot/bot.py index bdc38f94..392ef179 100644 --- a/aiogram/bot/bot.py +++ b/aiogram/bot/bot.py @@ -197,6 +197,9 @@ class Bot(BaseBot): """ reply_markup = prepare_arg(reply_markup) payload = generate_payload(**locals()) + if self.parse_mode: + payload.setdefault('parse_mode', self.parse_mode) + result = await self.request(api.Methods.SEND_MESSAGE, payload) return types.Message(**result) @@ -1245,6 +1248,9 @@ class Bot(BaseBot): """ reply_markup = prepare_arg(reply_markup) payload = generate_payload(**locals()) + if self.parse_mode: + payload.setdefault('parse_mode', self.parse_mode) + result = await self.request(api.Methods.EDIT_MESSAGE_TEXT, payload) if isinstance(result, bool):