Skip to content

Commit df169eb

Browse files
author
ericyhbao
committed
feat(botgo): 新增进入aio事件 (merge request !96)
Squash merge branch 'feat/20240805_ericyhbao_add_enter_aio_story_0' into 'master' feat(botgo): 新增进入aio事件 --story=0
1 parent 4854142 commit df169eb

8 files changed

+49
-1
lines changed

dto/enter_aio.go

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package dto
2+
3+
// EnterAIO 进入aio的事件
4+
type EnterAIO struct {
5+
UserOpenid string `json:"user_openid,omitempty"` // 用户openid
6+
FromSource string `json:"from_source,omitempty"` // 进入aio的来源
7+
}

dto/keyboard/keyboard.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,13 @@ type MessageKeyboard struct {
3737

3838
// CustomKeyboard 自定义 Keyboard
3939
type CustomKeyboard struct {
40-
Rows []*Row `json:"rows,omitempty"` // 行数组
40+
Rows []*Row `json:"rows,omitempty"` // 行数组
41+
Style *KeyboardStyle `json:"style,omitempty"` // 按钮样式
42+
}
43+
44+
// KeyboardStyle 键盘样式
45+
type KeyboardStyle struct {
46+
FontSize string `json:"font_size,omitempty"` // 字体大小
4147
}
4248

4349
// Row 每行结构

dto/message_create.go

+8
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ type MessageToCreate struct {
7171
PromptKeyboard *PromptKeyboard `json:"prompt_keyboard,omitempty"` // 消息扩展信息
7272
ActionButton *ActionButton `json:"action_button,omitempty"` // 消息操作结构
7373
Stream *Stream `json:"stream,omitempty"` // 流式消息信息
74+
FeatureID uint `json:"feature_id,omitempty"` // 控制消息发送
7475
}
7576

7677
// Stream 流式消息信息
@@ -128,6 +129,13 @@ type Markdown struct {
128129
CustomTemplateID string `json:"custom_template_id"` // 自定义模板id
129130
Params []*MarkdownParams `json:"params"` // 模版参数
130131
Content string `json:"content"` // 原生 markdown
132+
Style *MarkdownStyle `json:"style"` // markdown样式
133+
}
134+
135+
// MarkdownStyle markdown 样式
136+
type MarkdownStyle struct {
137+
MainFontSize string `json:"main_font_size"` // 正文字体大小 small middle large
138+
Layout string `json:"layout"` // hide_avatar_and_center 隐藏头像并居中
131139
}
132140

133141
// MarkdownParams markdown 模版参数 键值对

dto/websocket_event.go

+2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ const (
4343
EventSubscribeMsgStatus EventType = "SUBSCRIBE_MESSAGE_STATUS"
4444
EventC2CFriendAdd EventType = "FRIEND_ADD"
4545
EventC2CFriendDel EventType = "FRIEND_DEL"
46+
EventEnterAIO EventType = "ENTER_AIO"
4647
)
4748

4849
// intentEventMap 不同 intent 对应的事件定义
@@ -66,6 +67,7 @@ var intentEventMap = map[Intent][]EventType{
6667
EventForumPostDelete, EventForumReplyCreate, EventForumReplyDelete, EventForumAuditResult,
6768
},
6869
IntentInteraction: {EventInteractionCreate},
70+
IntentEnterAIO: {EventEnterAIO},
6971
}
7072

7173
var eventIntentMap = transposeIntentEventMap(intentEventMap)

dto/websocket_intent.go

+2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ const (
4343
IntentDirectMessageReactions
4444
IntentDirectMessageTyping
4545

46+
IntentEnterAIO Intent = 1 << 23 // 进入aio事件
47+
4648
// IntentGroupMessages 群消息事件
4749
// - GROUP_AT_MESSAGE_CREATE // 群中@机器人时的消息
4850
IntentGroupMessages Intent = 1 << 25 // 群消息事件

dto/websocket_payload.go

+3
Original file line numberDiff line numberDiff line change
@@ -127,3 +127,6 @@ type WSC2CFriendData C2CFriendData
127127

128128
// WSSubscribeMsgStatus 订阅消息模板授权状态变更事件
129129
type WSSubscribeMsgStatus SubscribeMessageStatusData
130+
131+
// WSEnterAIOData 进入aio事件
132+
type WSEnterAIOData EnterAIO

event/event.go

+12
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ var eventParseFuncMap = map[dto.OPCode]map[dto.EventType]eventParseFunc{
6060
dto.EventSubscribeMsgStatus: subscribeStatusHandler,
6161
dto.EventC2CFriendAdd: c2cFriendAddHandler,
6262
dto.EventC2CFriendDel: c2cFriendDelHandler,
63+
dto.EventEnterAIO: enterAIOHandler,
6364
},
6465
}
6566

@@ -342,3 +343,14 @@ func interactionHandler(payload *dto.WSPayload, message []byte) error {
342343
}
343344
return nil
344345
}
346+
347+
func enterAIOHandler(payload *dto.WSPayload, message []byte) error {
348+
data := &dto.WSEnterAIOData{}
349+
if err := ParseData(message, data); err != nil {
350+
return err
351+
}
352+
if DefaultHandlers.EnterAIO != nil {
353+
return DefaultHandlers.EnterAIO(payload, data)
354+
}
355+
return nil
356+
}

event/register.go

+8
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ var DefaultHandlers struct {
3636
C2CMessage C2CMessageEventHandler
3737
SubscribeMsgStatus SubscribeMsgStatusEventHandler
3838
C2CFriend C2CFriendEventHandler
39+
40+
EnterAIO EnterAIOEventHandler
3941
}
4042

4143
// ReadyHandler 可以处理 ws 的 ready 事件
@@ -117,6 +119,9 @@ type C2CFriendEventHandler func(event *dto.WSPayload, data *dto.WSC2CFriendData)
117119
// SubscribeMsgStatusEventHandler 订阅消息模板授权状态变更事件 handler
118120
type SubscribeMsgStatusEventHandler func(event *dto.WSPayload, data *dto.WSSubscribeMsgStatus) error
119121

122+
// EnterAIOEventHandler 进入AIO事件 handler
123+
type EnterAIOEventHandler func(event *dto.WSPayload, data *dto.WSEnterAIOData) error
124+
120125
// RegisterHandlers 注册事件回调,并返回 intent 用于 websocket 的鉴权
121126
func RegisterHandlers(handlers ...interface{}) dto.Intent {
122127
var i dto.Intent
@@ -143,6 +148,9 @@ func RegisterHandlers(handlers ...interface{}) dto.Intent {
143148
case C2CFriendEventHandler:
144149
DefaultHandlers.C2CFriend = handle
145150
i = i | dto.EventToIntent(dto.EventC2CFriendAdd)
151+
case EnterAIOEventHandler:
152+
DefaultHandlers.EnterAIO = handle
153+
i = i | dto.EventToIntent(dto.EventEnterAIO)
146154
default:
147155
}
148156
}

0 commit comments

Comments
 (0)