go-bot/README.md
liyp f160de4320 feat(readme): 更新项目介绍和部署指南
更新了README,加入了使用Go语言重新实现sihuan/XZZ机器人项目的介绍。由于原项目使用的go-cqhttp不再维护,本项目转向使用napcat实现。同时,更新了部署服务的步骤和配置文件示例,方便用户进行部署和使用。
2024-07-20 15:49:03 +08:00

56 lines
No EOL
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 使用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!"
}
```