桃桃Bot
此项目是基于 NoneBot2 和 go-cqhttp 的QQ群聊娱乐机器人
借(chao)鉴(xi)了大佬们的代码,实现了一些对群友的娱乐功能和实用功能(大概
项目地址: https://github.com/tkgs0/Momoko
NoneBot2
非常 [ NICE ] 的Bot框架
声明
此项目仅用于学习交流,不可商用以及非法用途
功能表
本项目支持使用 nb-cli
从 nonebot插件商店 安装插件
插件控制
暂时没有涩图 - setu
⏩使用方法
/setu {数量} {关键词}
私聊(群聊)启用(禁用)涩图 qq qq1 qq2 ...
查看涩图设置
切换涩图api # lolicon, acggov
启用(禁用)涩图 # 在当前会话启用(禁用)涩图
重置涩图 # 重置涩图设置示例:
/setu
/setu 3
/setu 阿波尼亚
/setu 3 阿波尼亚
/setu 3 R-18 阿波尼亚 水着嘴臭屏蔽 - anti abuse
⏩使用方法
检测到有用户
@机器人
并嘴臭时将其临时屏蔽(bot重启后失效)当bot为群管理时会请对方喝昏睡红茶(禁言)
- 超级用户不受临时屏蔽影响
但是会被昏睡红茶影响 - 当bot的群权限比超级用户高的时候, 超级用户也有机会品尝昏睡红茶
- 被bot灌了昏睡红茶的用户不会进临时黑名单
- 开启
对线模式
后不会被bot灌昏睡红茶和临时拉黑 (因为要对线)
指令 权限 需要@ 范围 说明 ^(添加|删除)屏蔽词 xxx 主人 否 私聊 | 群聊 可输入多个,
用空格隔开解除屏蔽 qq 主人 否 私聊 | 群聊 查看临时黑名单 主人 否 私聊 | 群聊 ^(禁用|启用)飞(妈|马|🐴|🐎)令 主人 否 私聊 | 群聊 开启/关闭对线模式 P.S.
解除屏蔽
可以解除临时屏蔽, 也可以解除禁言(当然, 需要bot为群管理).你说从聊天界面查看屏蔽词库? 噢, 我亲爱的老伙计, 你怕是疯了!
- 超级用户不受临时屏蔽影响
黑名单 - blacklist
好友/群聊管理 - manager
⏩使用方法
踢出群聊 @qq @qq1 @qq2 ...
禁言 @qq @qq1 @qq2 ... XX分钟(/小时/天)
解除禁言 @qq @qq1 @qq2 ...
我要自闭 XX分钟(/小时/天)
开启(关闭)全员禁言
设为(撤销)管理 @qq @qq1 @qq2 ...
允许(禁止)匿名
修改名片(头衔) @qq @qq1 @qq2 ... XXXX
设置群名 XXXX
申请头衔 XXXX
撤回 # 回复消息发送`撤回`以下命令需要前缀
/
同意(拒绝)好友 FLAG 备注
同意(拒绝)拉群 FLAG
[群聊] 同意(拒绝)入群 FLAG 理由
## `备注` 和 `理由` 可省略
查看好友(群聊)请求
清空好友(入群/拉群)请求
好友(拉群)自动同意(拒绝)
关闭好友(拉群)自动
[群聊] 入群自动同意(拒绝)
[群聊] 关闭入群自动
重置请求自动以下命令需要
@机器人
(私聊不用)设置网名 XXXX
查找好友(群) qq qq1 qq2 ...
查看所有好友(群)
查看单向好友
退群 qq qq1 qq2 ... # 未输入群号则退出当前群聊
删除好友 qq qq1 qq2 ...
删除单向好友 qq qq1 qq2 ...
查看群员列表
设置群头像[图片] # ⚠该API不稳定!关键词禁言
可批量添加多个关键词, 以换行隔开使用方式:
关键词(/正则)禁言 XX分(/时/日/月)
[ocr]
内容1
内容2
内容3
删除禁言关键词(/正则)
内容1
内容2
内容3
查看禁言关键词(/正则)
清理群禁言规则 qq qq1 qq2 ...
# 用于清理已炸或已退出的群聊残留的规则
/reset_keyword_ban_db
# 重置数据库
示例:
关键词禁言 1天
吃柠檬
尼玛
群主是沙壁
来点🐍图
正则禁言 30天
http(s)?://.*
.*(是|做).+的(狗|猫)自检 - status
调用命令行 - sys cmd
⏩使用方法
调用系统命令行
⚠危险操作, 谨慎使用!
>shell {命令}
示例:
>shell echo "Hello World"
说 - echo
⏩使用方法
@机器人
并加上 冒号:
发送你想让机器人说的话:xxxxx
为防止用户滥用导致封号,限制仅超级用户可用
B链解析 - analysis bilibili
反闪照 - anti flash
⏩使用方法
抄自 KafCoppelia 的 AntiFlash
在
env
内设置:ANTI_FLASH_ON=true # 全局开关
ANTI_FLASH_GROUP=["123456789", "987654321"] # 默认开启的群聊,但可通过指令开关
ANTI_FLASH_PATH="your-path-to-config.json" # 配置文件路径,默认同插件代码路径ANTI_FLASH_GROUP
会在每次初始化时写入配置文件,在群组启用反闪照,可通过指令更改。修改 配置文件即读即改,可后台修改。
- 全局开关仅超管配置,不支持指令修改全局开关;
- 各群聊均配置开关,需管理员及超管权限进行修改;
指令:
开启/启用/禁用反闪照
反撤回 - anti recall
彩云小梦 - caiyun ai
⏩使用方法
配置:
需要在
.env
文件中添加彩云小梦apikey:CAIYUNAI_APIKEY=xxx
apikey获取:
前往 http://if.caiyunai.com/dream 注册彩云小梦用户;
注册完成后,F12打开开发者工具;
在控制台中输入
alert(localStorage.cy_dream_user)
,弹出窗口中的 uid 即为 apikey;或者进行一次续写,在 Network 中查看 novel_ai 请求,Payload 中的 uid 项即为 apikey。
使用:
续写/彩云小梦 xxx
在线跑代码 - code runner
群文件直链提取 - direct linker
合并转发 - fake msg
你看我像 - look like
⏩使用方法
@机器人
发送你看我像
你看我像人吗?
搜图 - PicSearch
RSS订阅 - rss
点歌 - simplemusic
拟声鸟 - mockingbird
⏩使用方法
将 MWTJC/mockingbird真寻适配版 重新DIY成 nonebot 通用版
@机器人
并加上 说 发送你想让机器人说的话说xxxxx
更多设置:
显示模型
修改模型 [序号]\[模型名称]
开启/关闭tts 切换使用腾讯TTS(需要配置secret_key)
重载模型 进行模型重载(并没有什么卵用,或许以后内存泄漏解决会有用?)
调整/修改精度 修改语音合成精度(对TTS无效)
调整/修改句长 修改语音合成最大句长(对TTS无效)
更新模型 更新模型列表⏩可选配置
可在
.env
中添加如下配置mockingbird_path="xxx/xxx/xxx" # 存放mockingbird资源文件的路径
# 默认为 "<bot所在文件夹>/data/mockingbird"
super_only=true # 是否限制仅超级用户使用
# 默认为 true
tencent_secret_id="TENCENT_SECRET_ID"
tencent_secret_key=""
# TTS模式需要配置腾讯云 SECRET_ID 和 SECRET_KEY没有自定义需求的变量请不要写进 .env
闲聊 - smart reply
⏩使用方法
抄自 Special-Week 的 SmartReply
@机器人
+ 你想对机器人说的骚话不可以色色
设置回复模式 小思/小爱注意事项
- 文本消息默认调用 mockingbird 生成语音
- 如不需要可以直接将 mockingbird 移动到别的 plugins 文件夹里 (或者直接删除 mockingbird)
- 本插件的小爱语音功能非 mockingbird 控制
- 小爱语音需在 .env 添加
XIAOAI_VOICE=true
塔罗牌 - tarot
⏩使用方法
抽塔罗牌
词库问答 (你问我答) - wordbank
部署方式
安装系统
推荐 不推荐 Debian 11 以上 Debian 10 以下 Ubuntu 20 以上 Ubuntu 18 以下 Windows 10 以上 CentOS MacOS 安装3.9版本以上的Python, 安装ffmpeg(bot发语音需要), 并正确配置环境变量
下载本项目到本地
- 需要注意的是: 请确保将本项目放在纯英文、数字、下划线的路径下.
- 如果你不知道什么叫做路径, 建议你把电脑放进水里泡一下.
打开本项目所在目录
打开隐藏文件
.env
, 填写以下信息:⏩点击展开
SUPERUSERS=[""] # 填写用于控制bot的超级用户QQ
# 可填写多个 例如: ["123456","654321"]
NICKNAME=["桃桃", "桃桃酱"] # 机器人的昵称
SETU_COOLDOWN=60 # 涩图的响应cd 为0则无冷却
SETU_WITHDRAW=60 # 涩图的撤回cd < 120 为0则不撤回
LOLICON_R18=2 # Lolicon API设置
# 0为非R18,1为R18,2为混合(在库中的分类,不等同于作品本身的 R-18 标识)
PIXPROXY="" # pximg图片代理, 需要填写前缀 https:// 或 http://
# 留空为直连 i.pximg.net
ACGGOV_TOKEN="apikey"
ANTI_FLASH_GROUP=[""] # 填写默认开启 反闪照 的群聊, 可留空.
# 可填写多个 例如: ["123456","654321"]
SAUCENAO_API_KEY="" # 在引号里填写你在 saucenao.com 申请到的 apikey
# 缺少该项将无法正常使用搜图.
EXHENTAI_COOKIES="" # 在引号里填写你的 exhentai cookies, 可留空.
CAIYUNAI_APIKEY="" # 在引号里填写你的 彩云小梦 apikey
# 缺少该项将无法正常使用小梦续写功能.
LINKER_GROUP=[""] # 填写启用群文件直链插件的群
LINKER_COMMAND="link" # 设置插件触发命令(默认`link`)在命令行
cd
到本项目的目录安装环境依赖 · 二选一
⏩使用pip安装
pip install -r requirements.txt
⏩使用poetry安装
pip install --upgrade poetry
poetry installpoetry run pip install -r install_me.txt
- mockingbird插件的依赖用poetry安装时会发生冲突,
poetry用户需要进入poetry环境里使用pip install
来安装其所需的依赖.
(也可以直接删除mockingbird插件)
- mockingbird插件的依赖用poetry安装时会发生冲突,
启动机器人
根据你的安装方式选择启动方式⏩常规启动
python bot.py
或者
nb run
⏩poetry启动
poetry run python bot.py
或者
poetry run nb run
或者
poetry shell
python bot.py或者
poetry shell
nb run另开一个命令行窗口,
cd
到本项目下的go-cqhttp
文件夹运行适用于你的系统的
go-cqhttp
文件- 你也可以在 go-cqhttp 下载最新的
go-cqhttp
文件, 并放入该文件夹.
- 你也可以在 go-cqhttp 下载最新的
在 gocq 的 config.yml 填写Bot的帐号和密码, 保存并关闭文件
运行go-cqhttp, 登入成功后, 用你的
超级用户
账号 给bot发/ping
如果bot给你回复 I'm fine
, 那么就大功告成了.
⚠注意
你可能会遇到以下情况:
- 登录失败,提示
请在常用的设备上登录
- 密码没有输错, 帐号未被冻结, 但是提示
密码错误或账号被冻结
- 提示
当前使用的QQ版本过低
等等一些奇奇怪怪的问题导致的登入失败
你可能需要进行以下步骤:
进入 go-cqhttp 所在的文件夹
将电脑和手机处在同一IP环境下
- 比如手机和电脑使用同一个WiFi, 或者电脑连接手机的热点.
删除可能存在的
device.json
session.token
data
文件/文件夹
- 如果你使用的是
1.0.0-rc4
以及更低版本的go-cqhttp
生成的config.yml
,
请将其删除并重新运行go-cqhttp
生成新的config.yml
,
然后正确配置config.yml
并重复步骤3
运行文件夹里的 HomoOS.py 生成新的 device.json
- 协议类型请参考 go-cqhttp 的设备信息
⏩点击展开
值 类型 限制 0 Default/Unset 当前版本下默认为aPad 1 Android Phone 无 2 Android Watch 无法接收 notify
事件、无法接收口令红包、无法接收撤回消息3 MacOS 无 4 企点 只能登录企点账号或企点子账号 5 iPad 无 6 aPad 无 在 mirai-login-solver-sakura 下载最新版本的 apk-release.apk 安装到手机
- 同样需要该手机与go-cqhttp所在设备处于同一IP环境下
重新运行 go-cqhttp, 在弹出以下提示时输入2, 并按下键盘上的回车(Enter)
[2023-03-18 11:45:14] [WARNING]: 登录需要滑条验证码, 请验证后重试.
[2023-03-18 11:45:14] [WARNING]: 请选择提交滑块ticket方式:
[2023-03-18 11:45:14] [WARNING]: 1. 自动提交
[2023-03-18 11:45:14] [WARNING]: 2. 手动抓取提交
[2023-03-18 11:45:14] [WARNING]: 请输入(1 - 2):
2此时控制台将输出一串链接, 将该链接完整地复制到上一步安装的app
Sakura Login Solver
, 并点击 下一步,在经过1次或者2次滑块验证后, 将弹出的 token 复制并粘贴到控制台, 并按下键盘上的回车(Enter)
⏩不知道如何将文本复制到手机?
_
如果你笨到不知道如何将文本从电脑复制到手机, 我可以提示你一下: 你可以用电脑上登入的QQ发送文本消息给手机上登入的QQ你可能会看到类似以下信息:
[2023-03-18 11:45:14] [WARNING]: 账号已开启设备锁,请选择验证方式:
[2023-03-18 11:45:14] [WARNING]: 1. 向手机 *********** 发送短信验证码
[2023-03-18 11:45:14] [WARNING]: 2. 使用手机QQ扫码验证.
[2023-03-18 11:45:14] [WARNING]: 请输入(1 - 2):
1输入1选择短信验证, 并按下键盘上的回车(Enter),
此时你Bot绑定的手机将会收到一条验证码短信,
将收到的验证码输入到控制台, 并按下键盘上的回车(Enter)
服务器用户同理:
下载对应你电脑系统的 go-cqhttp 到电脑上
按照上面的 步骤1~7 操作
登入成功后把生成的 device.json 和 session.token 拷到服务器上该项目使用的go-cqhttp所在的文件夹里
⚠喜报
你可能会遇到以下问题:
- 私聊机器人能正常回复消息,但是群聊发不出
此时请查看 go-cqhttp 的运行窗口, 你可能会看到类似这样的一条消息:
[WARNING]: 群消息发送失败: 账号可能被风控. |
解决办法:
- 多挂几天, 等风控解除
- 企业帐号 (企业帐号不会风控)
- 换个帐号