MCPcopy Create free account
hub / github.com/TeleBoxOrg/TeleBox_Plugins / waitForBotReply

Method waitForBotReply

kkp/kkp.ts:158–216  ·  view source on GitHub ↗
(
    client: any,
    botEntity: any,
    timeoutMs: number = 15000,
  )

Source from the content-addressed store, hash-verified

156 const cleanup = (result: Api.Message | null) => {
157 if (isResolved) return;
158 isResolved = true;
159
160 const listener = this.messageListeners.get(listenerId);
161 if (listener) {
162 clearTimeout(listener.timeout);
163 try {
164 client.removeEventHandler(listener.handler, new NewMessage({}));
165 } catch (error) {
166 console.warn("[kkp] 移除事件监听器失败:", error);
167 }
168 this.messageListeners.delete(listenerId);
169 }
170 resolve(result);
171 };
172
173 const timeout = setTimeout(() => cleanup(null), timeoutMs);
174
175 const messageHandler = (event: any) => {
176 try {
177 const message = event.message;
178 if (!message) return;
179 const senderId = message.senderId?.toString();
180 const botId = botEntity.id.toString();
181
182 if (senderId === botId && message.date * 1000 >= startTime - 1000) {
183 if (this.isVideoMessage(message)) cleanup(message);
184 }
185 } catch (error) {
186 console.error("[kkp] 消息处理失败:", error);
187 cleanup(null);
188 }
189 };
190
191 this.messageListeners.set(listenerId, {
192 resolve,
193 timeout,
194 startTime,
195 handler: messageHandler,
196 });
197 try {
198 client.addEventHandler(messageHandler, new NewMessage({}));
199 } catch (error) {
200 console.error("[kkp] 添加事件监听器失败:", error);
201 cleanup(null);
202 }
203 });
204 }
205
206 private async getRandomVideo(msg: Api.Message, client: any): Promise<void> {
207 await msg.edit({ text: "🎲 正在获取随机视频...", parseMode: "html" });
208
209 const botUsername = "SeSe3000Bot";
210 try {
211 const botEntity = await client.getEntity(botUsername);
212 const recentMessages = await safeGetMessages(client, botEntity, { limit: 3 });
213
214 if (recentMessages.length === 0) {
215 await client.sendMessage(botEntity, { message: "/start" });

Callers 1

getRandomVideoMethod · 0.95

Calls 3

errorMethod · 0.80
cleanupFunction · 0.50
setMethod · 0.45

Tested by

no test coverage detected