Skip to content

tencent-connect/botgo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

fe31c0d · Dec 18, 2024
Jan 13, 2022
Oct 10, 2024
Oct 10, 2024
Nov 25, 2024
Sep 26, 2023
Aug 23, 2024
Dec 18, 2024
Nov 25, 2024
Jan 21, 2022
Oct 10, 2024
Sep 9, 2021
Oct 10, 2024
Dec 18, 2024
Oct 10, 2024
Oct 10, 2024
Apr 2, 2022
Sep 9, 2021
Dec 14, 2021
Dec 9, 2021
Oct 10, 2024
Oct 10, 2024
Sep 26, 2021
Oct 10, 2024
Oct 10, 2024
Sep 9, 2021
Dec 27, 2023
Oct 10, 2024

Repository files navigation

BotGo

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

Go Reference Examples

注意事项

  1. websocket 事件推送链路将在24年年底前逐步下线,后续官方不再维护。
  2. 新的webhook事件回调链路目前在灰度验证,灰度用户可体验通过页面配置事件监听及回调地址。如未在灰度范围,可联系QQ机器人反馈助手开通。

反馈机器人

灰度期间,原有机器人仍可使用websocket事件链路接收事件推送。

一、quick start

1. QQ机器人创建与配置

  1. 创建开发者账号,创建QQ机器人 QQ机器人开放平台

create_bot.png

  1. 配置沙箱成员 (QQ机器人上线前,仅沙箱环境可访问)。新创建机器人会默认将创建者加入沙箱环境。

sandbox_setting.png

2. 云函数创建与配置

  1. 腾讯云账号开通scf服务 快速入门
  2. 创建函数
  • 选择模板

create_scf.png

  • 启用"公网访问"、"日志投递"

turn_internet_access.png

  • 编辑云函数,启用"固定公网出口IP" (QQ机器人需要配置IP白名单,仅白名单内服务器/容器可访问OpenAPI)

scf_setting.png

get_internet_ip.png

3. 使用示例构建、上传云函数部署包

  1. 打开 examples/receive-and-send
  2. 复制 config.yaml.demo -> config.yaml

img.png

  1. 登录开发者管理端,将BotAppID和机器人秘钥分别填入config.yaml中的appid和secret字段

find-app-acc.png

type-in-app-info.png

  1. 执行Makefile中build指令
  2. 将config.yaml、scf_bootstrap、qqbot-demo(二进制文件)打包,上传至云函数

上传压缩包

4.配置QQ机器人事件监听、回调地址、IP白名单

  1. 复制云函数地址 + "/qqbot"后缀,填入回调地址输入框。点击确认。

img.png

  1. 勾选 C2C_MESSAGE_CREATE 事件。点击确认。

webhook配置

  1. 将云函数 "固定公网出口IP" 配置到IP白名单中)

ip_whitlist_setting.png

体验与机器人的对话

给机器人发送消息、富媒体文件,机器人回复消息

二、如何使用SDK

var api openapi.OpenAPI

func main() {
	//创建oauth2标准token source
	tokenSource := token.NewQQBotTokenSource(
		&token.QQBotCredentials{
			AppID:     "", 
			AppSecret: "",
		}) 
	//启动自动刷新access token协程 
	if err = token.StartRefreshAccessToken(ctx, tokenSource); err != nil {
		log.Fatalln(err)
	}
	// 初始化 openapi,正式环境 
	api = botgo.NewOpenAPI(credentials.AppID, tokenSource).WithTimeout(5 * time.Second).SetDebug(true) 
	// 注册事件处理函数 
	_ = event.RegisterHandlers( 
		// 注册c2c消息处理函数 
		C2CMessageEventHandler(), 
	)
	//注册回调处理函数 
	http.HandleFunc(path_, func (writer http.ResponseWriter, request *http.Request) {
		webhook.HTTPHandler(writer, request, credentials)
	}) 
	// 启动http服务监听端口 
	if err = http.ListenAndServe(fmt.Sprintf("%s:%d", host_, port_), nil); err != nil {
		log.Fatal("setup server fatal:", err)
	}
}

// C2CMessageEventHandler 实现处理 at 消息的回调
func C2CMessageEventHandler() event.C2CMessageEventHandler {
	return func(event *dto.WSPayload, data *dto.WSC2CMessageData) error {
		//TODO use api do sth.
		return nil
	}
}

三、SDK 开发说明 (Deprecated)

请查看: 开发说明

四、加入官方社区

欢迎扫码加入 QQ 频道开发者社区

开发者社区