feat: add conversational Telegram AI chat
This commit is contained in:
18
README.md
18
README.md
@@ -164,6 +164,11 @@ TELEGRAM_BOT_TOKEN=
|
||||
TELEGRAM_CHAT_ID=
|
||||
TELEGRAM_POLL_INTERVAL=5000
|
||||
TELEGRAM_CHANNELS=
|
||||
TELEGRAM_AI_CHAT_ENABLED=true
|
||||
TELEGRAM_AI_HISTORY_MESSAGES=8
|
||||
TELEGRAM_AI_MAX_INPUT_CHARS=2000
|
||||
TELEGRAM_AI_MAX_TOKENS=2048
|
||||
TELEGRAM_AI_TIMEOUT_MS=300000
|
||||
DISCORD_BOT_TOKEN=
|
||||
DISCORD_CHANNEL_ID=
|
||||
DISCORD_GUILD_ID=
|
||||
@@ -360,13 +365,17 @@ Intelligence Terminal doubles as an interactive Telegram bot. Beyond sending ale
|
||||
| `/status` | System health, last sweep time, source status, LLM status |
|
||||
| `/sweep` | Trigger a manual sweep cycle |
|
||||
| `/brief` | Compact text summary of the latest intelligence (direction, key metrics, top OSINT) |
|
||||
| `/ask <question>` | Ask the configured LLM about the latest intelligence and conversation context |
|
||||
| `/reset` | Clear the in-memory AI conversation history |
|
||||
| `/portfolio` | Portfolio status (if Alpaca connected) |
|
||||
| `/alerts` | Recent alert history with tiers |
|
||||
| `/mute` / `/mute 2h` | Silence alerts for 1h (or custom duration) |
|
||||
| `/unmute` | Resume alerts |
|
||||
| `/help` | Show all available commands |
|
||||
|
||||
This requires `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` in `.env`. The bot polls for messages every 5 seconds (configurable via `TELEGRAM_POLL_INTERVAL`).
|
||||
Normal text messages in the configured private chat are treated as AI questions, so commands are optional. Answers include a compact snapshot of the latest sweep, recent ideas, evidence links, degraded sources, and a bounded conversation history. Snapshot fields are treated as untrusted evidence rather than instructions. Conversation history remains in memory only and is cleared on restart or with `/reset`.
|
||||
|
||||
This requires `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`, and a configured LLM in `.env`. The bot ignores every other chat ID and polls every 5 seconds by default. For group chats, BotFather privacy settings may prevent the bot from receiving normal text; private chat is recommended. Local reasoning models can take several minutes, so the bot refreshes Telegram's typing indicator while waiting.
|
||||
|
||||
### Discord Bot (Two-Way)
|
||||
|
||||
@@ -660,6 +669,11 @@ All settings are in `.env` with sensible defaults:
|
||||
| `TELEGRAM_CHAT_ID` | — | Your Telegram chat ID |
|
||||
| `TELEGRAM_CHANNELS` | — | Extra channel IDs to monitor (comma-separated) |
|
||||
| `TELEGRAM_POLL_INTERVAL` | `5000` | Bot command polling interval (ms) |
|
||||
| `TELEGRAM_AI_CHAT_ENABLED` | `true` | Reply to normal Telegram text with the configured LLM |
|
||||
| `TELEGRAM_AI_HISTORY_MESSAGES` | `8` | Maximum user/assistant messages retained in memory |
|
||||
| `TELEGRAM_AI_MAX_INPUT_CHARS` | `2000` | Maximum characters accepted from one Telegram message |
|
||||
| `TELEGRAM_AI_MAX_TOKENS` | `2048` | Maximum tokens for one Telegram AI answer |
|
||||
| `TELEGRAM_AI_TIMEOUT_MS` | `300000` | Telegram AI request timeout for local models |
|
||||
| `DISCORD_BOT_TOKEN` | disabled | For Discord alerts + slash commands |
|
||||
| `DISCORD_CHANNEL_ID` | — | Discord channel for alerts |
|
||||
| `DISCORD_GUILD_ID` | — | Server ID (instant slash command registration) |
|
||||
@@ -738,7 +752,7 @@ OpenSky can also return `HTTP 429` when its public hotspots are queried too aggr
|
||||
|
||||
### Telegram bot not responding to commands
|
||||
|
||||
Make sure both `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` are set in `.env`. The bot only responds to messages from the configured chat ID (security measure). You should see Telegram alert and bot polling startup lines in the server logs. If not, double-check your token with `curl https://api.telegram.org/bot<YOUR_TOKEN>/getMe`.
|
||||
Make sure `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`, and the LLM settings are present in `.env`. The bot only responds to the configured chat ID. Check `/status` for LLM and AI-chat state, then try `/ask What changed?`. You should see Telegram polling startup lines in the server logs. If command registration fails, verify the bot token without posting it publicly. In group chats, use `/ask` or adjust BotFather privacy settings because normal text may not be delivered to the bot.
|
||||
|
||||
### Discord bot not responding to slash commands
|
||||
|
||||
|
||||
Reference in New Issue
Block a user