liyp
f160de4320
更新了README,加入了使用Go语言重新实现sihuan/XZZ机器人项目的介绍。由于原项目使用的go-cqhttp不再维护,本项目转向使用napcat实现。同时,更新了部署服务的步骤和配置文件示例,方便用户进行部署和使用。
56 lines
No EOL
2.6 KiB
Markdown
56 lines
No EOL
2.6 KiB
Markdown
# 使用Go语言重新实现 [sihuan/XZZ](https://github.com/sihuan/XZZ) 机器人项目
|
||
本项目是一个使用Go语言重新实现 [sihuan/XZZ](https://github.com/sihuan/XZZ) 机器人项目。原使用go-cqhttp的机器人项目,由于go-cqhttp不再维护,有众多bug,无法使用,所以更换使用 [napcat](https://github.com/NapNeko/NapCatQQ) 实现。
|
||
|
||
当前项目的功能都在`workers`目录下。同时所有接收到的消息都保存在一个sqllite数据库中,文件名为`data.db`保存在项目根目录。
|
||
## 部署服务:
|
||
1. 先使用docker部署[napcat](https://github.com/NapNeko/NapCatQQ),然后修改配置文件,将机器人的token替换为napcat的token,然后运行项目即可。
|
||
部署[napcat](https://github.com/NapNeko/NapCatQQ)可参考下面的docker-compose.yml文件:
|
||
```yaml
|
||
version: '3'
|
||
services:
|
||
napcat:
|
||
image: mlikiowa/napcat-docker:latest
|
||
container_name: napcat
|
||
environment:
|
||
- ACCOUNT=<QQ号>
|
||
- HTTP_ENABLE=true
|
||
- HTTP_POST_ENABLE=true
|
||
- HTTP_URLS=["http://172.17.0.1:5580/"]
|
||
ports:
|
||
- "5700:3000"
|
||
- "6099:6099"
|
||
volumes:
|
||
- ~/dockerfile/napcat/config:/usr/src/app/napcat/config
|
||
- ~/dockerfile/napcat/QQ:/root/.config/QQ
|
||
```
|
||
然后启动docker-compose.yml文件即可。
|
||
|
||
2. 运行本项目前需要先修改配置文件,将本项目目录下的`config example.toml` 重命名为`config.toml`,然后修改配置文件,默认的配置端口跟上面的 docker-compose.yml文件一致,不需要修改。如果需要使用ai功能,需要修改配置文件里的`MODEL`,`OPENAI_API_KEY`和`OPENAI_BaseURL`这三个字段。
|
||
3. 启动项目:安装go环境,然后运行`go run main.go`即可。你也可以使用`go build main/go -o go-bot`编译为可执行文件,
|
||
## 使用说明:
|
||
1. 默认的配置端口是5580,如果需要修改,请修改配置文件里的`APIURL`字段。默认获取以`!`开头的消息,如果需要修改,请修改配置文件里的`Prefix`字段。
|
||
|
||
## 编写插件:
|
||
所有的插件放在`workers`目录下,并且都要有下面的代码:
|
||
```go
|
||
package workers
|
||
|
||
func init() {
|
||
RegisterWorkerFactory("ping", func(parms []string, uid, gid, role, mid, rawMsg string) Worker {
|
||
return &Ping{
|
||
StdAns: NewStdAns(parms, uid, gid, role, mid, rawMsg),
|
||
}
|
||
})
|
||
}
|
||
|
||
type Ping struct {
|
||
*StdAns
|
||
}
|
||
```
|
||
上面的例子是实现里`ping`这个插件的注册,在群组中以`!ping`指令激活。
|
||
同时所有的功能需要写在实现的`GetMsg()`方法里,如`!ping` 命令的:
|
||
```go
|
||
func (a *Ping) GetMsg() string {
|
||
return "Pong!"
|
||
}
|
||
``` |