bot

package module
v0.0.6 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2024 License: Apache-2.0 Imports: 5 Imported by: 0

README

Go-QQ-SDK

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

Go Reference

QQ交流群 677742758

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

一、如何使用

1.回调地址配置

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

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

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

默认配置文件为

{
	"apps": {
		"123456": {
			"qq": 123456,
			"app_id": 123456,
			"token": "你的AppToken",
			"app_secret": "你的AppSecret"
		}
	},
	"port": 8443,
	"cert_file": "ssl证书文件路径",
	"cert_key": "ssl证书密钥"
}

多账号

{
	"apps": {
		"5123456": {
			"qq": 123456,
			"app_id": 5123456,
			"token": "你的AppToken",
			"app_secret": "你的AppSecret"
		},
		"7234567": {
			"qq": 234567,
			"app_id": 7234567,
			"token": "你的AppToken",
			"app_secret": "你的AppSecret"
		}
	},
	"port": 8443,
	"cert_file": "ssl证书文件路径",
	"cert_key": "ssl证书密钥"
}
3.请求 openapi 接口,操作资源
package main

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

	"github.com/2mf8/Go-QQ-SDK/dto"
	"github.com/2mf8/Go-QQ-SDK/openapi"
	"github.com/2mf8/Go-QQ-SDK/token"
	"github.com/2mf8/Go-QQ-SDK/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 版本声明。
Package websocket SDK 需要实现的 websocket 定义。
Package websocket SDK 需要实现的 websocket 定义。
client
Package client 默认的 websocket client 实现。
Package client 默认的 websocket client 实现。

Jump to

Keyboard shortcuts

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