bot

package module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2025 License: Apache-2.0 Imports: 5 Imported by: 3

README

Better-Bot-Go

由原来的 Go-QQ-SDK 迁移过来。

已支持正向 WebSocket ,正向 WebSocket 地址为 wss://你的域名:端口/websocket , 程序启动默认启用。

示例 wss://fw1009zb5979.vicp.fun:443/websocket

对应的 WebSocket 客户端地址 Bot-Client-Go ,欢迎大家使用。

QQ频道机器人,官方 GOLANG SDK。

Go Reference

QQ交流群 677742758

已完成功能/开发计划列表
登录
  • 登录
消息类型
  • 文本
  • 图片
  • 语音
  • MarkDown
  • 表情
  • At
  • 回复
  • 长消息(仅群聊/私聊)
  • 链接分享
  • 小程序(暂只支持RAW)
  • 短视频
  • 合并转发
  • 群文件(上传与接收信息)
群聊
  • 收发群消息
  • 机器人加群通知
  • 机器人离群通知
  • 群接收机器人主动消息通知
  • 群拒绝机器人主动消息通知
  • 机器人撤回自己在2分钟内的消息
  • 机器人获取群成员列表【需要申请权限】
C2C
  • 收发C2C消息
  • 机器人加好友通知
  • 机器人删好友通知
  • 接收机器人消息通知
  • 拒绝机器人消息通知
  • 机器人撤回自己在2分钟内的消息

一、如何使用

1.回调地址配置
is_open 为 true 时, 服务端只需要关注 port, cert_file 和 cert_key

https://你的域名:端口/qqbot/你的应用appid/你的应用app_secret

示例 https://fw1009zb5979.vicp.fun:443/qqbot/101981675/hjksdfhi3jkslfjlksdfjksejkdjk

is_open 为 false 时

https://你的域名:端口/qqbot/你的应用appid

示例 https://fw1009zb5979.vicp.fun:443/qqbot/101981675

2.配置文件填写(支持多账号)

默认配置文件为

{
	"apps": {
		"123456": {
			"qq": 123456,
			"app_id": 123456,
			"token": "你的AppToken",
			"app_secret": "你的AppSecret"
			"is_sandbox": true,
			"wss_addr": "你的wss地址,服务端不用管"
		}
	},
	"port": 8443,
	"cert_file": "ssl证书文件路径",
	"cert_key": "ssl证书密钥"
	"is_open": true
}

多账号

{
	"apps": {
		"5123456": {
			"qq": 123456,
			"app_id": 5123456,
			"token": "你的AppToken",
			"app_secret": "你的AppSecret"
			"is_sandbox": true,
			"wss_addr": "你的wss地址,服务端不用管"
		},
		"7234567": {
			"qq": 234567,
			"app_id": 7234567,
			"token": "你的AppToken",
			"app_secret": "你的AppSecret"
			"is_sandbox": true,
			"wss_addr": "你的wss地址,服务端不用管"
		}
	},
	"port": 8443,
	"cert_file": "ssl证书文件路径",
	"cert_key": "ssl证书密钥"
	"is_open": true
}
3.请求 openapi 接口,操作资源
package main

import (
	"context"
	"encoding/json"
	"fmt"
	"strings"
	"time"

	"github.com/2mf8/Better-Bot-Go/dto"
	"github.com/2mf8/Better-Bot-Go/openapi"
	"github.com/2mf8/Better-Bot-Go/token"
	"github.com/2mf8/Better-Bot-Go/webhook"
	log "github.com/sirupsen/logrus"
)

var Apis = make(map[string]openapi.OpenAPI, 0)

