78 lines
1.4 KiB
Markdown
78 lines
1.4 KiB
Markdown
# Marvin Telegram Bot
|
|
|
|
Simple Telegram bot server that sends your Telegram messages to Gemini and replies back. OpenRouter can be configured as a fallback. Recent conversation memory is stored persistently in SQLite.
|
|
|
|
## Setup
|
|
|
|
1. Copy the environment file:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
2. Edit `.env` and add:
|
|
|
|
```env
|
|
TELEGRAM_BOT_TOKEN=...
|
|
GEMINI_API_KEY=...
|
|
OPENROUTER_API_KEY=...
|
|
```
|
|
|
|
Gemini is the primary provider. OpenRouter is optional, but useful as fallback.
|
|
|
|
Get keys from:
|
|
|
|
```text
|
|
https://aistudio.google.com/app/apikey
|
|
https://openrouter.ai/keys
|
|
```
|
|
|
|
3. Define the bot personality in `personality.md`.
|
|
|
|
Example:
|
|
|
|
```text
|
|
You are Marvin, a funny, slightly sarcastic assistant. Keep replies short and playful.
|
|
```
|
|
|
|
Optional settings in `.env`:
|
|
|
|
```env
|
|
GEMINI_MODEL=gemini-2.5-flash-lite
|
|
OPENROUTER_MODEL=openrouter/free
|
|
PERSONALITY_FILE=personality.md
|
|
MEMORY_DB=marvin.sqlite
|
|
MAX_HISTORY_MESSAGES=20
|
|
```
|
|
|
|
## Memory
|
|
|
|
Marvin stores chat messages and long-term memories in SQLite at `marvin.sqlite` by default.
|
|
|
|
The AI receives:
|
|
|
|
- the most recent `MAX_HISTORY_MESSAGES` chat messages
|
|
- all long-term memories for the current Telegram chat
|
|
|
|
Recent chat history commands:
|
|
|
|
```text
|
|
/forget
|
|
```
|
|
|
|
Long-term memory commands:
|
|
|
|
```text
|
|
/remember location = Zagreb
|
|
/memories
|
|
/forget_memory location
|
|
/forget_memories
|
|
```
|
|
|
|
4. Start the bot:
|
|
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
Then open Telegram and message your bot.
|