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.
中文文档
Китайская документация
感谢阮一峰老师的weekly,很荣幸能登榜:https://github.com/ruanyf/weekly
感谢linux.do 社区,佬友们很给力,给一个我的介绍贴链接:https://linux.do/t/topic/1128110
Thanks to the Reddit community as well, even though a few of my subreddits got banned 😅: https://www.reddit.com/
- 🤖 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.
- 🐶 Cron: Support Cron to trigger LLM, see doc.
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
| 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
chmod 777 /home/user/data
docker run -d -v /home/user/data:/app/data -e TELEGRAM_BOT_TOKEN="telegram-bot-token" -e DEEPSEEK_TOKEN="deepseek-auth-token" -p 36060:36060 --name my-bot jackyin0822/MuseBot:latest ALIYUN:
docker pull crpi-i1dsvpjijxpgjgbv.cn-hangzhou.personal.cr.aliyuncs.com/jackyin0822/musebot:latest
chmod 777 /home/user/data
docker run -d -v /home/user/data:/app/data -e TELEGRAM_BOT_TOKEN="telegram-bot-token" -e DEEPSEEK_TOKEN="deepseek-auth-token" -p 36060:36060 --name my-bot 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 | 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 | 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 LLM 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, 0 means no limit | 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 |
| SEND_MCP_RES | send mcp result to user | false |
| DEFAULT_MODEL | default txt model | - |
If you are using a self-deployed llm, you can set CUSTOM_URL to route requests to your self-deployed llm.
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!
-
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