Skip to content

Commit 37e0bf7

Browse files
committed
fix(chatops-lark): remove the dup response
Also add more level for reponses: - skip: color gray. - info: color blue. Signed-off-by: wuhuizuo <wuhuizuo@126.com>
1 parent 2e9c13f commit 37e0bf7

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

chatops-lark/pkg/events/handler/root.go

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,21 @@ type rootHandler struct {
8585
Config map[string]any
8686
}
8787

88+
// InformationError represents an information level error that occurred during command execution.
89+
// it will give some information but not error, such as help and skip reasons.
90+
type InformationError error
91+
92+
// SkipError represents a skip level error that occurred during command execution.
93+
type SkipError error
94+
95+
// Status enums
96+
const (
97+
StatusSuccess = "success"
98+
StatusFailure = "failure"
99+
StatusSkip = "skip"
100+
StatusInfo = "info"
101+
)
102+
88103
func NewRootForMessage(respondCli *lark.Client, cfg map[string]any) func(ctx context.Context, event *larkim.P2MessageReceiveV1) error {
89104
cacheCfg := bigcache.DefaultConfig(10 * time.Minute)
90105
cacheCfg.Logger = &log.Logger
@@ -143,11 +158,23 @@ func (r *rootHandler) Handle(ctx context.Context, event *larkim.P2MessageReceive
143158
go func() {
144159
defer r.deleteReaction(*event.Event.Message.MessageId, refactionID)
145160
message, err := r.handleCommand(ctx, command)
146-
if err != nil {
161+
if err == nil {
162+
r.sendResponse(*event.Event.Message.MessageId, StatusSuccess, message)
163+
return
164+
}
165+
166+
// send different level response for the error types.
167+
switch e := err.(type) {
168+
case SkipError:
169+
message = fmt.Sprintf("%s\n---\n**skip:**\n%v", message, e)
170+
r.sendResponse(*event.Event.Message.MessageId, StatusSkip, message)
171+
case InformationError:
172+
message = fmt.Sprintf("%s\n---\n**information:**\n%v", message, e)
173+
r.sendResponse(*event.Event.Message.MessageId, StatusInfo, message)
174+
default:
147175
message = fmt.Sprintf("%s\n---\n**error:**\n%v", message, err)
148-
r.sendResponse(*event.Event.Message.MessageId, "failed", message)
176+
r.sendResponse(*event.Event.Message.MessageId, StatusFailure, message)
149177
}
150-
r.sendResponse(*event.Event.Message.MessageId, "success", message)
151178
}()
152179

153180
return nil

chatops-lark/pkg/response/command-response.yaml.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ elements:
1010
- tag: plain_text
1111
content: "EE ChatOps Bot developed by EE team"
1212
header:
13-
template: '{{ if eq .Status "success" }}green{{ else }}red{{ end }}'
13+
template: '{{ if eq .Status "success" }}green{{ else if eq .Status "skip" }}grey{{ else if eq .Status "info" }}blue{{ else }}red{{ end }}'
1414
title:
1515
content: "{{ .Status }}"
1616
tag: plain_text

0 commit comments

Comments
 (0)