Skip to content

Group @ of a friend's Bot: send failures and denies are silent (#73's pause message only shows in the private chat) #81

Closed

Description

@hsliuustc0106

Follow-up from #80 (same live incident, same send path — but a separate fix).

What happens

sendUserMentions (core/src/host/hooks.js:546) is the only path that delivers a user's group @ of a friend's Bot, and every failure mode is invisible in the UI:

  • Transport errors are caught and only logged: core/src/host/hooks.js:573-576 (warn('flybot: sending to %s failed: %s', …)). social: map Bot Social conversation pauses to an actionable error (#72) #73's actionable pause message — "Bot Social paused this conversation (…). Resending cannot help: approve pending messages or extend the conversation in the Bot Social console, or remove and re-add this friend" — is mapped in the bot-social transport (plugins/social/src/social.js:359-368) and thrown, but the group path swallows it. While a conversation is paused_limit (the Friend chat: Bot Social conversation pause (turn budget) surfaces only as a bare "Not sent" card, with no state or recovery path #72 scenario: the 20-turn budget burned by held messages), every group @ fails with no trace; the bubble renders as a normal sent message.
  • Denies come back as { action: 'deny', reason } — unknown handle (plugins/social/src/social.js:342) or a sender the friendship doesn't cover (plugins/social/src/social.js:343-344, e.g. "Chief is not friends with @danyang.home: that friendship is with @flybot-manager.hsliu.home only"). core/src/host/hooks.js:591 only uses them to decide whether to cancel the local turn; the reason is never shown.
  • Holds are fine — they produce the local approval card.

Repro

  1. A friend conversation is paused (paused_limit; see Friend chat: Bot Social conversation pause (turn budget) surfaces only as a bare "Not sent" card, with no state or recovery path #72).
  2. In a group chat, @ the friend's Bot and send.
  3. The message renders as sent. No notice, no badge. Server-side nothing left (409 conversation_paused). The only record is the host log: flybot: sending to @… failed: Bot Social paused this conversation ….

This happened in practice today: after the old conversation paused, group mentions kept "working" visually while nothing left.

Suggestion

Surface the per-mention outcome in the chat the user typed in — a system/error notice for deny and thrown errors, reusing #73's mapped text so the recovery guidance (extend in the Bot Social console / remove and re-add) is in front of the user. Holds already have their card.

Related: #72 (closed by #73 — private-chat side), #80 (reply routing in groups).

Activity

  1. added a commit that references this issue on Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions