An open API service indexing awesome lists of open source software.

https://github.com/yincongcyincong/musebot

supports Telegram, Discord, Slack, Lark(飞书),钉钉, 企业微信, QQ, 微信, compatible with various LLMs including OpenAI, Gemini, DeepSeek, Doubao, and OpenRouter. It offers intelligent conversation, image generation, video creation, and more. Works seamlessly in both private chats and group settings.
https://github.com/yincongcyincong/musebot

ai-bot deepseek discord feishu gemini openai openrouter slack telegram wechat

Last synced: 4 months ago
JSON representation

supports Telegram, Discord, Slack, Lark(飞书),钉钉, 企业微信, QQ, 微信, compatible with various LLMs including OpenAI, Gemini, DeepSeek, Doubao, and OpenRouter. It offers intelligent conversation, image generation, video creation, and more. Works seamlessly in both private chats and group settings.

Awesome Lists containing this project

README

          


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