/yz_bot

远程控制,`.py`运行 python,`.link`映射输入,记录聊天记录,给mc服务器输入命令,无异步,低性能,有权限管理系统啦

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

柚子bot

license standard-readme compliant

柚子bot

基于 go-cqhttp 运行

远程控制,.py运行 python,.link映射输入,记录聊天记录,给mc服务器输入命令

有 GPT 聊天功能,不过需要

  • _code/.env 内设置 OPENAI_BASE_URL=".."OPENAI_API_KEY=".."
  • data/storage/chat_groups.json 里添加允许启用 gpt 的群
    • 或者在聊天使用 .py chat_groups.append(群号)

其它命令自行探索

无 async,有一点点多线程

低性能

有权限管理系统啦

不考虑同时运行多个bot,不考虑一个群有多个bot

记录:

  • 开始

  • 第一次重构

  • [第二次重构(0.2版本)]

  • 0.3版

    • 写着写着就不写了,甚至没有上传github
0.4版(目前版本)

先是用 http 通信发现很方便,于是开始改用 http 通信为基础在写,抛弃了 0.3 版

后来发现似乎不能发送长文本于是改回了 websocket,并封装得比 http 通信的版本还好用

改完了才发现不是 http 的问题,不过管他呢


2022/11/6

又改回了 http,因为用 ws 写着确实麻烦)不过因为之前 ws 封装得还不错暂时先留着

内容列表

安全性

安全性比 0 好一点,但是很有限

有最基本的权限管理系统,你可以理解为类似于我的世界(Minecraft)的 op 系统

除了第一个 op 是 master 且 master 无法被 .op 命令删除之外,和 Minecraft 并没有什么区别

op 可以调用 bot 的全部命令和功能,依旧包括 .py 这种逆天命令,可以发送命令运行任何 python 代码

因此事实上任何 op 都可以对 master 取而代之,或者对 bot 所在的服务器造成破坏,这点务必注意

背景

真·根源

QQ自带的聊天记录检索不好用是推动我让 bot 能运行的直接原因

用其它的bot总是不那么顺手于是也想要自己写一个

想要通过这个 bot 来思考人的思维模式,我觉得编程语言与自然语言本质应该是一样的,qq bot 似乎能处在这两个的交叉处

然后,能远程重启和编程自己的 bot 超酷的好不

以上这些决定了 柚子bot 具有 .py.link.reboot 以及历史记录模块,我也期望 bot 的更多功能实现是可以通过聊天进行远程编辑的,这需要编程语言有比较强大的元编程能力

划掉

有人可能想到了 lisp ,不过我觉得还是 python 更接近伪代码一些(才不是没搞懂怎么用 lisp 和 go-cqhttp 通信)

bot没有插件系统,不过添加命令本身也是相对独立的,可以当成插件(?)

也可以用 .link 添加功能

安装

QQ bot 运行需要2个(划掉,3个)程序

  • 登录 QQ ,和腾讯的服务器通讯(大概),是一个 QQ 客户端
    • 给 QQ 客户端的消息进行签名,防止被封的服务器
  • bot本体,与客户端通信,处理和回应事件

这里的程序是最后一个

关于前一个程序请参考go-cqhttp

第二个程序请参考unidbg-fetch-qsign

本 bot 需要选择 go-cqhttp 的 http 通信,把 go-cqhttp 的 http 监听端口设为 5700(默认), http post 端口设为 5701(默认) 即可

bot 需要 python 3.10 或更高的版本

需要许多第三方库, 写在 requirements.txt 里了

然后运行python3 run.py,可以使用-a开启自动重启,使用-l仅记录聊天记录而不能触发其它功能

第一次启动后会输出类似下面的东西

如果不是第一次启动的话,就只会显示<你的bot的QQ名>(<你的bot的QQ号>)启动了!

未检测到config,第一次加载中
私聊bot验证码以确定master: 3447

这是给 bot 设定一个管理员,用一个有 bot 好友的 qq 对 bot 发送验证码即可

随后的操作和 bot qq 聊天即可

维护者

@sch246

使用许可

GPL

引用

./_code/s3/mcrcon.py使用了其中的mcrcon.py