22import { setTimeout as sleep } from "node:timers/promises" ;
33import type { Bot } from "grammy" ;
44import type { Message } from "grammy/types" ;
5- import {
6- deleteMessageTelegram ,
7- editMessageTelegram ,
8- sendMessageTelegram ,
9- } from "../../../../extensions/telegram/runtime-api.js" ;
10- import type { TelegramThreadSpec } from "../../../../extensions/telegram/src/bot/helpers.js" ;
11- import {
12- createTelegramDraftStream ,
13- type TelegramDraftStream ,
14- } from "../../../../extensions/telegram/src/draft-stream.js" ;
5+ import { formatReasoningMessage } from "openclaw/plugin-sdk/agent-runtime" ;
6+ import { formatChannelProgressDraftText } from "openclaw/plugin-sdk/channel-outbound" ;
7+ import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts" ;
8+ import type { TelegramThreadSpec } from "../bot/helpers.js" ;
9+ import { createTelegramDraftStream , type TelegramDraftStream } from "../draft-stream.js" ;
1510import {
1611 buildTelegramRichMarkdown ,
12+ type TelegramEditRichMessageTextParams ,
1713 type TelegramInputRichMessage ,
18- } from "../../../../extensions/telegram/src/rich-message.js" ;
19- import { formatReasoningMessage } from "../../../../src/agents/embedded-agent-utils.js" ;
20- import type { OpenClawConfig } from "../../../../src/config/types.openclaw.js" ;
21- import { formatChannelProgressDraftText } from "../../../../src/plugin-sdk/channel-outbound.js" ;
14+ type TelegramSendRichMessageParams ,
15+ } from "../rich-message.js" ;
16+ import { deleteMessageTelegram , editMessageTelegram , sendMessageTelegram } from "../send.js" ;
17+
18+ type TelegramApi = Bot [ "api" ] ;
19+ type TelegramSendMessageParams = Parameters < TelegramApi [ "sendMessage" ] > ;
20+ type TelegramEditMessageTextParams = Parameters < TelegramApi [ "editMessageText" ] > ;
21+ type TelegramDeleteMessageParams = Parameters < TelegramApi [ "deleteMessage" ] > ;
2222
2323type SupportedFlow = "thinking-final" | "working-final" ;
2424
@@ -130,15 +130,15 @@ function richMessageText(richMessage: TelegramInputRichMessage): {
130130 text : string ;
131131 textMode : "markdown" | "html" ;
132132} {
133- return " html" in richMessage
133+ return richMessage . html !== undefined
134134 ? { text : richMessage . html , textMode : "html" }
135135 : { text : richMessage . markdown , textMode : "markdown" } ;
136136}
137137
138138function createTelegramFlowApi ( params : { accountId ?: string ; cfg : OpenClawConfig } ) : Bot [ "api" ] {
139- return {
139+ const api = {
140140 raw : {
141- sendRichMessage : async ( sendParams ) => {
141+ sendRichMessage : async ( sendParams : TelegramSendRichMessageParams ) => {
142142 const richText = richMessageText ( sendParams . rich_message ) ;
143143 const result = await sendMessageTelegram ( String ( sendParams . chat_id ) , richText . text , {
144144 accountId : params . accountId ,
@@ -148,7 +148,7 @@ function createTelegramFlowApi(params: { accountId?: string; cfg: OpenClawConfig
148148 } ) ;
149149 return { message_id : Number ( result . messageId ) } as Message ;
150150 } ,
151- editMessageText : async ( editParams ) => {
151+ editMessageText : async ( editParams : TelegramEditRichMessageTextParams ) => {
152152 if ( typeof editParams . message_id !== "number" ) {
153153 throw new Error ( "Telegram flow rich edit requires message_id." ) ;
154154 }
@@ -166,7 +166,11 @@ function createTelegramFlowApi(params: { accountId?: string; cfg: OpenClawConfig
166166 return true ;
167167 } ,
168168 } ,
169- sendMessage : async ( chatId , text , sendParams ) => {
169+ sendMessage : async (
170+ chatId : TelegramSendMessageParams [ 0 ] ,
171+ text : TelegramSendMessageParams [ 1 ] ,
172+ sendParams : TelegramSendMessageParams [ 2 ] ,
173+ ) => {
170174 const result = await sendMessageTelegram ( String ( chatId ) , text , {
171175 accountId : params . accountId ,
172176 cfg : params . cfg ,
@@ -175,22 +179,31 @@ function createTelegramFlowApi(params: { accountId?: string; cfg: OpenClawConfig
175179 } ) ;
176180 return { message_id : Number ( result . messageId ) } ;
177181 } ,
178- editMessageText : async ( chatId , messageId , text , editParams ) => {
182+ editMessageText : async (
183+ chatId : TelegramEditMessageTextParams [ 0 ] ,
184+ messageId : TelegramEditMessageTextParams [ 1 ] ,
185+ text : TelegramEditMessageTextParams [ 2 ] ,
186+ editParams : TelegramEditMessageTextParams [ 3 ] ,
187+ ) => {
179188 await editMessageTelegram ( String ( chatId ) , messageId , text , {
180189 accountId : params . accountId ,
181190 cfg : params . cfg ,
182191 textMode : editParams ?. parse_mode === "HTML" ? "html" : "markdown" ,
183192 } ) ;
184193 return true ;
185194 } ,
186- deleteMessage : async ( chatId , messageId ) => {
195+ deleteMessage : async (
196+ chatId : TelegramDeleteMessageParams [ 0 ] ,
197+ messageId : TelegramDeleteMessageParams [ 1 ] ,
198+ ) => {
187199 await deleteMessageTelegram ( String ( chatId ) , messageId , {
188200 accountId : params . accountId ,
189201 cfg : params . cfg ,
190202 } ) ;
191203 return true ;
192204 } ,
193- } as Bot [ "api" ] ;
205+ } ;
206+ return api as unknown as Bot [ "api" ] ;
194207}
195208
196209export function resolveTelegramFlowThreadSpec ( threadId ?: number ) : TelegramThreadSpec | undefined {
0 commit comments