Commit graph

102 commits

Author SHA1 Message Date
798ea70b4e rpc: return PASSWORD_MISSING for channel transfer without 2FA
messages.editChatCreator unconditionally returned PASSWORD_HASH_INVALID for
an account with no cloud password at all. Real Telegram Desktop's transfer-
ownership flow only recognizes the distinct PASSWORD_MISSING error to show
its "enable 2FA first" box; anything else falls through into the real
password-entry flow, which then has nothing to check against and crashes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-13 22:07:54 +01:00
65aaa263b1 usernames: operator reserved-username blocklist
A plain blocklist for names like @support - separate from the collectible
system, so a reservation has no owner, no price and no "bought on Fragment"
badge.

- reserved_usernames table + migration.
- Enforced in replacePeerUsernameTx (the single editable-username write point:
  account.updateUsername, channels.updateUsername, @BotFather /setusername) and
  in the collectible mint path; a reserved name returns USERNAME_OCCUPIED.
- admin.Service: ReserveUsername / UnreserveUsername (journalled commands) and
  the ReservedUsernames listing.
- adminapi: /v1/reserved-usernames{,/reserve,/unreserve}.
- telesrv-admin panel + a "Reserved Usernames" page in the web UI (dist rebuilt).
- Postgres and in-memory store implementations; the memory registry gains an
  optional reserved-name check so tests exercise the same rule.
2026-09-09 19:57:14 +01:00
d9ee8cbee0 botapi: getChatMemberCount, getChatMember, and a fuller getChat
- getChatMemberCount: channel/supergroup participant count (numeric chat_id).
- getChatMember: resolves a member via GetParticipant, projected to a Bot API
  ChatMember (creator/administrator/restricted/member/left/kicked with the
  matching rights); a user simply not in an accessible chat returns "left".
- getChat now uses the full channel view and adds permissions (from the default
  restrictions), slow_mode_delay, linked_chat_id and pinned_message.

Channel-only methods reject user chat_ids; private chats the bot cannot access
return CHAT_NOT_FOUND.
2026-09-09 16:26:33 +01:00
578eb5a1f6 botapi: implement getChat
Adds the getChat method to the HTTP Bot API gateway. Numeric chat_id only (no
@username). Resolution goes through the shared peer resolvers:

- user: ByID; unknown -> CHAT_NOT_FOUND
- channel/supergroup: ResolveChannel, so a public one resolves even when the bot
  is not a member (projected as a preview); a private one the bot cannot access
  -> CHAT_NOT_FOUND, a banned bot likewise

