update types added

This commit is contained in:
Oleg A 2021-03-10 17:46:20 +03:00
parent 90c614a454
commit 4c73585132
4 changed files with 39 additions and 0 deletions

View file

@ -160,6 +160,26 @@ class LoggingMiddleware(BaseMiddleware):
self.logger.debug(f"{HANDLED_STR[bool(len(results))]} poll answer [ID:{poll_answer.poll_id}] "
f"from user [ID:{poll_answer.user.id}]")
async def on_pre_process_my_chat_member(self, my_chat_member_update, data):
self.logger.info(f"Received chat member update "
f"for user [ID:{my_chat_member_update.from_user.id}]. "
f"Old state: {my_chat_member_update.old_chat_member.to_python()} "
f"New state: {my_chat_member_update.new_chat_member.to_python()} ")
async def on_post_process_my_chat_member(self, my_chat_member_update, results, data):
self.logger.debug(f"{HANDLED_STR[bool(len(results))]} my_chat_member "
f"for user [ID:{my_chat_member_update.from_user.id}]")
async def on_pre_process_chat_member(self, chat_member_update, data):
self.logger.info(f"Received chat member update "
f"for user [ID:{chat_member_update.from_user.id}]. "
f"Old state: {chat_member_update.old_chat_member.to_python()} "
f"New state: {chat_member_update.new_chat_member.to_python()} ")
async def on_post_process_chat_member(self, chat_member_update, results, data):
self.logger.debug(f"{HANDLED_STR[bool(len(results))]} chat_member "
f"for user [ID:{chat_member_update.from_user.id}]")
class LoggingFilter(logging.Filter):
"""

View file

@ -78,6 +78,8 @@ class Dispatcher(DataMixin, ContextInstanceMixin):
self.pre_checkout_query_handlers = Handler(self, middleware_key='pre_checkout_query')
self.poll_handlers = Handler(self, middleware_key='poll')
self.poll_answer_handlers = Handler(self, middleware_key='poll_answer')
self.my_chat_member_handlers = Handler(self, middleware_key='my_chat_member')
self.chat_member_handlers = Handler(self, middleware_key='chat_member')
self.errors_handlers = Handler(self, once=False, middleware_key='error')
self.middleware = MiddlewareManager(self)
@ -286,6 +288,14 @@ class Dispatcher(DataMixin, ContextInstanceMixin):
types.PollAnswer.set_current(update.poll_answer)
types.User.set_current(update.poll_answer.user)
return await self.poll_answer_handlers.notify(update.poll_answer)
if update.my_chat_member:
types.ChatMemberUpdated.set_current(update.my_chat_member)
types.User.set_current(update.my_chat_member.from_user)
return await self.my_chat_member_handlers.notify(update.my_chat_member)
if update.chat_member:
types.ChatMemberUpdated.set_current(update.chat_member)
types.User.set_current(update.chat_member.from_user)
return await self.chat_member_handlers.notify(update.chat_member)
except Exception as e:
err = await self.errors_handlers.notify(update, e)
if err:

View file

@ -7,8 +7,10 @@ from .bot_command import BotCommand
from .callback_game import CallbackGame
from .callback_query import CallbackQuery
from .chat import Chat, ChatActions, ChatType
from .chat_invite_link import ChatInviteLink
from .chat_location import ChatLocation
from .chat_member import ChatMember, ChatMemberStatus
from .chat_member_updated import ChatMemberUpdated
from .chat_permissions import ChatPermissions
from .chat_photo import ChatPhoto
from .chosen_inline_result import ChosenInlineResult
@ -79,9 +81,11 @@ __all__ = (
'CallbackQuery',
'Chat',
'ChatActions',
'ChatInviteLink',
'ChatLocation',
'ChatMember',
'ChatMemberStatus',
'ChatMemberUpdated',
'ChatPermissions',
'ChatPhoto',
'ChatType',

View file

@ -3,6 +3,7 @@ from __future__ import annotations
from . import base
from . import fields
from .callback_query import CallbackQuery
from .chat_member_updated import ChatMemberUpdated
from .chosen_inline_result import ChosenInlineResult
from .inline_query import InlineQuery
from .message import Message
@ -31,6 +32,8 @@ class Update(base.TelegramObject):
pre_checkout_query: PreCheckoutQuery = fields.Field(base=PreCheckoutQuery)
poll: Poll = fields.Field(base=Poll)
poll_answer: PollAnswer = fields.Field(base=PollAnswer)
my_chat_member: ChatMemberUpdated = fields.Field(base=ChatMemberUpdated)
chat_member: ChatMemberUpdated = fields.Field(base=ChatMemberUpdated)
def __hash__(self):
return self.update_id
@ -61,6 +64,8 @@ class AllowedUpdates(helper.Helper):
PRE_CHECKOUT_QUERY = helper.ListItem() # pre_checkout_query
POLL = helper.ListItem() # poll
POLL_ANSWER = helper.ListItem() # poll_answer
MY_CHAT_MEMBER = helper.ListItem() # my_chat_member
CHAT_MEMBER = helper.ListItem() # chat_member
CHOSEN_INLINE_QUERY = deprecated.DeprecatedReadOnlyClassVar(
"`CHOSEN_INLINE_QUERY` is a deprecated value for allowed update. "