Adds a narrower spam sanction alongside the existing account freeze: a
restricted account keeps every existing membership and conversation, but
cannot join new channels/groups (public join or invite link) and cannot
start a new conversation with a non-contact. Reachable both as a standalone
admin action and as a decision on a reported user's moderation case, with
the same idempotent-supersession and appeal wiring freeze already has.
updateChannelParticipant carries the account's qts per the MTProto spec, but
the server always sent Qts: 0, so real clients silently discarded it as a
stale duplicate -- the banned/kicked user's channel never vanished locally
and no correct "removed by admin" message showed, even though the update was
delivered successfully at the transport layer.
Add a durable per-device qts queue (channel_participant_event_queue) sharing
its qts number space with the existing secret-chat queue (one qts sequence
per device, per spec), and use it to stamp a correct, monotonically
increasing qts on the update for every device of the affected user -- for
channel bans/kicks, admin promotion/demotion, and ownership transfer. A
device offline when it happened can now recover the event via
updates.getDifference instead of missing it permanently.
Follow up PR #22 by projecting its composite rating through userFull while keeping profile reads cache-backed and strictly read-only.
Source-Commit: 00eea44c
Co-authored-by: Egor Egorov <business.egor.sg@gmail.com>
Sync telesrv 36eda30 (feat(communities): implement Layer 228 community aggregates).
Skipped telesrv docs changes per public sync rules; normalized the public appearance seed label.
Sync telesrv b96f2dd (feat(bot): complete keyboards callbacks and durable delivery).
Skipped private docs and preserved public README files per sync rules; normalized the appearance seed log label for public naming.
Sync telesrv 4c0e2d9 (feat: complete official star gift lifecycle and admin tooling).
Public adjustments: skipped private docs/deploy-nginx/README source changes, kept iamxvbaba/td public dependency, replaced local/private sample IP and orange seed label.