feat: add Discord integration with chat_bridge abstraction layer

Introduces a vendor-agnostic chat platform architecture:

- chat_bridge/base.py: ChatPlatform ABC, ChatMessage, ChatThread
- chat_bridge/registry.py: PlatformRegistry singleton
- chat_bridge/invite_parser.py: QR + Ollama vision invite extraction
- chat_bridge/vendors/discord.py: DiscordVendor with native threads

Workflow: paste a screenshot of a Discord invite or QR code at
POST /discord/join → Timmy extracts the invite automatically.

Every Discord conversation gets its own thread, keeping channels clean.
Bot responds to @mentions and DMs, routes through Timmy agent.

43 new tests (base classes, registry, invite parser, vendor, routes).

https://claude.ai/code/session_01WU4h3cQQiouMwmgYmAgkMM
This commit is contained in:
Claude
2026-02-25 01:11:14 +00:00
parent 2c419a777d
commit 15596ca325
14 changed files with 1464 additions and 0 deletions

View File

@@ -54,6 +54,12 @@ voice = [
telegram = [
"python-telegram-bot>=21.0",
]
# Discord: bridge Discord messages to Timmy with native thread support.
# pip install ".[discord]"
# Optional: pip install pyzbar Pillow (for QR code invite detection)
discord = [
"discord.py>=2.3.0",
]
# Creative: GPU-accelerated image, music, and video generation.
# pip install ".[creative]"
creative = [
@@ -84,6 +90,7 @@ include = [
"src/notifications",
"src/shortcuts",
"src/telegram_bot",
"src/chat_bridge",
"src/spark",
"src/tools",
"src/creative",