The Chat projection returns id (bot-api encoded), type ("channel" for a
broadcast, "supergroup" for a megagroup, "private" for a user), title, username,
first/last name, description, is_forum, and the scam/fake/verified flags.
2026-09-09 16:14:49 +01:00
7b662ad647 welcome message: point updates-channel mention at @ziodotsh
Rename the official updates channel mention from @zio to @ziodotsh in the
welcome message template and update the affected send-message test.
2026-09-09 13:49:07 +01:00
bf22bd4006 forum: fix reply_to_top_id for replies inside a forum
resolveChannelReply applied discussion-thread logic (reply_to_top_id =
the replied-to message's own id) to forum replies. Replying to a General
message produced reply_to_top_id = <that id>, a topic no client can
resolve: the reply vanished from every topic view and reply-jump on
strict clients said "message doesn't exist".

Forum replies now inherit the target's topic via domain.ForumReplyTopicID
(target's topic, or its own id if it's a topic-create, else General), and
General (topic 1) is accepted as a valid virtual topic everywhere, so
sends carrying top_msg_id: 1 are no longer rejected. Non-forum discussion
threads are unchanged.
2026-09-09 11:15:56 +01:00
233a2399e9 welcome message: link @zio with a mention entity 2026-09-08 16:29:37 +01:00
165f81414c Add @zio channel invite to the sign-in welcome message 2026-09-08 13:31:39 +01:00
onysd
d0669bdc5e categorisation for gifs 2026-08-24 23:09:08 +03:00
onysd
78f174018e fix 2026-08-07 11:30:12 +03:00
onysd
4ac94f00de added gifs scan at start 2026-08-07 11:02:05 +03:00
onysd
354128c106 added full gifts support 2026-08-07 10:13:11 +03:00
onysd
21d8e91756 removed all "paid" features - no more stars, gifts, or grams 2026-08-07 01:50:10 +03:00
onysd
2491088e81 added ability to broadcast 2026-08-06 15:22:36 +03:00
onysd
4f0fa895c1 added avatar for verification bot 2026-08-06 04:39:28 +03:00
onysd
03f10b66ee s3 support 2026-08-04 23:09:11 +03:00
onysd
fa5cfaf14d changed verifier bot to marksbot 2026-08-04 03:22:46 +03:00
onysd
ac6a50c5ff Merge remote-tracking branch 'upstream/main' into merge-gramsrv-9106877 2026-08-03 23:29:20 +03:00
iamxvbaba
2512eab51d fix: sync harden auth, privacy, and PTS state 2026-08-02 14:12:04 +08:00
iamxvbaba
7e0f9d1e62 feat(stars): sync implement unified purchase flow 2026-08-02 01:51:03 +08:00
iamxvbaba
c854fc7b94 feat: sync implement Stars friend gift packages 2026-08-02 01:51:02 +08:00
iamxvbaba
3a123f38db fix(stars): sync filter transaction history by direction 2026-08-02 01:51:02 +08:00
iamxvbaba
fd47dd765a fix(channels): sync monoforum suggested forwards and reactions 2026-07-30 16:05:34 +08:00
iamxvbaba
5e1f867b2d fix(channels): sync stop replaying clear-history updates 2026-07-29 16:19:04 +08:00
iamxvbaba
73cf6a8184 fix(channels): sync preserve locally cleared dialogs 2026-07-29 16:19:04 +08:00
iamxvbaba
e22fac1c3f fix(messages): sync preserve private dialogs after clearing history 2026-07-29 13:51:02 +08:00
iamxvbaba
209a0d279b fix: sync harden channel reads and suggested approvals 2026-07-28 16:22:33 +08:00
iamxvbaba
037ce017d4 fix: sync support private chat content protection 2026-07-28 16:22:33 +08:00
iamxvbaba
74c9249091 feat: sync expose gramsrv account rating
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>
2026-07-28 02:09:40 +08:00
Egor Egorov
fff8de783a
feat: add NFT usernames and bot verification (#22)
Implements collectible usernames, official verification workflows, and third-party bot verification after maintainer protocol and migration review.

The composite activity/moderation rating remains an admin-only read model; Telegram Stars Rating wire fields stay unset pending a dedicated official-semantics implementation.

Reviewed-Head: 2796345775ea0f908fb7734601e5e1dee4b653b9
Original-Head: fa082b892fd5180c9c9bc53c81c21cf5d250a75b

Co-authored-by: Egor Egorov <business.egor.sg@gmail.com>
2026-07-28 01:18:00 +08:00
iamxvbaba
e75fd04a28 fix(messages): sync exact channel pinned counts 2026-07-27 00:17:25 +08:00
iamxvbaba
3369d0bd5c feat(premium): sync promo video catalog seed 2026-07-26 15:59:25 +08:00
iamxvbaba
6b3eba6c5d feat(messages): sync saved message tags 2026-07-25 19:23:19 +08:00
iamxvbaba
a785ae7491 fix(langpack): sync WebK catalog alias support 2026-07-25 14:08:49 +08:00
onysd
b2e84a187d fixes 2026-07-25 01:24:36 +03:00
onysd
b443ff0c73 Merge remote-tracking branch 'upstream/main' into merge-gramsrv-0e2fcdf9 2026-07-24 17:15:53 +03:00
iamxvbaba
70e57b4d07 fix: sync non-PTS moderation updates 2026-07-24 11:57:00 +08:00
iamxvbaba
cc76cd3679 fix: sync non-PTS privacy updates 2026-07-24 11:57:00 +08:00
iamxvbaba
3dd9c345d7 fix: sync moderation flag convergence 2026-07-24 11:57:00 +08:00
iamxvbaba
9f467f4be7 feat: sync durable moderation and appeals 2026-07-24 11:56:59 +08:00
onysd
0a6c05404a changed botfather avatar and fixed import 2026-07-24 00:54:19 +03:00
iamxvbaba
234061ef83 fix(admin): close PR review blockers
Keep bot credentials out of durable command results, fail bot deletion closed when session revocation fails, reject invalid scam/fake states at every write boundary, and make direct collectible grants a single replayable PostgreSQL aggregate.

Also lock admin gift sender/message limits and add regression coverage for rollback, replay, moderation constraints, and credential redaction.
2026-07-23 13:29:04 +08:00
epilepticseizureee
90792cdfab fix(admin): resolve moderation, gift, and admin-panel bugs from QA
- scam/fake: enforce mutual exclusivity (scam precedence) at TL conversion, admin command, and UI toggles; both flags could render as neither
- scam/fake flicker: persist scam/fake in the Redis user base cache so cache hits no longer drop the flags
- getSavedStarGifts: hidden (unsaved) gifts are now force-excluded for non-owner viewers; same guard for get-by-ref
- convertStarGift: map already-upgraded/owner-invalid/unavailable to a clean client error instead of 500
- channel force-settings: send only changed fields (partial patch) and re-sync toggles after reload, so one setting no longer resets another
- give gifts: removed custom collectible numbers (auto sequential only); locked sender to the system account 777000
- give gifts UI: fixed picker card spacing/right gap; static (hover-play) Lottie previews on emoji + picker to stop render lag; fixed emoji ID field overflow
2026-07-23 06:24:53 +03:00
epilepticseizureee
313624eab2 admin: gift granting, collectible attribute/number control, and Layer 228 moderation tools
Admin console additions (Layer 228):
- Give Gifts: dedicated tab with sorted Lottie/TGS gift picker + inline form; grant any catalog gift to a user/channel from 777000 (no charge)
- Upgraded/collectible delivery: mint a unique gift with admin-selected model/pattern/backdrop and custom number, or random/auto (DB FK + UNIQUE(gift_id,num) enforce invariants)
- SCAM/FAKE flags for users/channels (migration 0136) with configurable profile warning (TELESRV_SCAM_WARNING/TELESRV_FAKE_WARNING)
- Support toggle, force channel settings incl. gigagroup (migration 0137), username management, cosmetic color/emoji-status
- Emoji admin tab (custom emoji list + document IDs + Lottie/TGS preview)
- Bot management; soft UI / dark theme
Wired through Router -> admin.Service -> adminapi -> BFF -> React panel (en/zh/ru).
2026-07-23 04:00:29 +03:00
A
401a8f148e fix: sync monoforum suggested post flow 2026-07-22 16:08:44 +08:00
A
de233a4c18 fix: sync collectible upgrade preview pools 2026-07-22 13:06:49 +08:00
A
eba402946a fix: sync account freeze peer visibility 2026-07-22 02:03:00 +08:00
A
f53579416e feat: sync HTTP callback OIDC setup 2026-07-21 18:18:33 +08:00
A
40743dfb09 fix: sync contact note projection 2026-07-21 15:48:33 +08:00
A
d69a34a4a8 fix: sync StarGift lifecycle hardening 2026-07-21 15:47:55 +08:00