Git Product home page Git Product logo

wechatter's Introduction

WeChatter: Make WeChat Better

CI/CD GitHub Release GitHub License Welcome

介绍

一个基于 wechatbot-webhook 的微信机器人💬,支持 GPT 问答、热搜推送、天气预报、消息转发、小游戏、Webhook 提醒等功能。

wechatter show

快速开始

WeChatter 支持 Docker Compose 部署Docker 部署本地部署

Tip

推荐使用 Docker-compose 部署。

Docker Compose 部署

  1. 下载 WeChatter 配置文件
mkdir WeChatter && cd WeChatter
wget -O config_cps.yaml https://cdn.jsdelivr.net/gh/cassius0924/wechatter@master/config_cps.yaml.example
  1. 编辑 config_cps.yaml 配置文件
vim config_cps.yaml
  1. 下载 docker-compose.yml
wget https://cdn.jsdelivr.net/gh/cassius0924/wechatter@master/docker-compose.yml
  1. 运行 Docker Compose
docker-compose -f docker-compose.yml up
  1. 登录微信

使用微信扫描终端输出的二维码登录微信。

  1. 测试机器人

使用另一个微信尝试拍一拍机器人或给机器人发送 /help 指令。

tickled_show

支持的命令

  • GPT 问答(不支持定时任务)
  • Bilibili 热搜
  • 知乎热搜
  • 微博热搜
  • 抖音热搜
  • GitHub 趋势
  • 单词词语翻译(不支持定时任务)
  • 少数派早报
  • 历史上的今天
  • 二维码生成
  • 待办清单(不支持定时任务)
  • 人民日报 PDF
  • 天气预报
  • 食物热量
  • 冷知识
  • 中石化92号汽油指导价

Tip

命令帮助请使用 /help 命令查询或查看命令功能展示

支持的功能

  • 掉线提醒:当机器人掉线时,通过 Bark 推送提醒消息。

  • 消息可引用回复:用户可以通过引用并回复命令消息进一步获取消息内容。带(可引用:***)的机器人消息即为可进一步互动的可引用消息。

  • 消息转发:转发用户或群的消息到其他用户或群,并支持引用回复转发消息。需进行配置message_forwarding_and_quoted_reply_show

  • 公众号提醒:当指定公众号发布新文章时,机器人会给指定用户或群发送提醒。需进行配置official_account_reminder_show

  • 定时任务:大部分命令均支持定时任务。需进行配置

  • Discord 消息转发:基于 Discord Webhook,将微信消息转发到 Discord 频道。需进行配置

支持的游戏

  • 井字棋:双人游戏,图片游戏。 tictactoe_show

Tip

游戏相关命令帮助请使用查阅游戏基本命令

支持的 Webhook

  • GitHub 仓库 Webhook,需在 GitHub 仓库 Settings 中添加 Webhook 并进行配置github_webhook_show

配置文件

项目根目录中的 config.yaml.example 为配置文件模版,首次启动项目前需要复制一份配置文件,并命名为 config.yaml。 编辑 config.yaml

下表为配置项解释:

⚙️ WeChatter 配置

配置项 解释 备注
wechatter_port WeChatter服务器的端口,接受消息的端口 默认为 4000,需和 wxbotwebhook Docker 的 RECV_MSG_API 参数的端口一致

⚙️ WxBotWebhook 配置

配置项 解释 备注
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 配置

配置项 解释 备注
admin_list 设置管理员,用于接收机器人状态变化通知 填入管理员微信名(不是备注)
admin_group_list admin_list 同理,接收机器人状态变化通知 填入群名称(不是群备注)
bark_url 用于接收机器人状态变化通知的 Bark URL Bark 仅限 iOS 和 iPadOS

⚙️ Bot 配置

配置项 解释 备注
bot_name 微信机器人的名字 微信名称,非微信号

⚙️ Chat 配置

配置项 解释 备注
command_prefix 机器人命令前缀 默认为 / ,可以设置为>>! 等任意字符,可以为空,此项为空时触发命令不需要命令前缀
need_mentioned 群聊中的命令是否需要@机器人 默认为 False
ban_person_list 黑名单用户列表 机器人不会响应黑名单用户的消息
ban_group_list 黑名单群列表 机器人不会响应黑名单群的消息

