fix(bot): eliminate duplicate review cards caused by sync race and edit fallback
This commit is contained in:
@@ -25,6 +25,7 @@ async def handle_entities(
|
||||
if target_draft is not None:
|
||||
draft = target_draft
|
||||
prev_review_msg_id = draft.review_message_id
|
||||
draft.review_message_id = None
|
||||
payload = draft.payload
|
||||
merge_quote_patch(payload, patch)
|
||||
draft.source_message_id = incoming_msg_id
|
||||
@@ -36,11 +37,6 @@ async def handle_entities(
|
||||
)
|
||||
|
||||
await resolve_payload(ctx, payload)
|
||||
await draft_store.save_payload(
|
||||
draft,
|
||||
missing={"fields": compute_quote_missing(payload)},
|
||||
source_message_id=incoming_msg_id,
|
||||
)
|
||||
|
||||
if prev_review_msg_id:
|
||||
try:
|
||||
@@ -213,12 +209,24 @@ async def render(ctx, chat_id, draft, fresh: bool = True, note: str | None = Non
|
||||
missing={"fields": missing},
|
||||
review_message_id=new_review_id,
|
||||
source_message_id=reply_to or draft.source_message_id,
|
||||
mark_bale_synced=True,
|
||||
)
|
||||
else:
|
||||
await draft_store.save_payload(
|
||||
draft,
|
||||
missing={"fields": missing},
|
||||
source_message_id=reply_to or draft.source_message_id,
|
||||
mark_bale_synced=True,
|
||||
)
|
||||
await draft_store.set_bale_updated_at(draft.id)
|
||||
else:
|
||||
await ctx.edit(chat_id, draft.review_message_id, text, reply_markup=keyboard)
|
||||
await draft_store.save_payload(draft, missing={"fields": missing})
|
||||
await draft_store.set_bale_updated_at(draft.id)
|
||||
if not draft.review_message_id:
|
||||
return
|
||||
success = await ctx.edit(chat_id, draft.review_message_id, text, reply_markup=keyboard)
|
||||
if success:
|
||||
await draft_store.save_payload(draft, missing={"fields": missing}, mark_bale_synced=True)
|
||||
else:
|
||||
logger.warning("Could not edit review message %s for draft %s", draft.review_message_id, draft.id)
|
||||
await draft_store.set_bale_updated_at(draft.id)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user