一個基於wechatbot-webhook 的微信機器人,支援GPT 問答、熱搜推送、天氣預報、訊息轉發、小遊戲、Webhook 提醒等功能。
WeChatter 支援Docker Compose 部署、Docker 部署和本機部署。
Tip
建議使用Docker-compose 部署。
mkdir WeChatter && cd WeChatter
wget -O config_cps.yaml https://cdn.jsdelivr.net/gh/cassius0924/wechatter@master/config_cps.yaml.example
config_cps.yaml
設定檔vim config_cps.yaml
wget https://cdn.jsdelivr.net/gh/cassius0924/wechatter@master/docker-compose.yml
docker-compose -f docker-compose.yml up
使用微信掃描終端輸出的二維碼登入微信。
使用另一個微信嘗試拍一拍機器人或給機器人/help
指令。
Tip
命令幫助請使用/help
命令查詢或查看命令功能展示。
掉線提醒:當機器人斷線時,透過Bark 推播提醒訊息。
訊息可引用回覆:使用者可以透過引用並回覆命令訊息進一步取得訊息內容。帶有(可引用:***)
的機器人訊息即為可進一步互動的可引用訊息。
訊息轉發:轉發使用者或群組的訊息到其他使用者或群組,並支援引用回覆轉發訊息。需進行配置。
公眾號提醒:當指定公眾號發布新文章時,機器人會發送提醒給指定使用者或群組。需進行配置。
定時任務:大部分指令均支援定時任務。需進行配置。
Discord 訊息轉發:基於Discord Webhook,將微信訊息轉發到Discord 頻道。需進行配置。
Tip
遊戲相關指令幫助請使用查閱遊戲基本指令。
專案根目錄中的config.yaml.example
為設定檔模版,首次啟動專案前需要複製一份設定文件,並命名為config.yaml
。 編輯config.yaml
。
下表為配置項解釋:
配置項 | 解釋 | 備註 |
---|---|---|
wechatter_port | WeChatter伺服器的端口,接受訊息的端口 | 預設為4000 ,需和wxbotwebhook Docker 的RECV_MSG_API 參數的連接埠一致 |
配置項 | 解釋 | 備註 |
---|---|---|
wx_webhook_base_api | 發送訊息的BaseAPI | 預設為http://localhost:3001 ,即wxBotWebhook Docker 的位址。 Docker Compose 部署時預設為http://wxbotwebhook:3001 |
wx_webhook_recv_api_path | 接收訊息的介面路徑 | 預設為/receive_msg ,此路徑為Docker 參數RECVD_MSG_API 的路徑 |
wx_webhook_token | wxBotWebhook 的Token | Docker Compose 部署時預設為wechatter |
配置項 | 解釋 | 備註 |
---|---|---|
admin_list | 設定管理員,用於接收機器人狀態變更通知 | 填入管理員微信名(不是備註) |
admin_group_list | 與admin_list 同理,接收機器人狀態變化通知 | 填入群組名稱(不是群備註) |
bark_url | 用於接收機器人狀態變化通知的Bark URL | Bark 僅限iOS 和iPadOS |
配置項 | 解釋 | 備註 |
---|---|---|
bot_name | 微信機器人的名字 | 微信名稱,非微訊號 |
配置項 | 解釋 | 備註 |
---|---|---|
command_prefix | 機器人命令前綴 | 預設為/ ,可以設定為>> 、 ! 等任意字符,可以為空,此項為空時觸發命令不需要命令前綴 |
need_mentioned | 群組聊天中的命令是否需要@機器人 | 預設為False |
ban_person_list | 黑名單用戶列表 | 機器人不會回應黑名單用戶的消息 |
ban_group_list | 黑名單群組列表 | 機器人不會回應黑名單群的消息 |
配置項 | 解釋 | 備註 |
---|---|---|
openai_base_api | OpenAI 服務的BaseAPI | 預設為https://api.openai.com |
openai_token | OpenAI Token(Key) | 以sk_ 開頭的字串金鑰 |
取得途徑:訊飛星火大模式-AI大語言模式-星火大模式-科大訊飛
配置項 | 解釋 | 備註 |
---|---|---|
spark_api | 星火大模型服務的BaseAPI | 預設為https://spark-api-open.xf-yun.com/v1/chat/completions |
spark_model | 指定存取的模型版本 | lite指向Lite版本;4.0Ultra指向4.0 Ultra版本; |
spark_token | 星火大模型的Token | 字串金鑰 |
取得途徑:https://console.x.ai/
配置項 | 解釋 | 備註 |
---|---|---|
grok_api | Grok服務的BaseAPI | 預設為https://api.x.ai/v1/chat/completions |
grok_model | 指定存取的模型版本 | 預設為grok-beta |
grok_token | Grok的Token | 字串金鑰 |
配置項 | 解釋 | 備註 |
---|---|---|
github_webhook_enabled | 功能開關,是否接收GitHub Webhook | 預設為False |
github_webhook_api_path | 接收GitHub Webhook 的介面路徑 | 預設為/webhook/github |
github_webhook_receiver_list | 接收GitHub Webhook 的微信用戶 | |
github_webhook_receive_group_list | 接收GitHub Webhook 的微信群 |
配置項 | 子項 | 解釋 | 備註 |
---|---|---|---|
message_forwarding_enabled | 功能開關,是否開啟訊息轉發 | 預設為False | |
message_forwarding_rule_list | 訊息規則列表,每個規則包含四個欄位: from_list 、 from_list_exclude 、 to_person_list 和to_group_list | ||
from_list | 訊息轉發來源列表,即訊息發送者 | 可以填入多個使用者名稱或群組名稱,若要轉送所有訊息則使用["%ALL"] | |
from_list_exclude | 訊息轉送來源排除列表,不轉送此列表的使用者和群組 | 只在from_list 為["%ALL"] 時生效 | |
to_person_list | 訊息轉發目標用戶列表,即訊息接收用戶 | 可以填多個使用者名稱或為空白列表 | |
to_group_list | 訊息轉發目標群列表,即訊息接收群 | 可以填多個群組名稱或為空白列表 |
配置項 | 子項 | 解釋 | 備註 |
---|---|---|---|
official_account_reminder_enabled | 功能開關,是否開啟訊息轉發 | 預設為True | |
official_account_reminder_rule_list | 訊息規則列表,每個規則包含三個欄位: oa_name_list 、 to_person_list 和to_group_list | ||
oa_name_list | 公眾號名稱列表 | 可填多個公眾號名稱 | |
to_person_list | 訊息轉發目標用戶列表,即訊息接收用戶 | 可以填多個使用者名稱或為空白列表 | |
to_group_list | 訊息轉發目標群列表,即訊息接收群 | 可以填多個群組名稱或為空白列表 |
配置項 | 解釋 | 備註 |
---|---|---|
all_task_cron_enabled | 所有定時任務的總開關 | 預設為True |
task_cron_list | 定時任務列表,每個任務包含四個欄位: task 、 enabled 、 cron 和commands |
關於定時任務配置詳細請參閱定時任務配置詳細。
配置項 | 解釋 | 備註 |
---|---|---|
custom_command_key_dict | 自訂指令關鍵字字典,格式為command: [key1, key2, ...] , 其中command 為指令名稱, key1 和key2 為自訂指令關鍵字 |
關於命令名稱可選值請參閱自訂命令關鍵字配置詳細。
配置項 | 子項 | 解釋 | 備註 |
---|---|---|---|
discord_message_forwarding_enabled | 功能開關,是否開啟Discord 訊息轉發 | 預設為False | |
discord_message_forwarding_rule_list | 訊息規則列表,每個規則包含三個欄位: from_list 、 to_discord_webhook_url 和to_discord_webhook_name | ||
from_list | 訊息轉發來源列表,即訊息發送者 | 可以填入多個使用者名稱或群組名稱,若要轉送所有訊息則使用["%ALL"] | |
from_list_exclude | 訊息轉送來源排除列表,不轉送此列表的使用者和群組 | 只在from_list 為["%ALL"] 時生效 | |
discord_webhook_url | 訊息轉發目標Discord Webhook URL |
配置項 | 解釋 | 備註 |
---|---|---|
gpt_mode_person_list | 預設為GPT 問答模式的使用者列表 | 即指令關鍵字的訊息會正常觸發相對應的指令,其餘訊息皆判斷為GPT指令 |
gpt_model | 預設GPT 問答的模型 | 可選值為gpt35 、 gpt4 |
日誌檔案存放在專案根目錄下的logs/
資料夾中。
預設的日誌記錄等級為INFO
,日誌記錄等級可選值有DEBUG
、 INFO
、 WARNING
、 ERROR
、 CRITICAL
。
若需要調整日誌記錄級別,請修改docker-compose.yml
檔案中的WECHATTER_LOG_LEVEL
環境變數。
請修改docker run
指令中的WECHATTER_LOG_LEVEL
環境變數。
請修改系統環境變數WECHATTER_LOG_LEVEL
。
export WECHATTER_LOG_LEVEL=DEBUG
Thanks to the following people who have contributed to this project:
Note
開發中...
Warning
本項目仍在開發中,歡迎提出建議和意見。