This repository provides a Chat bot (Telegram, Discord, Slack, Lark(飞书),钉钉, 企业微信, QQ, 微信) that integrates
with LLM API to provide
AI-powered responses. The bot supports openai deepseek gemini openrouter LLMs, making interactions feel
more natural and dynamic.
中文文档
Китайская документация
easiest way to use: https://www.youtube.com/watch?v=4UHoKRMfNZg
deepseek: https://www.youtube.com/watch?v=kPtNdLjKVn0
gemini: https://www.youtube.com/watch?v=7mV9RYvdE6I
chatgpt: https://www.youtube.com/watch?v=G_DZYMvd5Ug
- 🤖 AI Responses: Uses LLM API for chatbot replies.
- ⏳ Streaming Output: Sends responses in real-time to improve user experience.
- 🏗 Easy Deployment: Run locally or deploy to a cloud server.
- 👀 Identify Image: use image to communicate with LLM, see doc.
- 🎺 Support Voice: use voice to communicate with LLM, see doc.
- 🐂 Function Call: transform mcp protocol to function call, see doc.
- 🌊 RAG: Support Rag to fill context, see doc.
- 🌞 AdminPlatform: Use platform to manage MuseBot, see doc.
- 🌛 Register: With the service registration module, robot instances can be automatically registered to the registration center doc
- 🌈 Metrics: Support Metrics for monitoring, see doc.
| Platform | Supported | Description | Docs / Links |
|---|---|---|---|
| 🟦 Telegram | ✅ | Supports Telegram bot (go-telegram-bot-api based, handles commands, inline buttons, ForceReply, etc.) | Docs |
| 🌈 Discord | ✅ | Supports Discord bot | Docs |
| 🌛 Web API | ✅ | Provides HTTP/Web API for interacting with LLM (great for custom frontends/backends) | Docs |
| 🔷 Slack | ✅ | Supports Slack (Socket Mode / Events API / Block Kit interactions) | Docs |
| 🟣 Lark (Feishu) | ✅ | Supports Lark long connection & message handling (based on larksuite SDK, with image/audio download & message update) | Docs |
| 🆙 DingDing | ✅ | Supports Dingding long connection | Docs |
| ⚡️ Work WeChat | ✅ | Support Work WeChat http callback to trigger LLM | Docs |
| ✅ | Support QQ http callback to trigger LLM | Docs | |
| ✅ | Support Wechat http callback to trigger LLM | Docs |
| Model | Provider | Text Generation | Image Generation | Video Generation | Recognize Photo | TTS | Link |
|---|---|---|---|---|---|---|---|
| 🌟 Gemini | ✅ | ✅ | ✅ | ✅ | ✅ | doc | |
| 💬 ChatGPT | OpenAI | ✅ | ✅ | ❌ | ✅ | ✅ | doc |
| 🐦 Doubao | ByteDance | ✅ | ✅ | ✅ | ✅ | ✅ | doc |
| 🐦 Qwen | Aliyun | ✅ | ✅ | ✅ | ✅ | ✅ | doc |
| 🧠 DeepSeek | DeepSeek | ✅ | ❌ | ❌ | ❌ | ❌ | doc |
| ⚙️ 302.AI | 302.AI | ✅ | ✅ | ✅ | ✅ | ❌ | doc |
| 🌐 OpenRouter | OpenRouter | ✅ | ✅ | ❌ | ✅ | ❌ | doc |
| 🌐 ChatAnywhere | ChatAnywhere | ✅ | ✅ | ❌ | ✅ | ❌ | doc |
-
Clone the repository
git clone https://github.com/yincongcyincong/MuseBot.git cd MuseBot -
Install dependencies
go mod tidy
-
Set up environment variables
export TELEGRAM_BOT_TOKEN="your_telegram_bot_token" export DEEPSEEK_TOKEN="your_deepseek_api_key"
Run the bot locally:
go run main.go -telegram_bot_token=telegram-bot-token -deepseek_token=deepseek-auth-tokenUse docker
docker pull jackyin0822/musebot:latest
docker run -d -v /home/user/data:/app/data -e TELEGRAM_BOT_TOKEN="telegram-bot-token" -e DEEPSEEK_TOKEN="deepseek-auth-token" --name my-telegram-bot jackyin0822/MuseBot:latest ALIYUN:
docker pull crpi-i1dsvpjijxpgjgbv.cn-hangzhou.personal.cr.aliyuncs.com/jackyin0822/musebot:latestcommand: (doc)[https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/param_conf.md]
You can configure the bot via environment variables:
Here’s the English version of your environment variable table: If you use parameter. Please use lower letter and underscore. for example: ./MuseBot -telegram_bot_token=xxx
| Variable Name | Description | Default Value |
|---|---|---|
| TELEGRAM_BOT_TOKEN (required) | Telegram bot token | - |
| DISCORD_BOT_TOKEN | Discord bot token | - |
| SLACK_BOT_TOKEN | Slack bot token | - |
| SLACK_APP_TOKEN | Slack app-level token | - |
| LARK_APP_ID | Lark (Feishu) App ID | - |
| LARK_APP_SECRET | Lark (Feishu) App Secret | - |
| DING_CLIENT_ID | DingTalk App Key / Client ID | - |
| DING_CLIENT_SECRET | DingTalk App Secret | - |
| DING_TEMPLATE_ID | DingTalk template message ID | - |
| COM_WECHAT_TOKEN | WeCom (Enterprise WeChat) token | - |
| COM_WECHAT_ENCODING_AES_KEY | WeCom EncodingAESKey | - |
| COM_WECHAT_CORP_ID | WeCom CorpID | - |
| COM_WECHAT_SECRET | WeCom App Secret | - |
| COM_WECHAT_AGENT_ID | WeCom Agent ID | - |
| WECHAT_APP_ID | WeChat Official Account AppID | - |
| WECHAT_APP_SECRET | WeChat Official Account AppSecret | - |
| WECHAT_ENCODING_AES_KEY | WeChat Official Account EncodingAESKey | - |
| WECHAT_TOKEN | WeChat Official Account Token | - |
| WECHAT_ACTIVE | Whether to enable WeChat message listening (true/false) | false |
| QQ_APP_ID | QQ Open Platform AppID | - |
| QQ_APP_SECRET | QQ Open Platform AppSecret | - |
| QQ_ONEBOT_RECEIVE_TOKEN | Token for ONEBOT → MuseBot event messages | MuseBot |
| QQ_ONEBOT_SEND_TOKEN | Token for MuseBot → ONEBOT message sending | MuseBot |
| QQ_ONEBOT_HTTP_SERVER | ONEBOT HTTP server address | http://127.0.0.1:3000 |
| DEEPSEEK_TOKEN (required) | DeepSeek API key | - |
| OPENAI_TOKEN | OpenAI API key | - |
| GEMINI_TOKEN | Google Gemini API token | - |
| OPEN_ROUTER_TOKEN | OpenRouter token doc | - |
| ALIYUN_TOKEN | Aliyun Bailian token doc | - |
| AI_302_TOKEN | 302.AI token doc | - |
| VOL_TOKEN | Volcano Engine general token doc | - |
| VOLC_AK | Volcano Engine multimedia access key doc | - |
| VOLC_SK | Volcano Engine multimedia secret key doc | - |
| ERNIE_AK | Baidu ERNIE large model AK doc | - |
| ERNIE_SK | Baidu ERNIE large model SK doc | - |
| CUSTOM_URL | Custom DeepSeek API endpoint | https://api.deepseek.com/ |
| TYPE | LLM type (deepseek/openai/gemini/openrouter/vol/302-ai/chatanywhere) | deepseek |
| MEDIA_TYPE | Media generation source (openai/gemini/vol/openrouter/aliyun/302-ai) | vol |
| DB_TYPE | Database type (sqlite3/mysql) | sqlite3 |
| DB_CONF | Database config path or connection string | ./data/muse_bot.db |
| LLM_PROXY | LLM network proxy (e.g. http://127.0.0.1:7890) | - |
| ROBOT_PROXY | Bot network proxy (e.g. http://127.0.0.1:7890) | - |
| LANG | Language (en/zh) | en |
| TOKEN_PER_USER | Max tokens allowed per user | 10000 |
| MAX_USER_CHAT | Maximum concurrent chats per user | 2 |
| HTTP_HOST | MuseBot HTTP server port | :36060 |
| USE_TOOLS | Enable function-calling tools (true/false) | false |
| MAX_QA_PAIR | Max number of question-answer pairs to keep as context | 100 |
| CHARACTER | AI personality description | - |
| CRT_FILE | HTTPS certificate file path | - |
| KEY_FILE | HTTPS private key file path | - |
| CA_FILE | HTTPS CA certificate file path | - |
| ADMIN_USER_IDS | Comma-separated list of admin user IDs | - |
| ALLOWED_USER_IDS | Comma-separated user IDs allowed to use the bot; empty = all allowed; 0 = all banned | - |
| ALLOWED_GROUP_IDS | Comma-separated group IDs allowed to use the bot; empty = all allowed; 0 = all banned | - |
| BOT_NAME | Bot name | MuseBot |
| CHAT_ANY_WHERE_TOKEN | ChatAnyWhere platform token | - |
| SMART_MODE | Automatically check what you want to generate (txt/photo/video) | true |
If you are using a self-deployed DeepSeek, you can set CUSTOM_URL to route requests to your self-deployed DeepSeek.
deepseek: directly use deepseek service. but it's not very stable others: see doc
support sqlite3 or mysql
if DB_TYPE is sqlite3, give a file path, such as ./data/telegram_bot.db
if DB_TYPE is mysql, give a mysql link, such as
root:admin@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local, database must be created.
choose a language for bot, English (en), Chinese (zh), Russian (ru).
deepseek_conf
photo_conf
video_conf
audio_conf
clear all of your communication record with deepseek. this record use for helping deepseek to understand the context.
retry last question.
choose txt/photo/video/recognize model type.

choose txt/photo/video/recognize model.

show current model type and model.

calculate one user token usage.

/edit_photo will update you photo base on your description.

allows the bot to chat through /chat command in groups,
without the bot being set as admin of the group.

multi agent communicate with each other!
only for tencent app (wechat, qq, work wechat)
change photo base on your prompt.

only for tencent app (wechat, qq, work wechat)
recognize photo base on your prompt.

only for tencent app (wechat, qq, work wechat)
save your voice to pc.

-
Build the Docker image
docker build -t MuseBot . -
Run the container
docker run -d -v /home/user/xxx/data:/app/data -e TELEGRAM_BOT_TOKEN="telegram-bot-token" -e DEEPSEEK_TOKEN="deepseek-auth-token" --name my-bot MuseBot
Feel free to submit issues and pull requests to improve this bot. 🚀
telegram-group: https://t.me/+WtaMcDpaMOlhZTE1 , or you can have a try robot Guanwushan_bot.
every body have 10000 token to try this bot, please give me a star!
QQ群:1031411708
MIT License © 2025 jack yin