func main() {
	webhook.InitLog()
	as := webhook.ReadSetting()
	var ctx context.Context
	for i, v := range as.Apps {
		token := token.BotToken(v.AppId, v.Token, string(token.TypeBot))
		api := bot.NewOpenAPI(token).WithTimeout(3 * time.Second)
		Apis[i] = api
	}
	b, _ := json.Marshal(as)
	fmt.Println("配置", string(b))
	webhook.GroupAtMessageEventHandler = func(bot *webhook.BotHeaderInfo, event *dto.WSPayload, data *dto.WSGroupATMessageData) error {
		fmt.Println(bot.XBotAppid, data.GroupId, data.Content)
		if len(data.Attachments) > 0 {
			log.Infof(`BotId(%s) GroupId(%s) UserId(%s) <- %s <image id="%s">`, bot.XBotAppid[0], data.GroupId, data.Author.UserId, data.Content, data.Attachments[0].URL)
		} else {
			log.Infof("BotId(%s) GroupId(%s) UserId(%s) <- %s", bot.XBotAppid[0], data.GroupId, data.Author.UserId, data.Content)
		}
		if strings.TrimSpace(data.Content) == "测试" {
			Apis[bot.XBotAppid[0]].PostGroupMessage(ctx, data.GroupId, &dto.GroupMessageToCreate{
				Content: "成功",
				MsgID:   data.MsgId,
				MsgType: 0,
			})
		}
		return nil
	}
	webhook.C2CMessageEventHandler = func(bot *webhook.BotHeaderInfo, event *dto.WSPayload, data *dto.WSC2CMessageData) error {
		b, _ := json.Marshal(event)
		fmt.Println(bot.XBotAppid, string(b), data.Content)
		return nil
	}
	webhook.MessageEventHandler = func(bot *webhook.BotHeaderInfo, event *dto.WSPayload, data *dto.WSMessageData) error {
		b, _ := json.Marshal(event)
		fmt.Println(bot.XBotAppid, string(b), data.Content)
		return nil
	}
	webhook.InitGin()
	select {}
}

Documentation

Overview

Package botgo 是一个QQ频道机器人 sdk 的 golang 实现

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewOpenAPI

func NewOpenAPI(token *token.Token) openapi.OpenAPI

NewOpenAPI 创建新的 openapi 实例,会返回当前的 openapi 实现的实例 如果需要使用其他版本的实现,需要在调用这个方法之前调用 SelectOpenAPIVersion 方法

func NewSandboxOpenAPI

func NewSandboxOpenAPI(token *token.Token) openapi.OpenAPI

NewSandboxOpenAPI 创建测试环境的 openapi 实例

func SelectOpenAPIVersion

func SelectOpenAPIVersion(version openapi.APIVersion) error

SelectOpenAPIVersion 指定使用哪个版本的 api 实现,如果不指定,sdk将默认使用第一个 setup 的 api 实现

Types

This section is empty.

Directories

Path Synopsis
dto
Package dto 维护了用于与机器人接口通信的数据结构对象。
Package dto 维护了用于与机器人接口通信的数据结构对象。
message
Package message 内提供了用于支撑处理消息对象的工具和方法。
Package message 内提供了用于支撑处理消息对象的工具和方法。
Package errs 是 SDK 里面的错误类型的集合,同时封装了 SDK 专用的错误类型。
Package errs 是 SDK 里面的错误类型的集合,同时封装了 SDK 专用的错误类型。
interaction
signature
Package signature 用于处理平台和机器人开发者之间的互动请求中的签名验证
Package signature 用于处理平台和机器人开发者之间的互动请求中的签名验证
internal
Package log 是 SDK 的 logger 接口定义与内置的 logger。
Package log 是 SDK 的 logger 接口定义与内置的 logger。
Package openapi 声明了 sdk 所使用的 openapi 接口。
Package openapi 声明了 sdk 所使用的 openapi 接口。
v1
Package v1 是 openapi v1 版本的实现。
Package v1 是 openapi v1 版本的实现。
Package token 用于调用 openapi,websocket 的 token 对象。
Package token 用于调用 openapi,websocket 的 token 对象。
Package version sdk 版本声明。
Package version sdk 版本声明。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL