Добавил настройку для Bot() : auto_requests

This commit is contained in:
Денис Семёнов 2025-06-21 20:12:19 +03:00
parent de684aa200
commit 8f5fc9f398
2 changed files with 36 additions and 10 deletions

View File

@ -78,7 +78,8 @@ class Bot(BaseConnection):
self,
token: str,
parse_mode: Optional[ParseMode] = None,
disable_notifications: Optional[bool] = None
disable_notifications: Optional[bool] = None,
auto_requests: bool = True,
):
"""Инициализирует экземпляр бота с указанным токеном.
@ -86,6 +87,8 @@ class Bot(BaseConnection):
:param token: Токен доступа к API бота
:param parse_mode: Форматирование по умолчанию
:param disable_notifications: Отключение уведомлений при отправке сообщений (по умолчанию игнорируется)
:param auto_requests: Автоматическое заполнение полей chat и from_user в Update
с помощью API запросов если они не заложены как полноценные объекты в Update (по умолчанию True, при False chat и from_user в некоторых событиях будут выдавать None)
"""
super().__init__()
@ -98,6 +101,7 @@ class Bot(BaseConnection):
self.parse_mode = parse_mode
self.disable_notifications = disable_notifications
self.auto_requests = auto_requests
async def send_message(
self,

View File

@ -36,7 +36,10 @@ async def get_update_model(event: dict, bot: 'Bot'):
case UpdateType.MESSAGE_CALLBACK:
event_object = MessageCallback(**event)
event_object.chat = await bot.get_chat_by_id(event_object.message.recipient.chat_id)
event_object.chat = await bot.get_chat_by_id(event_object.message.recipient.chat_id) \
if bot.auto_requests else None
event_object.from_user = event_object.callback.user
case UpdateType.MESSAGE_CHAT_CREATED:
@ -45,40 +48,59 @@ async def get_update_model(event: dict, bot: 'Bot'):
case UpdateType.MESSAGE_CREATED:
event_object = MessageCreated(**event)
event_object.chat = await bot.get_chat_by_id(event_object.message.recipient.chat_id)
event_object.chat = await bot.get_chat_by_id(event_object.message.recipient.chat_id) \
if bot.auto_requests else None
event_object.from_user = event_object.message.sender
case UpdateType.MESSAGE_EDITED:
event_object = MessageEdited(**event)
event_object.chat = await bot.get_chat_by_id(event_object.message.recipient.chat_id)
event_object.chat = await bot.get_chat_by_id(event_object.message.recipient.chat_id) \
if bot.auto_requests else None
event_object.from_user = event_object.message.sender
case UpdateType.MESSAGE_REMOVED:
event_object = MessageRemoved(**event)
event_object.chat = await bot.get_chat_by_id(event_object.chat_id)
event_object.chat = await bot.get_chat_by_id(event_object.chat_id) \
if bot.auto_requests else None
event_object.from_user = await bot.get_chat_member(
chat_id=event_object.chat_id,
user_id=event_object.user_id
)
) if bot.auto_requests else None
case UpdateType.USER_ADDED:
event_object = UserAdded(**event)
event_object.chat = await bot.get_chat_by_id(event_object.chat_id)
event_object.chat = await bot.get_chat_by_id(event_object.chat_id) \
if bot.auto_requests else None
event_object.from_user = event_object.user
case UpdateType.USER_REMOVED:
event_object = UserRemoved(**event)
event_object.chat = await bot.get_chat_by_id(event_object.chat_id)
event_object.chat = await bot.get_chat_by_id(event_object.chat_id) \
if bot.auto_requests else None
event_object.from_user = await bot.get_chat_member(
chat_id=event_object.chat_id,
user_id=event_object.admin_id
) if event_object.admin_id else None
) if event_object.admin_id and \
bot.auto_requests else None
if event['update_type'] in (UpdateType.BOT_ADDED,
UpdateType.BOT_REMOVED,
UpdateType.BOT_STARTED,
UpdateType.CHAT_TITLE_CHANGED):
event_object.chat = await bot.get_chat_by_id(event_object.chat_id)
event_object.chat = await bot.get_chat_by_id(event_object.chat_id) \
if bot.auto_requests else None
event_object.from_user = event_object.user
if hasattr(event_object, 'bot'):