From c9fe83b3f732fc7e8fa6885b23dcd8202db29d48 Mon Sep 17 00:00:00 2001 From: Muhammed Mukhthar CM Date: Fri, 23 Jan 2026 05:22:52 +0000 Subject: [PATCH] Telegram-user: add login method picker --- extensions/telegram-user/package.json | 1 + extensions/telegram-user/src/login.ts | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/extensions/telegram-user/package.json b/extensions/telegram-user/package.json index 54f2c7eaa..65f64a576 100644 --- a/extensions/telegram-user/package.json +++ b/extensions/telegram-user/package.json @@ -28,6 +28,7 @@ "@mtcute/core": "^0.27.6", "@mtcute/dispatcher": "^0.27.6", "@mtcute/node": "^0.27.6", + "@clack/prompts": "^0.8.2", "qrcode-terminal": "^0.12.0", "clawdbot": "workspace:*" } diff --git a/extensions/telegram-user/src/login.ts b/extensions/telegram-user/src/login.ts index b7c70305f..f2d8cbc90 100644 --- a/extensions/telegram-user/src/login.ts +++ b/extensions/telegram-user/src/login.ts @@ -1,6 +1,7 @@ import qrcode from "qrcode-terminal"; import { createInterface } from "node:readline/promises"; import { stdin as input, stdout as output } from "node:process"; +import { isCancel, select } from "@clack/prompts"; import type { RuntimeEnv } from "clawdbot/plugin-sdk"; import { createTelegramUserClient } from "./client.js"; @@ -17,11 +18,17 @@ async function promptText(message: string): Promise { } async function promptLoginMode(): Promise<"qr" | "phone"> { - const response = await promptText("Login method (qr/phone) [qr]: "); - const normalized = response.trim().toLowerCase(); - if (!normalized) return "qr"; - if (normalized === "phone" || normalized === "otp") return "phone"; - return "qr"; + if (!input.isTTY || !output.isTTY) return "qr"; + const response = await select({ + message: "Telegram login method", + options: [ + { value: "qr", label: "QR code (scan with Telegram)" }, + { value: "phone", label: "Phone code (SMS/Telegram)" }, + ], + initialValue: "qr", + }); + if (isCancel(response)) return "qr"; + return response; } export async function loginTelegramUser(params: {