⚙️ LLM 配置

配置项 解释 备注
openai_base_api OpenAI 服务的 BaseAPI 默认为 https://api.openai.com
openai_token OpenAI Token(Key) sk_ 开头的字符串密钥

⚙️ GitHub Webhook 配置

配置项 解释 备注
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 配置

配置项 子项 解释 备注
message_forwarding_enabled 功能开关,是否开启消息转发 默认为 False
message_forwarding_rule_list 消息规则列表,每个规则包含四个字段:from_listfrom_list_excludeto_person_listto_group_list
from_list 消息转发来源列表,即消息发送者 可以填多个用户名称或群名称,若要转发所有消息则使用 ["%ALL"]
from_list_exclude 消息转发来源排除列表,不转发此列表的用户和群 只在 from_list["%ALL"] 时生效
to_person_list 消息转发目标用户列表,即消息接收用户 可以填多个用户名称或为空列表
to_group_list 消息转发目标群列表,即消息接收群 可以填多个群名称或为空列表

⚙️ Official Account Reminder 配置

配置项 子项 解释 备注
official_account_reminder_enabled 功能开关,是否开启消息转发 默认为 True
official_account_reminder_rule_list 消息规则列表,每个规则包含三个字段:oa_name_listto_person_listto_group_list
oa_name_list 公众号名称列表 可以填多个公众号名称
to_person_list 消息转发目标用户列表,即消息接收用户 可以填多个用户名称或为空列表
to_group_list 消息转发目标群列表,即消息接收群 可以填多个群名称或为空列表

⚙️ Task Cron 配置

配置项 解释 备注
all_task_cron_enabled 所有定时任务的总开关 默认为 True
task_cron_list 定时任务列表,每个任务包含四个字段:taskenabledcroncommands

关于定时任务配置详细请参阅定时任务配置详细

⚙️ Custom Command Key 配置

配置项 解释 备注
custom_command_key_dict 自定义命令关键词字典,格式为 command: [key1, key2, ...], 其中 command 为命令名称,key1key2 为自定义命令关键词

关于命令名称可选值请参阅自定义命令关键词配置详细

⚙️ Discord Message Forwarding 配置

配置项 子项 解释 备注
discord_message_forwarding_enabled 功能开关,是否开启 Discord 消息转发 默认为 False
discord_message_forwarding_rule_list 消息规则列表,每个规则包含三个字段:from_listto_discord_webhook_urlto_discord_webhook_name
from_list 消息转发来源列表,即消息发送者 可以填多个用户名称或群名称,若要转发所有消息则使用 ["%ALL"]
from_list_exclude 消息转发来源排除列表,不转发此列表的用户和群 只在 from_list["%ALL"] 时生效
discord_webhook_url 消息转发目标 Discord Webhook URL

⚙️ GPT Mode Person 配置

配置项 解释 备注
gpt_mode_person_list 默认为 GPT 问答模式的用户列表 即带命令关键词的消息会正常触发相对应的命令,其余消息均判断为GPT命令
gpt_model 默认 GPT 问答的模型 可选值为 gpt35gpt4

日志文件

日志文件存放在项目根目录下的 logs/ 文件夹中。

默认的日志记录级别为 INFO,日志记录级别可选值有 DEBUGINFOWARNINGERRORCRITICAL

Docker Compose 部署时

若需要调整日志记录级别,请修改 docker-compose.yml 文件中的 WECHATTER_LOG_LEVEL 环境变量。

Docker 部署时

请修改 docker run 命令中的 WECHATTER_LOG_LEVEL 环境变量。

本地部署时

请修改系统环境变量 WECHATTER_LOG_LEVEL

export WECHATTER_LOG_LEVEL=DEBUG

贡献者

Thanks to the following people who have contributed to this project:

Contributors

插件化

Note

开发中...

Warning

本项目仍在开发中,欢迎提出建议和意见。

wechatter's People

Contributors

cassius0924 avatar ashesttt avatar dependabot[bot] avatar

Stargazers

behinder85 avatar 阿橙AIGC avatar C89 avatar  avatar  avatar starkwang avatar Charles avatar  avatar yingbo cheng avatar SICKCAT avatar  avatar Neo avatar  avatar  avatar  avatar King Judd avatar dui7 avatar 小布吕 avatar  avatar dydhyh avatar LC avatar  avatar lkzcman avatar  avatar  avatar  avatar LRWF avatar  avatar Phx avatar  avatar Aqr-K avatar TwinDagger avatar Gentle_ty avatar Dimitri Tholen avatar  avatar Xinyu avatar  avatar 孔明 avatar M4TR1X avatar  avatar  avatar Han Fangyuan avatar  avatar  avatar Bear_lele avatar Elena Thompson avatar hehan avatar  avatar 折松 avatar  avatar  avatar  avatar  avatar xiaorui16888 avatar Zhen Lei avatar  avatar  avatar 看我也没用 avatar Sam Sun avatar 极致 avatar xylp avatar  avatar  avatar  avatar fun_dl avatar  avatar Warlock avatar  avatar dgo2dance avatar

Watchers

 avatar  avatar  avatar  avatar

wechatter's Issues

机器人启动消息发送问题

在Admin配置的admin_list中设置了两个管理员用来接收机器人状态变化通知,其中一个是 文件传输助手,但每次启动机器人时,只能成功发送给 文件传输助手,另一个则发送失败。(另一个接收转发消息是没问题的)

024-03-19 17:32:26 wechatter     | 2024-03-19 09:32:26 | INFO | wechatter.app.routers.wechat:recv_wechat_msg:50 - 收到系统事件:system_event_login
2024-03-19 17:32:26 wechatter     | 2024-03-19 09:32:26 | INFO | wechatter.sender.notifier:notify_logged_in:28 - 微信机器人启动成功
2024-03-19 18:38:27 wxbotwebhook  | [2024-03-19T10:38:27.366] [INFO] - Message: Message#Unknown[🗣Contact<send>] 
2024-03-19 17:32:26 wechatter     | 2024-03-19 09:32:26 | INFO | wechatter.sender.sender:mass_send_msg_to_admins:395 - 发送消息给管理员:['文件传输助手', 'IUIUI']
2024-03-19 18:38:27 wxbotwebhook  | [2024-03-19T10:38:27.366] [INFO] - starting fetching api: http://wechatter:4000/receive_msg 
2024-03-19 17:32:26 wechatter     | 2024-03-19 09:32:26 | WARNING | wechatter.sender.sender:logging_wrapper:62 - 发送消息失败,部分消息发送成功: [{'to': '文件传输助手', 'isRoom': False, 'data': {'type': 'text', 'content': '微信机器人启动成功'}}, {'to': 'IUIUI', 'isRoom': False, 'data': {'type': 'text', 'content': '微信机器人启动成功'}}]
2024-03-19 18:38:27 wxbotwebhook  | [2024-03-19T10:38:27.376] [ERROR] - HTTP error When trying to send Data to RecvdApi: 422 
2024-03-19 17:32:26 wechatter     | INFO:     172.18.0.2:50414 - "POST /receive_msg HTTP/1.1" 200 OK
2024-03-19 18:38:31 wxbotwebhook  | [2024-03-19T10:38:31.495] [INFO] - Message: Message#Unknown[🗣Contact<send>] 
2024-03-19 17:32:26 wechatter     | 2024-03-19 09:32:26 | INFO | wechatter.app.routers.wechat:add_message:160 - 消息 19 已添加到数据库
2024-03-19 18:38:31 wxbotwebhook  | [2024-03-19T10:38:31.497] [INFO] - starting fetching api: http://wechatter:4000/receive_msg 
2024-03-19 18:38:31 wxbotwebhook  | [2024-03-19T10:38:31.511] [ERROR] - HTTP error When trying to send Data to RecvdApi: 422 
2024-03-19 18:39:14 wxbotwebhook  | [2024-03-19T10:39:14.854] [INFO] - Message: Message#Unknown[🗣Contact<send>] 
2024-03-19 18:39:14 wxbotwebhook  | [2024-03-19T10:39:14.855] [INFO] - starting fetching api: http://wechatter:4000/receive_msg 
2024-03-19 18:39:14 wxbotwebhook  | [2024-03-19T10:39:14.863] [ERROR] - HTTP error When trying to send Data to RecvdApi: 422 
2024-03-19 18:39:25 wxbotwebhook  | [2024-03-19T10:39:25.354] [INFO] - Message: Message#Unknown[🗣Contact<send>] 
2024-03-19 18:39:25 wxbotwebhook  | [2024-03-19T10:39:25.355] [INFO] - starting fetching api: http://wechatter:4000/receive_msg 
2024-03-19 18:39:25 wxbotwebhook  | [2024-03-19T10:39:25.366] [ERROR] - HTTP error When trying to send Data to RecvdApi: 422 
2024-03-19 18:39:28 wxbotwebhook  | [2024-03-19T10:39:28.956] [INFO] - Message: Message#Unknown[🗣Contact<send>] 
2024-03-19 18:39:28 wxbotwebhook  | [2024-03-19T10:39:28.957] [INFO] - starting fetching api: http://wechatter:4000/receive_msg 
2024-03-19 18:39:28 wxbotwebhook  | [2024-03-19T10:39:28.966] [ERROR] - HTTP error When trying to send Data to RecvdApi: 422 
2024-03-19 18:39:32 wxbotwebhook  | [2024-03-19T10:39:32.806] [INFO] - Message: Message#Unknown[🗣Contact<send>] 
2024-03-19 18:39:32 wxbotwebhook  | [2024-03-19T10:39:32.806] [INFO] - starting fetching api: http://wechatter:4000/receive_msg 
2024-03-19 18:39:32 wxbotwebhook  | [2024-03-19T10:39:32.818] [ERROR] - HTTP error When trying to send Data to RecvdApi: 422 
2024-03-19 18:44:15 wxbotwebhook  | [2024-03-19T10:44:15.382] [INFO] - Message: Message#Unknown[🗣Contact<send>] 
2024-03-19 18:44:15 wxbotwebhook  | [2024-03-19T10:44:15.383] [INFO] - starting fetching api: http://wechatter:4000/receive_msg 
2024-03-19 18:44:15 wxbotwebhook  | [2024-03-19T10:44:15.402] [ERROR] - HTTP error When trying to send Data to RecvdApi: 422 
2024-03-19 18:49:15 wxbotwebhook  | [2024-03-19T10:49:15.501] [INFO] - Message: Message#Unknown[🗣Contact<send>] 
2024-03-19 17:32:26 wechatter     | 消息内容:微信机器人启动成功
2024-03-19 18:49:15 wxbotwebhook  | [2024-03-19T10:49:15.503] [INFO] - starting fetching api: http://wechatter:4000/receive_msg 
2024-03-19 18:49:15 wxbotwebhook  | [2024-03-19T10:49:15.529] [ERROR] - HTTP error When trying to send Data to RecvdApi: 422 

使用备注名指定发送对象,备注名作为好友唯一标识符

由于 Web 协议的微信的微信好友 ID 不固定,会在重新登录微信机器人时发生变化,好友名称也会随好友更改而变化,二者均不可作为好友的唯一标识符。

WeChatter v0.6.0 版本及以前版本使用好友 ID 作为好友标识符,存在好友数据丢失问题。

所以选择使用备注名作为好友的唯一标识符,解决微信好友 ID 变化导致的好友数据丢失问题。

私聊无法畅通聊天

私聊情况下,每次必须带命令 否则报”该消息不是命令类型“

群聊的情况下报”送消息失败,接收者为空:_send_msg1“

消息未回复提醒 check_unanswered_messages

大佬您好,不知道能否实现对未回复消息的提醒,情景是如果检测到机器人账号在指定时间(例如十分钟)未回复消息,则自动转发消息给到指定用户。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.