平台配置
如果你是一个成熟的平台开发者,可以忽略以下步骤,只需要进行这两步
- 填写平台相关信息至 storage/yml/secrt.yaml 即代表启用该平台服务,留空(注意不是整条注释掉)则不启用
- 配置回调地址时,路径为域名/secret(LR232,WECHAT等),加密后的路径
平台选择
- 以下是各平台参考
高校社团没有企业执照、企业资质、统一社会信用代码,只能申请个人类型的开放平台账号。在被当成行政组织审核各种材料的同时拿不出任何组织相关的证明(连百度百科都修改不了),谁来救救高校社团╥﹏╥...- 可以根据配置流程选择需要的平台进行配置
项目使用的平台
需求 | QQ(开放平台) | QQ(napcat) | 微信公众号 | B 站 | QQ 小程序 |
---|---|---|---|---|---|
注册方式 | QQ 邮箱 | QQ 号 | 微信公众号注册 | B 站账号 | QQ 邮箱 |
使用方式 | https(webhook) | napcat | http(webhook) | B 站网页端 api | https(域名) |
功能 | 被动回复消息(60分钟),功能面板,频道消息管理 | 发送消息、群管理等功能 | 被动回复消息(即时),创建草稿,发表 | 查询视频、回复私信、直播及发布相关 | JS小程序 |
- QQ 官方 bot 与小程序均在 QQ 开放平台注册,1 个 QQ 邮箱只能注册一个账号
- 本项目暂不考虑 qqbot 的频道相关功能
- qqbot 存在官方 python 脚本(botpy),使用 websocket 方法,但已停止支持
- qqbot 达到日活跃用户 2000 可以解锁被动发送 markdown 消息(特殊消息的一种,语法类似 markdown)(尝试沟通能不能为社团特殊开启,失败)
- qqbot 主动消息已经删除
- 微信公众号分为订阅号(面向个人)和服务号(面向企业),个人以个体工商户资质注册。认证指的是经过认证后在账号首页展示个人信息(参考)
- 微信公众号个人账号可以申请个人认证,企业账号可以申请企业认证,但企业属性较强却没有营业执照只能申请订阅号的社团无法申请成功个人认证
- 微信公众号认证后可以主动向用户发送消息、进行文章推送、配置自定义菜单等
- 微信公众号中,发表指的是在公众号主页发表文章,推送指的是在公众号主页发表文章并主动推送至用户消息列表,服务号每日拥有 4 次发表权限,订阅号只有 1 次
其他平台
平台 | 微博 | 微信对话开放平台 | 钉钉 | 飞书 | 豆瓣 | 百度贴吧 | 小红书 | 快手 | 抖音 | 知乎 | 今日头条 | 简书 | 虎扑 | soul |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
不使用原因 | 申请长期不成功 | 需要认证,且功能与微信公众号平台基本重合 | 可开发 | 可开发 | api 已停止申请,已申请的可继续使用 | api 已废弃,申请邮箱已注销 | 需商家认证 | 需企业认证 | 无私信api | 无 | 无 | 无 | 无 | 无 |
- 微博的申请注册过了一个月仍在审核中(微博粉丝服务平台),且无有效反馈通道(邮箱与对应微博号均无法解决问题),故暂不考虑微博相关功能,相关代码
- 微博配置流程参考,申请开发者账号,创建粉丝服务类应用,填写相关资料,选择管理中心-粉丝服务-高级功能,配置 URL 和 APPKEY
- 微信对话开放平台需要认证过的微信公众号,相比微信公众号平台在文章编辑、推送方面的功能缺失,整体偏向于微信商家与客服
- 微信对话开放平台可以设置对话流、调用自身 AI 接口总结文档等,同时支持消息 48 小时内回复,也许可以更好地接入本项目
- 微信对话开放平台可接入客服(微信号),从
公众号-用户
的消息传递变成了用户-公众号-用户
,使用得当可以实现类似微信机器人的效果 - 钉钉和飞书都可以在企业内部创建机器人,且 api 丰富,审核简单。由于社团并没有相关需求,故未进行尝试;如果申请了资深开发者认证,也可以发布飞书上的小程序
- 豆瓣 api 已停止申请,几个可以使用的公开 apikey 无法获取用户的日记或者绑定用户账号、无法回复私信和更新资讯等
- 小红书开放平台需要聚光平台的认证(商家),同时获取私信需要蒲公英平台的认证,需要蒲公英平台累积消耗 500w,整体偏向小红书商家
- 抖音开放平台个人仅能创建小游戏和直播小玩法
各平台需求
- 域名(同时支持 https): qqbot,qqapp
- 公网 ip:wechat,weibo,微信对话开放平台,钉钉,飞书
- 本地:napcat,bilibili
平台配置指南
填写 url 路径时记得最后加 /,如 whumystery.cn/qqbot/
qqbot(参考)
- 在 QQ 开放平台用自己的 QQ 注册账号,选择
注册-个人
(已经注册过的邮箱不能重复注册) - 创建机器人,填写名称、头像、简介(后续可修改)
- 在
开发-沙箱配置
中配置测试群(下拉选择,需为群主/管理员,且群成员小于20人),设置机器人类型(如果想所有人可随意加机器人好友则为公域,指定人加好友则为私域) - QQ 中进入测试群,
设置-群机器人
,搜索机器人并添加 - 在
开发-开发管理
中记录 AppID 和 AppSecret 至 storage/yml/secret.yaml
botpy(已停用)
- 官方 SDK botpy 可以直接使用,采用的是 websocket 连接方式
- 如果需要使用,需要修改两个函数: post_c2c_file 和 post_group_file,修改方式参考最上面两个函数,修改后可上传本地文件(修改前只能上传网上的 url 文件)
- 另外,可能需要加上一个 serve_forever,否则在异步环境中使用 botpy 且使用了其他 ws 连接的时候,会由于某些 ws 先关闭,导致停止程序时 botpy 会报错(botpy 里面自己创建了一个循环且没有使用 loop = asyncio.get_event_loop()导致)
- 在 botpy 包的 logging 文件中,会产生覆盖整个 root 日志的设置,所以必须在 main 里面最先导入 logging 模块,然后使用 botpy 同名日志模块去覆盖它的日志
napcat(参考)
- 目前采用 docker 方法一键配置,使用 docker 则跳过 2-4 步
- 前往 release 界面下载包,解压
- 建议先在电脑上安装 QQNT 并保存你的账号,如果未添加你的 qq 号,请在日志中找到生成的二维码并扫描
- 直接启动可以在 napcat.quick.bat 添加 qq 号后直接运行,
.\versions\*\resources\app\napcat\config\webui.json
中可以修改端口 - 记录 LR5921_ID 到 secret.yaml
- 启动后,访问 http://127.0.0.1:6099/webui?token=napcat 进行配置
- 配置 HTTP Server,
启用-开启 Debug-端口 5921-关闭 CORS 和 Websocket
;配置 HTTP Client,启用-开启 Debug-URL:http://lrobot:5922/LR5921/ -上报自身消息
(如果不用 docker 则把 lrobot 换成 localhost) 存在特殊时期,建议用小号作为机器人
wechat(参考)
- 登录微信公众号后,前往
设置与开发-开发接口管理
,记录 AppID,启用 AppSecret 并记录(管理员扫码),将服务器 ip 加入白名单 设置与开发-账号设置-注册信息-原始 ID
填写至 WECHAT_SELF- 微信公众号自定义菜单在开启服务器配置后无法使用,配置需参考这个
bilibili
- 登录 B 站页面(建议使用不常登录那个浏览器防止刷新 cookie),使用 F12,进入 Application,选择 storage 下面的
cookies-www.bilibili.com
,复制 _uuid,bili_jct 和 SESSDATA 到 secret.yaml 中 - 进入自己的主页,把 uid 填写到 secret.yaml 中(主页网址 .com/ 跟着的那串数字)
左上角直播-右侧开播设置
,复制直播间 ID (如果需要自动开启直播功能)
qqapp(参考)
- 填写小程序名称、简介,上传图片,设置类目标签,提交备案
- 下载开发工具
开发-开发设置
里记录 AppID 和 AppSecret
微信小程序
- 目前 QQ 可以使用微信小程序,但只能微信号登录,无法获取 QQ 相关信息
- 微信小程序包含 蓝牙、NFC 等多种功能
回调配置
- 配置前需要配置好服务器
- 将 secret_copy.py 更名成 secret.py,并编写路径替换函数
- 路径替换函数是为了防止消息被固定路径监听(如果每个人都是服务器/LR232 等等,消息很容易被泄露),提供几种加密方式:
- 将路径反过来
- 重复 n 遍路径
- 运行本项目
- 路径为:域名/路径
- 如 LR232 的路径为:域名/secret(LR232),如 whumystery.cn/xxx,xxx 为自定义的加密函数输出结果
qqbot
在开发-回调配置
中填并确定配置,勾选所有的单聊及群事件
wechat
设置与开发-服务器配置
填写服务器/域名,记录服务器配置-令牌
(Token)至 WECHAT_TOKEN(secret.yaml)
qqapp
开发-开发设置
里配置服务器域名