diff --git a/pkg/channels/telegram.go b/pkg/channels/telegram.go index 4b25222..a18f969 100644 --- a/pkg/channels/telegram.go +++ b/pkg/channels/telegram.go @@ -532,11 +532,17 @@ func (c *TelegramChannel) handleAction(ctx context.Context, chatID int64, action defer cancel() return c.bot.DeleteMessage(delCtx, &telego.DeleteMessageParams{ChatID: telegoutil.ID(chatID), MessageID: messageID}) case "react": + reactCtx, cancel := withTelegramAPITimeout(ctx) + defer cancel() emoji := strings.TrimSpace(msg.Emoji) if emoji == "" { return fmt.Errorf("emoji required for react action") } - return fmt.Errorf("telegram react action not supported by current telego version") + return c.bot.SetMessageReaction(reactCtx, &telego.SetMessageReactionParams{ + ChatID: telegoutil.ID(chatID), + MessageID: messageID, + Reaction: []telego.ReactionType{&telego.ReactionTypeEmoji{Emoji: emoji}}, + }) default: return fmt.Errorf("unsupported telegram action: %s", action) } diff --git a/pkg/tools/process_tool.go b/pkg/tools/process_tool.go index b7e8fbb..375de86 100644 --- a/pkg/tools/process_tool.go +++ b/pkg/tools/process_tool.go @@ -58,9 +58,18 @@ func (t *ProcessTool) Execute(ctx context.Context, args map[string]interface{}) case <-ctx.Done(): } } + off := toInt(args["offset"]) + lim := toInt(args["limit"]) + if lim <= 0 { + lim = 1200 + } + if off < 0 { + off = 0 + } + chunk, _ := t.m.Log(sid, off, lim) s.mu.RLock() defer s.mu.RUnlock() - resp := map[string]interface{}{"id": s.ID, "running": s.ExitCode == nil, "started_at": s.StartedAt.Format(time.RFC3339)} + resp := map[string]interface{}{"id": s.ID, "running": s.ExitCode == nil, "started_at": s.StartedAt.Format(time.RFC3339), "log": chunk, "next_offset": off + len(chunk)} if s.ExitCode != nil { resp["exit_code"] = *s.ExitCode resp["ended_at"] = s.EndedAt.Format(time.RFC3339)