mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Merge pull request #695 from samuelfirst/global_disable_web_page_preview_parameter
Global disable web page preview parameter
This commit is contained in:
commit
96654b7266
4 changed files with 50 additions and 1 deletions
|
|
@ -37,6 +37,7 @@ class BaseBot:
|
|||
proxy_auth: Optional[aiohttp.BasicAuth] = None,
|
||||
validate_token: Optional[base.Boolean] = True,
|
||||
parse_mode: typing.Optional[base.String] = None,
|
||||
disable_web_page_preview: Optional[base.Boolean] = None,
|
||||
timeout: typing.Optional[typing.Union[base.Integer, base.Float, aiohttp.ClientTimeout]] = None,
|
||||
server: TelegramAPIServer = TELEGRAM_PRODUCTION
|
||||
):
|
||||
|
|
@ -57,6 +58,8 @@ class BaseBot:
|
|||
:type validate_token: :obj:`bool`
|
||||
:param parse_mode: You can set default parse mode
|
||||
:type parse_mode: :obj:`str`
|
||||
:param disable_web_page_preview: You can set default disable web page preview parameter
|
||||
:type disable_web_page_preview: :obj:`bool`
|
||||
:param timeout: Request timeout
|
||||
:type timeout: :obj:`typing.Optional[typing.Union[base.Integer, base.Float, aiohttp.ClientTimeout]]`
|
||||
:param server: Telegram Bot API Server endpoint.
|
||||
|
|
@ -107,6 +110,8 @@ class BaseBot:
|
|||
|
||||
self.parse_mode = parse_mode
|
||||
|
||||
self.disable_web_page_preview = disable_web_page_preview
|
||||
|
||||
async def get_new_session(self) -> aiohttp.ClientSession:
|
||||
return aiohttp.ClientSession(
|
||||
connector=self._connector_class(**self._connector_init),
|
||||
|
|
@ -333,5 +338,22 @@ class BaseBot:
|
|||
def parse_mode(self):
|
||||
self.parse_mode = None
|
||||
|
||||
@property
|
||||
def disable_web_page_preview(self):
|
||||
return getattr(self, '_disable_web_page_preview', None)
|
||||
|
||||
@disable_web_page_preview.setter
|
||||
def disable_web_page_preview(self, value):
|
||||
if value is None:
|
||||
setattr(self, '_disable_web_page_preview', None)
|
||||
else:
|
||||
if not isinstance(value, bool):
|
||||
raise TypeError(f"Disable web page preview must be bool, not {type(value)}")
|
||||
setattr(self, '_disable_web_page_preview', value)
|
||||
|
||||
@disable_web_page_preview.deleter
|
||||
def disable_web_page_preview(self):
|
||||
self.disable_web_page_preview = None
|
||||
|
||||
def check_auth_widget(self, data):
|
||||
return check_integrity(self.__token, data)
|
||||
|
|
|
|||
|
|
@ -328,6 +328,8 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
|||
payload = generate_payload(**locals())
|
||||
if self.parse_mode and entities is None:
|
||||
payload.setdefault('parse_mode', self.parse_mode)
|
||||
if self.disable_web_page_preview:
|
||||
payload.setdefault('disable_web_page_preview', self.disable_web_page_preview)
|
||||
|
||||
result = await self.request(api.Methods.SEND_MESSAGE, payload)
|
||||
return types.Message(**result)
|
||||
|
|
@ -448,7 +450,6 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
|||
reply_markup = prepare_arg(reply_markup)
|
||||
caption_entities = prepare_arg(caption_entities)
|
||||
payload = generate_payload(**locals())
|
||||
|
||||
if self.parse_mode and caption_entities is None:
|
||||
payload.setdefault('parse_mode', self.parse_mode)
|
||||
|
||||
|
|
@ -2638,6 +2639,8 @@ class Bot(BaseBot, DataMixin, ContextInstanceMixin):
|
|||
payload = generate_payload(**locals())
|
||||
if self.parse_mode and entities is None:
|
||||
payload.setdefault('parse_mode', self.parse_mode)
|
||||
if self.disable_web_page_preview:
|
||||
payload.setdefault('disable_web_page_preview', self.disable_web_page_preview)
|
||||
|
||||
result = await self.request(api.Methods.EDIT_MESSAGE_TEXT, payload)
|
||||
if isinstance(result, bool):
|
||||
|
|
|
|||
|
|
@ -435,6 +435,18 @@ class DisableWebPagePreviewMixin:
|
|||
setattr(self, 'disable_web_page_preview', True)
|
||||
return self
|
||||
|
||||
@staticmethod
|
||||
def _global_disable_web_page_preview():
|
||||
"""
|
||||
Detect global disable web page preview value
|
||||
|
||||
:return:
|
||||
"""
|
||||
from aiogram import Bot
|
||||
bot = Bot.get_current()
|
||||
if bot is not None:
|
||||
return bot.disable_web_page_preview
|
||||
|
||||
|
||||
class ParseModeMixin:
|
||||
def as_html(self):
|
||||
|
|
@ -506,6 +518,8 @@ class SendMessage(BaseResponse, ReplyToMixin, ParseModeMixin, DisableNotificatio
|
|||
text = ''
|
||||
if parse_mode is None:
|
||||
parse_mode = self._global_parse_mode()
|
||||
if disable_web_page_preview is None:
|
||||
disable_web_page_preview = self._global_disable_web_page_preview()
|
||||
|
||||
self.chat_id = chat_id
|
||||
self.text = text
|
||||
|
|
@ -1591,6 +1605,8 @@ class EditMessageText(BaseResponse, ParseModeMixin, DisableWebPagePreviewMixin):
|
|||
"""
|
||||
if parse_mode is None:
|
||||
parse_mode = self._global_parse_mode()
|
||||
if disable_web_page_preview is None:
|
||||
disable_web_page_preview = self._global_disable_web_page_preview()
|
||||
|
||||
self.chat_id = chat_id
|
||||
self.message_id = message_id
|
||||
|
|
|
|||
|
|
@ -154,6 +154,12 @@ class InputTextMessageContent(InputMessageContent):
|
|||
except RuntimeError:
|
||||
pass
|
||||
|
||||
def safe_get_disable_web_page_preview(self):
|
||||
try:
|
||||
return self.bot.disable_web_page_preview
|
||||
except RuntimeError:
|
||||
pass
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
message_text: base.String,
|
||||
|
|
@ -163,6 +169,8 @@ class InputTextMessageContent(InputMessageContent):
|
|||
):
|
||||
if parse_mode is None:
|
||||
parse_mode = self.safe_get_parse_mode()
|
||||
if disable_web_page_preview is None:
|
||||
disable_web_page_preview = self.safe_get_disable_web_page_preview()
|
||||
|
||||
super().__init__(
|
||||
message_text=message_text,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue