cpojer
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
8BlT
e20b87f1ba
fix: handle forum/topics in Telegram DM thread routing ( #17980 )
...
resolveTelegramThreadSpec now checks isForum in the non-group path.
DMs with forum/topics enabled return scope 'forum' so each topic
gets its own session, while plain DM threads keep scope 'dm'.
2026-02-17 00:00:51 +01:00
Seb Slight
0cff8bc4e6
fix(telegram): include DM topic thread id in replies ( #18586 )
2026-02-16 17:02:59 -05:00
Ayaan Zaidi
b6a9741ba4
refactor(telegram): simplify send/dispatch/target handling ( #17819 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: fcb7aeeca3
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com >
Reviewed-by: @obviyus
2026-02-16 14:00:34 +05:30
Vignesh Natarajan
6957354d48
fix (telegram/whatsapp): use account-scoped pairing allowlists
2026-02-15 19:10:06 -08:00
Peter Steinberger
35c5d2be5c
refactor(telegram): share group allowFrom resolution
2026-02-16 02:27:01 +00:00
Garnet Liu
cc0bfa0f39
fix(telegram): restore thread_id=1 handling for DMs (regression from 19b8416a8) (openclaw#10942) thanks @garnetlyx
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm test:macmini
Co-authored-by: garnetlyx <12513503+garnetlyx@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-02-15 10:21:18 -06:00
Denis Rybnikov
582732391a
fix(telegram): avoid nested reply quote misclassification
2026-02-09 22:43:29 +05:30
Denis Rybnikov
b430998c2f
fix(telegram): clean tsgo/format regressions
2026-02-09 22:43:29 +05:30
Denis Rybnikov
1c1d7fa0e5
fix(telegram): make quote parsing/types CI-safe
2026-02-09 22:43:29 +05:30
Denis Rybnikov
a4b38ce886
fix(telegram): preserve inbound quote context and avoid QUOTE_TEXT_INVALID
2026-02-09 22:43:29 +05:30
Christian Klotz
ddedb56c01
fix(telegram): pass parentPeer for forum topic binding inheritance ( #9789 )
...
Fixes #9545 and #9351 .
When a message comes from a Telegram forum topic, the peer ID includes
the topic suffix (e.g., `-1001234567890:topic:99`). Users configure
bindings with the base group ID, which previously did not match.
This adds `parentPeer` to `resolveAgentRoute()` calls for forum groups,
enabling binding inheritance from the parent group to all topics.
- Extract `buildTelegramParentPeer()` helper in bot/helpers.ts
- Pass parentPeer in bot-message-context.ts, bot-handlers.ts,
bot-native-commands.ts, and bot.ts (reaction handler)
- Add tests for forum topic routing and topic precedence
2026-02-05 18:25:03 +00:00
Ayaan Zaidi
78fd194722
fix: telegram forward metadata + cron delivery guard ( #8392 ) (thanks @Glucksberg)
2026-02-04 16:43:20 +05:30
Glucksberg
b2361292e7
fix: trim legacy signature fallback, type fromChatType as union
2026-02-04 16:43:20 +05:30
Glucksberg
57566c5e4d
fix(telegram): include forward_from_chat metadata in forwarded message context ( #8133 )
...
Extract missing metadata from forwarded Telegram messages:
- Add fromChatType to TelegramForwardedContext, capturing the original
chat type (channel/supergroup/group) from forward_from_chat.type
and forward_origin.chat/sender_chat.type
- Add fromMessageId to capture the original message ID from channel forwards
- Read author_signature from forward_origin objects (modern API),
preferring it over the deprecated forward_signature field
- Pass ForwardedFromChatType and ForwardedFromMessageId through to
the inbound context payload
- Add test coverage for forward_origin channel/chat types, including
author_signature extraction and fromChatType propagation
2026-02-04 16:43:20 +05:30
Christian Klotz
da6de49815
Telegram: use Grammy types directly, add typed Probe/Audit to plugin interface ( #8403 )
...
* Telegram: replace duplicated types with Grammy imports, add Probe/Audit generics to plugin interface
* Telegram: remove legacy forward metadata (deprecated in Bot API 7.0), simplify required-field checks
* Telegram: clean up remaining legacy references and unnecessary casts
* Telegram: keep RequestInit parameter type in proxy fetch (addresses review feedback)
* Telegram: add exhaustiveness guard to resolveForwardOrigin switch
2026-02-04 10:09:28 +00:00
cpojer
baa1e95b9d
chore: Enable no-unnecessary-template-expression lint rule.
2026-02-02 15:37:05 +09:00
Ayaan Zaidi
0bc8a592a6
fix: inline telegram thread scope type
2026-02-02 09:26:59 +05:30
Ayaan Zaidi
1d7dd5f261
fix: require thread specs for telegram sends
2026-02-02 09:26:59 +05:30
Ayaan Zaidi
19b8416a81
fix: unify telegram thread handling
2026-02-02 09:26:59 +05:30
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
Ayaan Zaidi
37721ebd7c
fix: restore telegram draft streaming partials
2026-01-31 22:46:19 +05:30
cpojer
5ceff756e1
chore: Enable "curly" rule to avoid single-statement if confusion/errors.
2026-01-31 16:19:20 +09:00
cpojer
15792b153f
chore: Enable more lint rules, disable some that trigger a lot. Will clean up later.
2026-01-31 16:04:04 +09:00
Dylan Neve
915497114e
fix(telegram): ignore message_thread_id for non-forum group sessions
...
Regular Telegram groups (without Topics/Forums enabled) can send
message_thread_id when users reply to messages. This was incorrectly
being used to create separate session keys like '-123:topic:42',
causing each reply chain to get its own conversation context.
Now resolveTelegramForumThreadId only returns a thread ID when the
chat is actually a forum (is_forum=true). For regular groups, the
thread ID is ignored, ensuring all messages share the same session.
DMs continue to use messageThreadId for thread sessions as before.
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
36d88f6079
fix: normalize gateway dev mode detection
2026-01-18 01:08:47 +00:00
Peter Steinberger
63d466fe5e
fix(telegram): expand text_link entities in inbound text
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-17 20:41:34 +00:00
Peter Steinberger
534a012a4e
style: apply oxfmt
2026-01-17 18:32:23 +00:00
Peter Steinberger
1569d29b2d
fix: normalize telegram forwarded context ( #1090 ) (thanks @sleontenko)
2026-01-17 18:08:23 +00:00
Peter Steinberger
13b931c006
refactor: prune legacy group prefixes
2026-01-17 08:47:25 +00:00
Peter Steinberger
3af391eec7
refactor: centralize group sender identity
2026-01-17 03:32:48 +00:00
Peter Steinberger
8312a19f02
fix: handle Telegram General topic thread params ( #848 ) (thanks @azade-c)
2026-01-16 00:08:56 +00:00
Azade
6146acbb69
fix(telegram): separate thread params for typing vs messages
...
Telegram General topic (id=1) has inconsistent API behavior:
- sendMessage: rejects explicit message_thread_id=1
- sendChatAction: requires message_thread_id=1 for typing to show
Split into two helper functions:
- buildTelegramThreadParams: excludes General topic for messages
- buildTypingThreadParams: includes General topic for typing
2026-01-15 23:32:30 +00:00
Peter Steinberger
c379191f80
chore: migrate to oxlint and oxfmt
...
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com >
2026-01-14 15:02:19 +00:00
Peter Steinberger
35cea9be25
refactor(telegram): split bot helpers
2026-01-14 05:40:07 +00:00