MuseBot Banner ๐Ÿš€ Connect your communication app to AI in just one minute [![GitHub Stars](https://img.shields.io/github/stars/yincongcyincong/MuseBot?style=flat-square&logo=github&color=yellow)](https://github.com/yincongcyincong/MuseBot/stargazers) [![GitHub Forks](https://img.shields.io/github/forks/yincongcyincong/MuseBot?style=flat-square&logo=github&color=blue)](https://github.com/yincongcyincong/MuseBot/network/members) [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/yincongcyincong/MuseBot/blob/main/LICENSE) [![Docker](https://img.shields.io/badge/Docker-deploy-2496ED?style=flat-square&logo=docker&logoColor=white)](https://hub.docker.com/search?q=musebot) [![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-auto-2088FF?style=flat-square&logo=github-actions&logoColor=white)](https://github.com/yincongcyincong/MuseBot/actions)
# MuseBot 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. [ไธญๆ–‡ๆ–‡ๆกฃ](https://github.com/yincongcyincong/MuseBot/blob/main/README_ZH.md) [ะšะธั‚ะฐะนัะบะฐั ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั](https://github.com/yincongcyincong/MuseBot/blob/main/README_RU.md) # Thanks ๆ„Ÿ่ฐข้˜ฎไธ€ๅณฐ่€ๅธˆ็š„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/ ## ๐Ÿš€ Features - ๐Ÿค– **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](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/imageconf.md). - ๐ŸŽบ **Support Voice**: use voice to communicate with LLM, see [doc](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/audioconf.md). - ๐Ÿ‚ **Function Call**: transform mcp protocol to function call, see [doc](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/functioncall.md). - ๐ŸŒŠ **RAG**: Support Rag to fill context, see [doc](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/rag.md). - ๐ŸŒž **AdminPlatform**: Use platform to manage MuseBot, see [doc](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/admin.md). - ๐ŸŒ› **Register**: With the service registration module, robot instances can be automatically registered to the registration center [doc](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/register.md) - ๐ŸŒˆ **Metrics**: Support Metrics for monitoring, see [doc](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/metrics.md). - ๐Ÿถ **Cron**: Support Cron to trigger LLM, see [doc](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/cron.md). ## Usage Video 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 ## ๐Ÿ“ธ Support Platform | Platform | Supported | Description | Docs / Links | |----------------------|:---------:|-----------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------| | ๐ŸŸฆ **Telegram** | โœ… | Supports Telegram bot (go-telegram-bot-api based, handles commands, inline buttons, ForceReply, etc.) | [Docs](https://github.com/yincongcyincong/MuseBot) | | ๐ŸŒˆ **Discord** | โœ… | Supports Discord bot | [Docs](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/discord.md) | | ๐ŸŒ› **Web API** | โœ… | Provides HTTP/Web API for interacting with LLM (great for custom frontends/backends) | [Docs](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/web_api.md) | | ๐Ÿ”ท **Slack** | โœ… | Supports Slack (Socket Mode / Events API / Block Kit interactions) | [Docs](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/slack.md) | | ๐ŸŸฃ **Lark (Feishu)** | โœ… | Supports Lark long connection & message handling (based on larksuite SDK, with image/audio download & message update) | [Docs](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/lark.md) | | ๐Ÿ†™ **DingDing** | โœ… | Supports Dingding long connection | [Docs](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/dingding.md) | | โšก๏ธ **Work WeChat** | โœ… | Support Work WeChat http callback to trigger LLM | [Docs](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/com_wechat.md) | | ๐ŸŒž **QQ** | โœ… | Support QQ http callback to trigger LLM | [Docs](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/qq.md) | | ๐Ÿš‡ **Wechat** | โœ… | Support Wechat http callback to trigger LLM | [Docs](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/wechat.md) | ## Supported Large Language Models | Model | Provider | Text Generation | Image Generation | Video Generation | Recognize Photo | TTS | Link | |---------------------|--------------|-----------------|:----------------:|:----------------:|----------------:|----:|---------------------------------------------------------------------------------------------------------------| | ๐ŸŒŸ **Gemini** | Google | โœ… | โœ… | โœ… | โœ… | โœ… | [doc](https://gemini.google.com/app) | | ๐Ÿ’ฌ **ChatGPT** | OpenAI | โœ… | โœ… | โŒ | โœ… | โœ… | [doc](https://chat.openai.com) | | ๐Ÿฆ **Doubao** | ByteDance | โœ… | โœ… | โœ… | โœ… | โœ… | [doc](https://www.volcengine.com/) | | ๐Ÿฆ **Qwen** | Aliyun | โœ… | โœ… | โœ… | โœ… | โœ… | [doc](https://bailian.console.aliyun.com/?spm=5176.12818093_47.overview_recent.1.663b2cc9wXXcVC&tab=api#/api) | | ๐Ÿง  **DeepSeek** | DeepSeek | โœ… | โŒ | โŒ | โŒ | โŒ | [doc](https://www.deepseek.com/) | | โš™๏ธ **302.AI** | 302.AI | โœ… | โœ… | โœ… | โœ… | โŒ | [doc](https://302.ai/) | | ๐ŸŒ **OpenRouter** | OpenRouter | โœ… | โœ… | โŒ | โœ… | โŒ | [doc](https://openrouter.ai/) | | ๐ŸŒ **ChatAnywhere** | ChatAnywhere | โœ… | โœ… | โŒ | โœ… | โŒ | [doc](https://api.chatanywhere.tech/#/) | ## ๐Ÿค– Text Example aa92b3c9580da6926a48fc1fc5c37c03 aa92b3c9580da6926a48fc1fc5c37c03 ## ๐ŸŽบ Multimodal Example aa92b3c9580da6926a48fc1fc5c37c03 aa92b3c9580da6926a48fc1fc5c37c03 ## ๐Ÿ“ฅ Installation 1. **Clone the repository** ```sh git clone https://github.com/yincongcyincong/MuseBot.git cd MuseBot ``` 2. **Install dependencies** ```sh go mod tidy ``` 3. **Set up environment variables** ```sh export TELEGRAM_BOT_TOKEN="your_telegram_bot_token" export DEEPSEEK_TOKEN="your_deepseek_api_key" ``` ## ๐Ÿš€ Usage Run the bot locally: ```sh go run main.go -telegram_bot_token=telegram-bot-token -deepseek_token=deepseek-auth-token ``` Use docker ```sh 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 ``` ```sh 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:latest ``` command: (doc)[https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/param_conf.md] ## โš™๏ธ Configuration 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](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](https://openrouter.ai/docs/quickstart) | - | | **ALIYUN_TOKEN** | Aliyun Bailian token [doc](https://bailian.console.aliyun.com/#/doc/?type=model&url=2840915) | - | | **AI_302_TOKEN** | 302.AI token [doc](https://302.ai/) | - | | **VOL_TOKEN** | Volcano Engine general token [doc](https://www.volcengine.com/docs/82379/1399008#b00dee71) | - | | **VOLC_AK** | Volcano Engine multimedia access key [doc](https://www.volcengine.com/docs/6444/1340578) | - | | **VOLC_SK** | Volcano Engine multimedia secret key [doc](https://www.volcengine.com/docs/6444/1340578) | - | | **ERNIE_AK** | Baidu ERNIE large model AK [doc](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Sly8bm96d) | - | | **ERNIE_SK** | Baidu ERNIE large model SK [doc](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Sly8bm96d) | - | | **CUSTOM_URL** | Custom LLM API endpoint | [https://api.deepseek.com/](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](http://127.0.0.1:7890)) | - | | **ROBOT_PROXY** | Bot network proxy (e.g. [http://127.0.0.1:7890](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 | - | ### CUSTOM_URL If you are using a self-deployed llm, you can set CUSTOM_URL to route requests to your self-deployed llm. ### DB_TYPE support sqlite3 or mysql ### DB_CONF 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. ### LANG choose a language for bot, English (`en`), Chinese (`zh`), Russian (`ru`). ### other config [deepseek_conf](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/deepseekconf.md) [photo_conf](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/photoconf.md) [video_conf](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/videoconf.md) [audio_conf](https://github.com/yincongcyincong/MuseBot/blob/main/static/doc/audioconf.md) ## Command ### /clear $clear clear all of your communication record with deepseek. this record use for helping deepseek to understand the context. ### /retry $retry retry last question. ### /txt_type /photo_type /video_type /rec_type $txt_type $photo_type $video_type $rec_type choose txt/photo/video/recognize model type. aa92b3c9580da6926a48fc1fc5c37c03 aa92b3c9580da6926a48fc1fc5c37c03 ### /txt_model /img_model /video_model /rec_model $txt_model $img_model $video_model $rec_model choose txt/photo/video/recognize model. aa92b3c9580da6926a48fc1fc5c37c03 aa92b3c9580da6926a48fc1fc5c37c03 ### /mode $mode show current model type and model. aa92b3c9580da6926a48fc1fc5c37c03 ### /state $state calculate one user token usage. aa92b3c9580da6926a48fc1fc5c37c03 ### /photo /edit_photo $photo $edit_photo aa92b3c9580da6926a48fc1fc5c37c03 /edit_photo will update you photo base on your description. aa92b3c9580da6926a48fc1fc5c37c03 ### /video $video aa92b3c9580da6926a48fc1fc5c37c03 ### /chat $chat allows the bot to chat through /chat command in groups, without the bot being set as admin of the group. aa92b3c9580da6926a48fc1fc5c37c03 ### /help $help aa92b3c9580da6926a48fc1fc5c37c03 ### /task $task multi agent communicate with each other! ## Deployment ### Deploy with Docker 1. **Build the Docker image** ```sh docker build -t MuseBot . ``` 2. **Run the container** ```sh 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 ``` ## Contributing Feel free to submit issues and pull requests to improve this bot. ๐Ÿš€ ## group 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 ## License MIT License ยฉ 2025 jack yin