2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-09-03 07:45:14 +00:00

Rework user status parsing to also accommodate user_status updates

This commit is contained in:
Dan
2018-10-15 09:47:47 +02:00
parent 86e4fc4e62
commit b2b599e211

View File

@@ -129,29 +129,32 @@ def parse_chat_photo(photo):
) )
def parse_last_seen(user: types.User) -> pyrogram_types.UserStatus: def parse_update_user_status(update: types.UpdateUserStatus) -> pyrogram_types.User:
if user.bot: return pyrogram_types.User(id=update.user_id, status=parse_user_status(update.status))
def parse_user_status(user_status, is_bot: bool = False) -> pyrogram_types.UserStatus or None:
if is_bot:
return None return None
status = user.status status = pyrogram_types.UserStatus()
last_seen = pyrogram_types.UserStatus()
if isinstance(status, types.UserStatusOnline): if isinstance(user_status, types.UserStatusOnline):
last_seen.online = True status.online = True
last_seen.date = status.expires status.date = user_status.expires
elif isinstance(status, types.UserStatusOffline): elif isinstance(user_status, types.UserStatusOffline):
last_seen.offline = True status.offline = True
last_seen.date = status.was_online status.date = user_status.was_online
elif isinstance(status, types.UserStatusRecently): elif isinstance(user_status, types.UserStatusRecently):
last_seen.recently = True status.recently = True
elif isinstance(status, types.UserStatusLastWeek): elif isinstance(user_status, types.UserStatusLastWeek):
last_seen.within_week = True status.within_week = True
elif isinstance(status, types.UserStatusLastMonth): elif isinstance(user_status, types.UserStatusLastMonth):
last_seen.within_month = True status.within_month = True
else: else:
last_seen.long_time_ago = True status.long_time_ago = True
return last_seen return status
def parse_user(user: types.User) -> pyrogram_types.User or None: def parse_user(user: types.User) -> pyrogram_types.User or None:
@@ -168,7 +171,7 @@ def parse_user(user: types.User) -> pyrogram_types.User or None:
language_code=user.lang_code, language_code=user.lang_code,
phone_number=user.phone, phone_number=user.phone,
photo=parse_chat_photo(user.photo), photo=parse_chat_photo(user.photo),
last_seen=parse_last_seen(user), status=parse_user_status(user.status, user.bot),
) if user else None ) if user else None