751e82988c
Merge remote-tracking branch 'origin/main'
...
# Conflicts:
# nanobot/channels/qq.py
# nanobot/channels/telegram.py
# nanobot/channels/whatsapp.py
# tests/test_qq_channel.py
2026-03-24 12:00:05 +08:00
Chen Junda
2db2cc18f1
fix(qq): fix local file outbound and add svg as image type ( #2294 )
...
- Fix _read_media_bytes treating local paths as URLs: local file
handling code was dead code placed after an early return inside the
HTTP try/except block. Restructure to check for local paths (plain
path or file:// URI) before URL validation, so files like
/home/.../.nanobot/workspace/generated_image.svg can be read and
sent correctly.
- Add .svg to _IMAGE_EXTS so SVG files are uploaded as file_type=1
(image) instead of file_type=4 (file).
- Add tests for local path, file:// URI, and missing file cases.
Fixes: https://github.com/HKUDS/nanobot/pull/1667#issuecomment-4096400955
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 15:48:21 +08:00
Chen Junda
d7373db419
feat(qq): bot can send and receive images and files ( #1667 )
...
Implement file upload and sending for QQ C2C messages
Reference: https://github.com/tencent-connect/botpy/blob/master/examples/demo_c2c_reply_file.py
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: chengyongru <chengyongru.ai@gmail.com >
2026-03-23 15:47:59 +08:00
d838a12b56
feat(voice): add persona-driven tts and qq local media upload
2026-03-23 11:10:27 +08:00
f34462c076
fix(qq): allow file_data uploads without media url
2026-03-20 11:33:47 +08:00
9ac73f1e26
refactor(delivery): use workspace out as artifact root
Test Suite / test (3.11) (push) Failing after 1m24s
Test Suite / test (3.12) (push) Failing after 1m46s
Test Suite / test (3.13) (push) Failing after 2m1s
2026-03-20 09:10:33 +08:00
73af8c574e
feat(qq): prefer file_data for local uploads
Test Suite / test (3.12) (push) Has been cancelled
Test Suite / test (3.13) (push) Has been cancelled
Test Suite / test (3.11) (push) Has been cancelled
2026-03-20 08:39:14 +08:00
395fdc16f9
feat(qq): serve public media via gateway
2026-03-19 16:27:29 +08:00
Xubin Ren
af65145bc8
fix(qq): add configurable message format and onboard backfill
2026-03-14 08:25:44 +00:00
Xubin Ren
dbdb43faff
feat: channel plugin architecture with decoupled configs
...
- Add plugin discovery via Python entry_points (group: nanobot.channels)
- Move 11 channel Config classes from schema.py into their own channel modules
- ChannelsConfig now only keeps send_progress + send_tool_hints (extra=allow)
- Each built-in channel parses dict->Pydantic in __init__, zero internal changes
- All channels implement default_config() for onboard auto-population
- nanobot onboard injects defaults for all discovered channels (built-in + plugins)
- Add nanobot plugins list CLI command
- Add Channel Plugin Guide (docs/CHANNEL_PLUGIN_GUIDE.md)
- Fully backward compatible: existing config.json and sessions work as-is
- 340 tests pass, zero regressions
2026-03-14 16:13:38 +08:00
Frank
a09245e919
fix(qq): restore plain text replies for legacy clients
2026-03-12 12:48:25 -07:00
Re-bin
3e9c5aa34a
merge main into pr-532 and keep qq msg_seq/startup behavior while adding group @message support with regression tests
2026-03-07 16:22:41 +00:00