fix(userbot): encode absent pyrogram raw payloads as empty json

This commit is contained in:
hh committed 2026-09-06 21:26:13 +02:00
1 parent 6a6e63ff75
commit 676680319b
15 files changed
+63 -25

No files matched your search

+2 -1
View File
@@ -5,6 +5,7 @@ from userbot.modules.capture import repository
from userbot.modules.capture.chat_meta import meta_from_chat
from userbot.modules.capture.message import sender_id
from userbot.modules.media import capture_media, media_unique_id, self_destruct_ttl
from userbot.modules.raw_json import raw_json
from utils.events import notify_bg_event
@@ -33,7 +34,7 @@ async def on_edited_message(client: PyroClient, message: Message) -> None:
message.date,
sender_id(message),
message.text or message.caption,
str(message),
raw_json(message),
message.edit_date,
media_unique_id(message),
has_media=message.media is not None,
+2 -1
View File
@@ -4,6 +4,7 @@ from pyrogram.types import User
from userbot import PyroClient
from userbot.modules.presence import repository
from userbot.modules.raw_json import raw_json
from utils.events import notify_bg_event
@@ -20,7 +21,7 @@ async def on_user_status(client: PyroClient, user: User) -> None:
user.status.name.lower(),
user.last_online_date,
user.next_offline_date,
str(user.raw),
raw_json(user.raw),
)
await ctx.watches.on_status(user.id, is_online=user.status.name.lower() == "online")
await notify_bg_event(ctx.pool, "presence", ctx.account_id, chat_id=user.id)
+7 -4
View File
@@ -7,6 +7,7 @@ from userbot.modules.avatars import capture_avatar
from userbot.modules.profiles import active_username, snapshot_from_user
from userbot.modules.profiles.parse import ProfileFields
from userbot.modules.profiles.repository import get_peer, write_profile
from userbot.modules.raw_json import raw_json
HANDLES = (raw.types.UpdateUserName, raw.types.UpdateUser, raw.types.UpdateUserPhone)
@@ -24,7 +25,9 @@ async def _handle_user(
current = await get_peer(ctx.pool, ctx.account_id, update.user_id)
if current == fields:
return
await write_profile(ctx.pool, ctx.account_id, update.user_id, fields, str(raw_user))
await write_profile(
ctx.pool, ctx.account_id, update.user_id, fields, raw_json(raw_user)
)
changed_photo = current is None or current.photo_unique_id != photo_unique_id
if photo_file_id and photo_unique_id and changed_photo:
await capture_avatar(
@@ -34,7 +37,7 @@ async def _handle_user(
"peer",
photo_file_id,
photo_unique_id,
str(raw_user),
raw_json(raw_user),
)
@@ -65,9 +68,9 @@ async def handle(
"last_name": update.last_name or None,
"username": active_username(update.usernames),
},
str(update),
raw_json(update),
)
elif isinstance(update, raw.types.UpdateUserPhone):
await _merge_partial(
client, update.user_id, {"phone": update.phone or None}, str(update)
client, update.user_id, {"phone": update.phone or None}, raw_json(update)
)
@@ -4,6 +4,7 @@ from pyrogram import raw, utils
from userbot import PyroClient
from userbot.modules.capture.chat_meta import meta_from_chat_id
from userbot.modules.raw_json import raw_json
from userbot.modules.read_receipts import repository as receipts
from userbot.modules.stt import repository
from userbot.modules.stt.gate import safe_transcribe
@@ -41,7 +42,7 @@ async def handle(
cand_chat_id,
datetime.now(UTC),
message_id,
str(update),
raw_json(update),
)
continue
if not untranscribed:
@@ -3,6 +3,7 @@ from datetime import UTC, datetime
from pyrogram import raw, utils
from userbot import PyroClient
from userbot.modules.raw_json import raw_json
from userbot.modules.read_receipts import repository
from utils.events import notify_bg_event
@@ -23,7 +24,7 @@ async def handle(
chat_id,
datetime.now(UTC),
update.max_id,
str(update),
raw_json(update),
)
await notify_bg_event(
ctx.pool, "receipt", ctx.account_id, chat_id=chat_id, message_id=update.max_id