Sk Akram
c4e9bb3b99
fix: sanitize native command names for Telegram API ( #19257 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: b608be348888505b23bb4b2f1c8c42058a28e64e
Co-authored-by: akramcodez <179671552+akramcodez@users.noreply.github.com >
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Reviewed-by: @obviyus
2026-02-17 23:20:36 +05:30
Sebastian
cc359d338e
test: add fetch mock helper and reaction coverage
2026-02-17 09:02:39 -05:00
cpojer
2a4ca7671e
chore: Fix types in tests 35/N.
2026-02-17 15:50:07 +09:00
cpojer
600022cdcc
chore: Fix types in tests 24/N.
2026-02-17 14:30:36 +09:00
Peter Steinberger
8515ae6eea
perf: consolidate telegram bot test harness
2026-02-16 02:45:00 +00:00
Peter Steinberger
3871b5a238
perf(test): remove dead telegram bot test scaffolding
2026-02-14 02:37:09 +00:00
Peter Steinberger
63711330e4
perf(test): dedupe browser/telegram coverage and trim batch retry cost
2026-02-14 02:37:09 +00:00
Peter Steinberger
d3eb014892
perf(test): dedupe telegram/node coverage and speed fixtures
2026-02-14 02:37:09 +00:00
Peter Steinberger
dac8f5ba3f
perf(test): trim fixture and import overhead in hot suites
2026-02-13 23:16:41 +00:00
Gustavo Madeira Santana
a853ded782
fix(pairing): use actual code in pairing approval text
2026-02-10 19:48:02 -05:00
Denis Rybnikov
a4b38ce886
fix(telegram): preserve inbound quote context and avoid QUOTE_TEXT_INVALID
2026-02-09 22:43:29 +05:30
nicolasstanley
4a5e9f0a4f
fix(telegram): accept messages from group members in allowlisted groups ( #9775 )
...
* fix(telegram): accept messages from group members in allowlisted groups
Issue #4559 : Telegram bot was silently dropping messages from non-paired users
in allowlisted group chats due to overly strict sender filtering.
The fix adds a check to distinguish between:
1. Group itself is allowlisted → accept messages from any member
2. Group is NOT allowlisted → only accept from allowlisted senders
Changes:
- Check if group ID is in the allowlist (or allowlist is wildcard)
- Only reject sender if they're not in allowlist AND group is not allowlisted
- Improved logging to indicate the actual reason for rejection
This preserves security controls while fixing the UX issue where group members
couldn't participate unless individually allowlisted.
Backwards compatible: existing allowlists continue to work as before.
* style: format telegram fix for oxfmt compliance
* refactor(telegram): clarify group allowlist semantics in fix for #4559
Changes:
- Rename 'isGroupInAllowlist' to 'isGroupChatIdInAllowlist' for clarity
- Expand comments to explain the semantic distinction:
* Group chat ID in allowlist -> accept any group member (fixes #4559 )
* Group chat ID NOT in allowlist -> enforce sender allowlist (preserves security)
- This addresses concerns about config semantics raised in code review
The fix maintains backward compatibility:
- 'groupAllowFrom' with group chat IDs now correctly acts as group enablement
- 'groupAllowFrom' with sender IDs continues to work as sender allowlist
- Operators should use group chat IDs for group enablement, sender IDs for sender control
Note: If operators were using 'groupAllowFrom' with group IDs expecting sender-level
filtering, they should migrate to a separate sender allowlist config. This is the
intended behavior per issue #4559 .
* Telegram: allow per-group groupPolicy overrides
* Telegram: support per-group groupPolicy overrides (#9775 ) (thanks @nicolasstanley)
---------
Co-authored-by: George Pickett <gpickett00@gmail.com >
2026-02-05 14:45:45 -08:00
Christian Klotz
96abc1c864
Telegram: remove @ts-nocheck from bot.ts, fix duplicate error handler, harden sticker caching ( #9077 )
...
* Telegram: remove @ts-nocheck from bot.ts and bot-message-dispatch.ts
- bot/types.ts: TelegramContext.me uses UserFromGetMe (Grammy) instead of manual inline type
- bot.ts: remove 6 unsafe casts (as any, as unknown, as object), use Grammy types directly
- bot.ts: remove dead message_thread_id access on reactions (not in Telegram Bot API)
- bot.ts: remove resolveThreadSessionKeys import (no longer needed for reactions)
- bot-message-dispatch.ts: replace ': any' with DispatchTelegramMessageParams type
- bot-message-dispatch.ts: add sticker.fileId guard before cache access
- bot.test.ts: update reaction tests, remove dead DM thread-reaction test
* Telegram: remove duplicate bot.catch handler (only the last one runs in Grammy)
* Telegram: remove @ts-nocheck from bot.ts, fix duplicate error handler, harden sticker caching (#9077 )
2026-02-04 22:35:51 +00:00
Peter Steinberger
9d2784cdb9
test: speed up telegram suites
2026-02-01 22:23:16 +00:00
Ayaan Zaidi
24fbafa9a7
refactor: use shared pairing store for telegram
2026-02-01 15:22:37 +05:30
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
cpojer
5ceff756e1
chore: Enable "curly" rule to avoid single-statement if confusion/errors.
2026-01-31 16:19:20 +09:00
cpojer
7a9ddcd590
chore: Enable some "perf" lint rules.
2026-01-31 15:58:24 +09:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00
Ayaan Zaidi
14e4b88bf0
fix: keep telegram dm thread sessions ( #2731 ) (thanks @dylanneve1)
2026-01-28 09:32:20 +05:30
A. Duk
284b54af42
feat: Add support for Telegram quote (partial message replies) ( #2900 )
...
* feat: Add support for Telegram quote (partial message replies)
- Enhanced describeReplyTarget() to detect and extract quoted text from msg.quote
- Updated reply formatting to distinguish between full message replies and quotes
- Added isQuote flag to replyTarget object for proper identification
- Quote replies show as [Quoting user] "quoted text" [/Quoting]
- Regular replies unchanged: [Replying to user] full message [/Replying]
Resolves need for partial message reply support in Telegram Bot API.
Backward compatible with existing reply functionality.
* updating references
* Mac: finish Moltbot rename
* Mac: finish Moltbot rename (paths)
* fix(macOS): rename Clawdbot directories to Moltbot for naming consistency
Directory renames:
- apps/macos/Sources/Clawdbot → Moltbot
- apps/macos/Sources/ClawdbotDiscovery → MoltbotDiscovery
- apps/macos/Sources/ClawdbotIPC → MoltbotIPC
- apps/macos/Sources/ClawdbotMacCLI → MoltbotMacCLI
- apps/macos/Sources/ClawdbotProtocol → MoltbotProtocol
- apps/macos/Tests/ClawdbotIPCTests → MoltbotIPCTests
- apps/shared/ClawdbotKit → MoltbotKit
- apps/shared/MoltbotKit/Sources/Clawdbot* → Moltbot*
- apps/shared/MoltbotKit/Tests/ClawdbotKitTests → MoltbotKitTests
Resource renames:
- Clawdbot.icns → Moltbot.icns
Code fixes:
- Update Package.swift paths to reference Moltbot* directories
- Fix clawdbot* → moltbot* symbol references in Swift code:
- clawdbotManagedPaths → moltbotManagedPaths
- clawdbotExecutable → moltbotExecutable
- clawdbotCommand → moltbotCommand
- clawdbotNodeCommand → moltbotNodeCommand
- clawdbotOAuthDirEnv → moltbotOAuthDirEnv
- clawdbotSelectSettingsTab → moltbotSelectSettingsTab
* fix: update remaining ClawdbotKit path references to MoltbotKit
- scripts/bundle-a2ui.sh: A2UI_APP_DIR path
- package.json: format:swift and protocol:check paths
- scripts/protocol-gen-swift.ts: output paths
- .github/dependabot.yml: directory path and comment
- .gitignore: build cache paths
- .swiftformat: exclusion paths
- .swiftlint.yml: exclusion path
- apps/android/app/build.gradle.kts: assets.srcDir path
- apps/ios/project.yml: package path
- apps/ios/README.md: documentation reference
- docs/concepts/typebox.md: documentation reference
- apps/shared/MoltbotKit/Package.swift: fix argument order
* chore: update Package.resolved after dependency resolution
* fix: add MACOS_APP_SOURCES_DIR constant and update test to use new path
The cron-protocol-conformance test was using LEGACY_MACOS_APP_SOURCES_DIR
which points to the old Clawdbot path. Added a new MACOS_APP_SOURCES_DIR
constant for the current Moltbot path and updated the test to use it.
* fix: finish Moltbot macOS rename (#2844 ) (thanks @fal3)
* Extensions: use workspace moltbot in memory-core
* fix(security): recognize Venice-style claude-opus-45 as top-tier model
The security audit was incorrectly flagging venice/claude-opus-45 as
'Below Claude 4.5' because the regex expected -4-5 (with dash) but
Venice uses -45 (without dash between 4 and 5).
Updated isClaude45OrHigher() regex to match both formats.
Added test case to prevent regression.
* Branding: update bot.molt bundle IDs + launchd labels
* Branding: remove legacy android packages
* fix: wire telegram quote support (#2900 )
Co-authored-by: aduk059 <aduk059@users.noreply.github.com >
* fix: support Telegram quote replies (#2900 ) (thanks @aduk059)
---------
Co-authored-by: Gustavo Madeira Santana <gumadeiras@users.noreply.github.com >
Co-authored-by: Shadow <shadow@clawd.bot >
Co-authored-by: Alex Fallah <alexfallah7@gmail.com >
Co-authored-by: Josh Palmer <joshp123@users.noreply.github.com >
Co-authored-by: jonisjongithub <jonisjongithub@users.noreply.github.com >
Co-authored-by: Gustavo Madeira Santana <gumadeiras@gmail.com >
Co-authored-by: aduk059 <aduk059@users.noreply.github.com >
2026-01-27 15:59:24 -05:00
Peter Steinberger
6d16a658e5
refactor: rename clawdbot to moltbot with legacy compat
2026-01-27 12:21:02 +00:00
Gustavo Madeira Santana
cc1782b105
fix: tighten commands output + telegram pagination ( #2504 )
...
Co-authored-by: hougangdev <hougangdev@users.noreply.github.com >
2026-01-27 02:43:14 -05:00
Gustavo Madeira Santana
b861a0bd73
Telegram: harden network retries and config
...
Co-authored-by: techboss <techboss@users.noreply.github.com >
2026-01-26 19:36:43 -05:00
Peter Steinberger
875b018ea1
fix: stop sending tool summaries to channels
2026-01-25 11:54:29 +00:00
Rohan Nagpal
06a7e1e8ce
Telegram: threaded conversation support ( #1597 )
...
* Telegram: isolate dm topic sessions
* Tests: cap vitest workers
* Tests: cap Vitest workers on CI macOS
* Tests: avoid timer-based pi-ai stream mock
* Tests: increase embedded runner timeout
* fix: harden telegram dm thread handling (#1597 ) (thanks @rohannagpal)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-01-25 04:48:51 +00:00
Peter Steinberger
ac00065727
fix: normalize telegram fetch for long-polling
2026-01-24 21:58:42 +00:00
Peter Steinberger
de2d986008
fix: render Telegram media captions
2026-01-24 03:39:25 +00:00
Peter Steinberger
2e0a835e07
fix: unify inbound dispatch pipeline
2026-01-23 22:58:54 +00:00
Peter Steinberger
40181afded
feat: add models status auth probes
2026-01-23 19:28:55 +00:00
Peter Steinberger
39d8ff59aa
test: trim plugin + telegram test setup
2026-01-23 06:22:09 +00:00
Peter Steinberger
0f4e0cbe5f
test: cover unpaired telegram dm native commands
2026-01-22 07:44:35 +00:00
Peter Steinberger
b63175d822
Merge remote-tracking branch 'origin/main' into feature/agent-avatar-support
2026-01-22 06:27:45 +00:00
Peter Steinberger
6539c09a93
Merge remote-tracking branch 'origin/main' into feature/agent-avatar-support
2026-01-22 06:03:56 +00:00
Peter Steinberger
34686027b1
fix: inherit model overrides for thread sessions
2026-01-22 06:03:23 +00:00
Peter Steinberger
d425f1ebea
test: align envelope timestamp expectations ( #1329 ) (thanks @dlauer)
2026-01-22 05:51:42 +00:00
Peter Steinberger
8580b85f0b
fix: subagents list uses command session
2026-01-22 05:43:50 +00:00
Peter Steinberger
a59ac5cf6f
feat: add agent identity avatars ( #1329 ) (thanks @dlauer)
2026-01-22 05:37:15 +00:00
Peter Steinberger
b60db040e2
test: align envelope timestamps with local tz
2026-01-22 04:49:41 +00:00
Peter Steinberger
0e003cb7f1
fix: normalize abort signals for telegram fetch
2026-01-21 16:46:58 +00:00
Peter Steinberger
a7be3a9649
fix: honor telegram pairing allowlists for native commands
2026-01-18 22:52:00 +00:00
Peter Steinberger
744d1329cb
feat: make inbound envelopes configurable
...
Co-authored-by: Shiva Prasad <shiv19@users.noreply.github.com >
2026-01-18 18:50:37 +00:00
Peter Steinberger
f73dbdbaea
refactor: unify channel config matching and gating
...
Co-authored-by: thewilloftheshadow <thewilloftheshadow@users.noreply.github.com >
2026-01-18 01:24:00 +00:00
Peter Steinberger
4c12c4fc04
feat: add channel match metadata logs
...
Co-authored-by: thewilloftheshadow <thewilloftheshadow@users.noreply.github.com >
2026-01-17 23:48:45 +00:00
Peter Steinberger
13b931c006
refactor: prune legacy group prefixes
2026-01-17 08:47:25 +00:00
Peter Steinberger
a624878973
fix(security): gate slash commands by sender
2026-01-17 05:25:42 +00:00
Peter Steinberger
a2b5b1f0cb
refactor: normalize inbound context
2026-01-17 04:05:33 +00:00
Peter Steinberger
3af391eec7
refactor: centralize group sender identity
2026-01-17 03:32:48 +00:00
adityashaw2
e9d6869290
Telegram: Add reply-chain detection to bypass mention requirement ( #1038 )
...
* Telegram: add reply-chain detection to bypass mention requirement
* fix: allow telegram reply-chain mention bypass (#1038 ) (thanks @adityashaw2)
---------
Co-authored-by: Aditya Shaw <aditya@adityashaw.dev >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-01-16 21:24:45 +00:00
Peter Steinberger
56efbce31e
feat: enable telegram reaction notifications by default
2026-01-16 20:51:42 +00:00