A delightful Telegram AI chat bot powered for aggregating models and API providers. ๐
If you're not sure where to start, check out cheahjs/free-llm-api-resources for a wealth of LLM API resources, and visit Telegram Bots for guidance on creating your own bot.
- ๐ก๏ธ Production-ready with super-robust error handling
- ๐ซ Magical streaming chat responses
- ๐ผ๏ธ Supports image in chat for multimodal LLM
- ๐ค Compatible with almost any API providers
- ๐ฎ Mix and match your favorite models and providers
- ๐ Keeps your chats and models safe with user access control
- ๐ Beautiful Telegram Markdown V2 formatting
- ๐ฏ Smart system prompts for better conversations
- ๐ชถ Light as a feather on your server
- Create a local data directory. Assume the data directory path is
/path/to/data:
mkdir -p /path/to/data-
Create a configuration file
config.tomlin/path/to/data. The configuration file's name must beconfig.toml, not any other name. Please refer toasset/example_config.tomlfor an example configuration. -
Run the Docker container (replace
/path/to/datawith the real data directory path):
sudo docker run -d \
--name ichigod \
-v /path/to/data:/etc/ichigod \
-e ICHIGOD_DATA_DIR=/etc/ichigod \
--restart unless-stopped \
dockerrewired/ichigo-bot:latest/chat- Chat with Ichigo (Can be omitted in private messages)/new- Start a new conversation/set- Switch to a different model/list- Show available models/list_prompts- List available system prompts/undo- Remove last conversation round/stop- Stop the current response/set_temp- Set text completion temperature/set_prompt- Set system prompt/help- Get the list of commands
Admin Commands:
/get_config- View current configuration/set_config- Update configuration and shutdown/clear- Clear data/tidy- Auto delete sessions and chat records whose IDs no longer exist
- Go 1.21 or later
- Make
- Python 3 with
telegramify-markdownpackage installed - A Telegram bot token (obtained via @BotFather)
- OpenAI API key or other compatible API provider credentials
- Tip: User IDs and group chat IDs can be retrieved via @RawDataBot
make buildThat's it! Assume the built binary is /project_root/target/ichigod.
- Move the built binary to
/usr/binand grant necessary permissions:
# Example commands
sudo chmod a+rx /project_root/target/ichigod
sudo cp -f /project_root/target/ichigod /usr/bin/ichigod- Create a data directory at
/etc/ichigod:
# Example commands
sudo mkdir -p /etc/ichigod-
Create a configuration file
config.tomlin/etc/ichigod. The configuration file's name must beconfig.toml, not any other name. Please refer toasset/example_config.tomlfor an example configuration. -
Create a Python virtual environment with
telegramify-markdowninstalled in/etc/ichigod/venv:
# Example commands
cd /etc/ichigod
python3 -m venv venv
source venv/bin/activate
pip install telegramify-markdown- Create a systemd service unit at
/etc/systemd/system/ichigod.service:
# Example service unit
[Unit]
Description=Ichigo Telegram Bot Service
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/ichigod
Restart=always
RestartSec=5
Environment="ICHIGOD_DATA_DIR=/etc/ichigod"
Environment="PATH=/etc/ichigod/venv/bin"
[Install]
WantedBy=multi-user.target- Enable and start the service:
# Example commands
sudo systemctl daemon-reload
sudo systemctl enable ichigod
sudo systemctl start ichigod- Check the service log:
# Example commands
sudo journalctl -u ichigod.service | tail -8
# Example outputs
# <redacted> systemd[1]: Started ichigod.service - Ichigo Telegram Bot Service.
# <redacted> ichigod[202711]: <redacted> INFO starting ichigod
# <redacted> ichigod[202711]: <redacted> INFO initializing bot service
# <redacted> ichigod[202711]: <redacted> INFO bot API client initialized username=<redacted> debug_mode=falseDevelopment commands:
make dev # Run in development mode
make debug # Run with debugger
make build # Build for current platform
make build_x64 # Build for Linux x64The bot looks for config.toml in these locations:
$ICHIGOD_DATA_DIR/etc/ichigod/$HOME/.config/ichigod/- Current directory