fix(feishu): skip empty random_reaction_emoji entries

Feishu returns 231001 when emoji_type is empty. Config slices like
["", "Pin"] could randomly select an empty string; filter and
trim entries and fall back to Pin when none remain.

Made-with: Cursor
This commit is contained in:
imalasong
2026-03-28 23:36:49 +08:00
parent 27f638e909
commit 43095543ab
+12 -9
View File
@@ -245,15 +245,18 @@ func (c *FeishuChannel) SendPlaceholder(ctx context.Context, chatID string) (str
// ReactToMessage implements channels.ReactionCapable.
// Adds a reaction (randomly chosen from config) and returns an undo function to remove it.
func (c *FeishuChannel) ReactToMessage(ctx context.Context, chatID, messageID string) (func(), error) {
// Get emoji list from config
emojiList := c.config.RandomReactionEmoji
var chosenEmoji string
if len(emojiList) == 0 {
// Default to "Pin" if no config
chosenEmoji = "Pin"
} else {
idx := rand.Intn(len(emojiList))
chosenEmoji = emojiList[idx]
// Get emoji list from config (Feishu emoji_type keys, e.g. Pin, THUMBSUP).
// Ignore empty entries so a list like ["", "Pin"] does not randomly pick "" (API 231001).
var candidates []string
for _, e := range c.config.RandomReactionEmoji {
e = strings.TrimSpace(e)
if e != "" {
candidates = append(candidates, e)
}
}
chosenEmoji := "Pin"
if len(candidates) > 0 {
chosenEmoji = candidates[rand.Intn(len(candidates))]
}
req := larkim.NewCreateMessageReactionReqBuilder().