@lucashca/tgcc 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/claude-telegram.js +7 -0
- package/dist/bin/claude-telegram.js.map +1 -1
- package/dist/src/bot/bot.d.ts.map +1 -1
- package/dist/src/bot/bot.js +19 -3
- package/dist/src/bot/bot.js.map +1 -1
- package/dist/src/bot/handlers.d.ts.map +1 -1
- package/dist/src/bot/handlers.js +7 -5
- package/dist/src/bot/handlers.js.map +1 -1
- package/dist/src/cli/init.d.ts.map +1 -1
- package/dist/src/cli/init.js +91 -44
- package/dist/src/cli/init.js.map +1 -1
- package/dist/src/cli/reset.d.ts +2 -0
- package/dist/src/cli/reset.d.ts.map +1 -0
- package/dist/src/cli/reset.js +25 -0
- package/dist/src/cli/reset.js.map +1 -0
- package/dist/src/utils/telegram-tls.d.ts +7 -0
- package/dist/src/utils/telegram-tls.d.ts.map +1 -0
- package/dist/src/utils/telegram-tls.js +55 -0
- package/dist/src/utils/telegram-tls.js.map +1 -0
- package/package.json +2 -1
|
@@ -3,6 +3,7 @@ import { Command } from "commander";
|
|
|
3
3
|
import { runInit } from "../src/cli/init.js";
|
|
4
4
|
import { runStart } from "../src/cli/start.js";
|
|
5
5
|
import { runConfigShow, runConfigSet } from "../src/cli/config.js";
|
|
6
|
+
import { runReset } from "../src/cli/reset.js";
|
|
6
7
|
import { setLogLevel } from "../src/utils/logger.js";
|
|
7
8
|
const program = new Command();
|
|
8
9
|
program
|
|
@@ -40,5 +41,11 @@ configCmd
|
|
|
40
41
|
.action((key, value) => {
|
|
41
42
|
runConfigSet(key, value);
|
|
42
43
|
});
|
|
44
|
+
program
|
|
45
|
+
.command("reset")
|
|
46
|
+
.description("Delete all config and sessions, then re-run init")
|
|
47
|
+
.action(async () => {
|
|
48
|
+
await runReset();
|
|
49
|
+
});
|
|
43
50
|
program.parse();
|
|
44
51
|
//# sourceMappingURL=claude-telegram.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-telegram.js","sourceRoot":"","sources":["../../bin/claude-telegram.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;IAC1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEvC,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,GAAG,EAAE;IACX,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;IACrC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"claude-telegram.js","sourceRoot":"","sources":["../../bin/claude-telegram.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;IAC1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,MAAM,SAAS,GAAG,OAAO;KACtB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEvC,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,GAAG,EAAE;IACX,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,SAAS;KACN,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;IACrC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/bot/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/bot/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOrD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAuBrD;AAED,wBAAsB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/D"}
|
package/dist/src/bot/bot.js
CHANGED
|
@@ -2,8 +2,17 @@ import { Telegraf } from "telegraf";
|
|
|
2
2
|
import { whitelist } from "./middleware.js";
|
|
3
3
|
import { createHandlers } from "./handlers.js";
|
|
4
4
|
import { initSessions } from "../claude/session.js";
|
|
5
|
+
import { ensureTelegramConnection } from "../utils/telegram-tls.js";
|
|
6
|
+
import { log } from "../utils/logger.js";
|
|
5
7
|
export function createBot(config) {
|
|
6
|
-
const bot = new Telegraf(config.telegram.token
|
|
8
|
+
const bot = new Telegraf(config.telegram.token, {
|
|
9
|
+
handlerTimeout: 600_000, // 10 minutes — Claude Code can take a while
|
|
10
|
+
});
|
|
11
|
+
bot.catch((err, ctx) => {
|
|
12
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
13
|
+
log("error", `[chat:${ctx.chat?.id}] Unhandled error: ${msg}`);
|
|
14
|
+
ctx.reply("An error occurred. Please try again.").catch(() => { });
|
|
15
|
+
});
|
|
7
16
|
bot.use(whitelist(config.telegram.whitelist));
|
|
8
17
|
initSessions();
|
|
9
18
|
const handlers = createHandlers(config);
|
|
@@ -14,9 +23,16 @@ export function createBot(config) {
|
|
|
14
23
|
return bot;
|
|
15
24
|
}
|
|
16
25
|
export async function startBot(config) {
|
|
26
|
+
const patched = await ensureTelegramConnection(config.telegram.token);
|
|
27
|
+
if (patched) {
|
|
28
|
+
log("info", "Using SNI bypass for Telegram connection");
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
log("info", "Connected to Telegram API");
|
|
32
|
+
}
|
|
17
33
|
const bot = createBot(config);
|
|
18
34
|
const shutdown = () => {
|
|
19
|
-
console.log("
|
|
35
|
+
console.log("\nShutting down...");
|
|
20
36
|
bot.stop("SIGINT");
|
|
21
37
|
process.exit(0);
|
|
22
38
|
};
|
|
@@ -25,6 +41,6 @@ export async function startBot(config) {
|
|
|
25
41
|
console.log("Bot started. Listening for messages...");
|
|
26
42
|
console.log(`Working directory: ${config.claude.workingDirectory}`);
|
|
27
43
|
console.log(`Whitelisted users: ${config.telegram.whitelist.join(", ")}`);
|
|
28
|
-
await bot.launch();
|
|
44
|
+
await bot.launch({ dropPendingUpdates: true });
|
|
29
45
|
}
|
|
30
46
|
//# sourceMappingURL=bot.js.map
|
package/dist/src/bot/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../src/bot/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../src/bot/bot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/bot/handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA0BrD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS;uBAGd,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;qBAUzB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;qBAOvB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;yBAmBnB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/bot/handlers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA0BrD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS;uBAGd,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;qBAUzB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;qBAOvB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;yBAmBnB,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;EAoF1D"}
|
package/dist/src/bot/handlers.js
CHANGED
|
@@ -65,17 +65,20 @@ export function createHandlers(config) {
|
|
|
65
65
|
}
|
|
66
66
|
log("info", `[chat:${chatId}] Message received: "${text.slice(0, 100)}${text.length > 100 ? "..." : ""}"`);
|
|
67
67
|
activeRequests.add(chatId);
|
|
68
|
-
const typingInterval = setInterval(() => {
|
|
69
|
-
ctx.sendChatAction("typing").catch(() => { });
|
|
70
|
-
}, 4000);
|
|
71
68
|
try {
|
|
72
|
-
|
|
69
|
+
// Send a "Processing..." message that will be deleted when the response arrives
|
|
70
|
+
const processingMsg = await ctx.reply("⏳ Processing...");
|
|
71
|
+
const typingInterval = setInterval(() => {
|
|
72
|
+
ctx.sendChatAction("typing").catch(() => { });
|
|
73
|
+
}, 3000);
|
|
73
74
|
log("info", `[chat:${chatId}] Sending to Claude Code...`);
|
|
74
75
|
const startTime = Date.now();
|
|
75
76
|
const response = await sendMessage(String(chatId), text, config.claude);
|
|
76
77
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
77
78
|
log("info", `[chat:${chatId}] Response received (${elapsed}s, $${response.cost.toFixed(4)})`);
|
|
78
79
|
clearInterval(typingInterval);
|
|
80
|
+
// Delete the "Processing..." message
|
|
81
|
+
await ctx.deleteMessage(processingMsg.message_id).catch(() => { });
|
|
79
82
|
if (response.error) {
|
|
80
83
|
log("error", `[chat:${chatId}] Error: ${response.error}`);
|
|
81
84
|
}
|
|
@@ -110,7 +113,6 @@ export function createHandlers(config) {
|
|
|
110
113
|
}
|
|
111
114
|
}
|
|
112
115
|
catch (err) {
|
|
113
|
-
clearInterval(typingInterval);
|
|
114
116
|
const msg = err instanceof Error ? err.message : String(err);
|
|
115
117
|
await ctx.reply(`Error: ${msg}`);
|
|
116
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/bot/handlers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/bot/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"AAgEA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA8E7C"}
|
package/dist/src/cli/init.js
CHANGED
|
@@ -1,8 +1,58 @@
|
|
|
1
|
-
import
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
|
+
import readline from "node:readline";
|
|
5
|
+
import inquirer from "inquirer";
|
|
6
|
+
import { Telegraf } from "telegraf";
|
|
4
7
|
import { saveConfig, getConfigPath, configExists } from "../config/config.js";
|
|
8
|
+
import { ensureTelegramConnection } from "../utils/telegram-tls.js";
|
|
5
9
|
import { runStart } from "./start.js";
|
|
10
|
+
function promptWithPrefill(message, prefill) {
|
|
11
|
+
const rl = readline.createInterface({
|
|
12
|
+
input: process.stdin,
|
|
13
|
+
output: process.stdout,
|
|
14
|
+
});
|
|
15
|
+
return new Promise((resolve) => {
|
|
16
|
+
rl.question(`${message} `, (answer) => {
|
|
17
|
+
rl.close();
|
|
18
|
+
resolve(answer);
|
|
19
|
+
});
|
|
20
|
+
// Write the prefill text into the line buffer so it's editable
|
|
21
|
+
rl.write(prefill);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function generateCode() {
|
|
25
|
+
return crypto.randomInt(100000, 999999).toString();
|
|
26
|
+
}
|
|
27
|
+
async function waitForVerification(token) {
|
|
28
|
+
const code = generateCode();
|
|
29
|
+
const bot = new Telegraf(token);
|
|
30
|
+
console.log("\n──────────────────────────────────────────");
|
|
31
|
+
console.log(` Verification code: ${code}`);
|
|
32
|
+
console.log("──────────────────────────────────────────");
|
|
33
|
+
console.log(" Open your bot on Telegram and send this code.");
|
|
34
|
+
console.log(" Waiting...\n");
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
const timeout = setTimeout(() => {
|
|
37
|
+
bot.stop("timeout");
|
|
38
|
+
reject(new Error("Verification timed out after 5 minutes"));
|
|
39
|
+
}, 5 * 60 * 1000);
|
|
40
|
+
bot.on("text", async (ctx) => {
|
|
41
|
+
const text = ctx.message.text.trim();
|
|
42
|
+
if (text === code) {
|
|
43
|
+
const chatId = ctx.chat.id;
|
|
44
|
+
await ctx.reply("Verified! This chat is now linked to Claude Code.");
|
|
45
|
+
clearTimeout(timeout);
|
|
46
|
+
bot.stop("verified");
|
|
47
|
+
resolve(chatId);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
await ctx.reply("Invalid code. Try again.");
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
bot.launch({ dropPendingUpdates: true }).catch(reject);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
6
56
|
export async function runInit() {
|
|
7
57
|
console.log("Claude Telegram — Setup\n");
|
|
8
58
|
if (configExists()) {
|
|
@@ -19,64 +69,61 @@ export async function runInit() {
|
|
|
19
69
|
return;
|
|
20
70
|
}
|
|
21
71
|
}
|
|
22
|
-
const
|
|
72
|
+
const { token } = await inquirer.prompt([
|
|
23
73
|
{
|
|
24
74
|
type: "input",
|
|
25
75
|
name: "token",
|
|
26
76
|
message: "Telegram bot token (from BotFather):",
|
|
27
77
|
validate: (v) => (v.trim().length > 0 ? true : "Token is required"),
|
|
28
78
|
},
|
|
29
|
-
{
|
|
30
|
-
type: "input",
|
|
31
|
-
name: "chatId",
|
|
32
|
-
message: "Your Telegram chat ID\n" +
|
|
33
|
-
" (To find it: open Telegram, search for @userinfobot, send /start,\n" +
|
|
34
|
-
" and it will reply with your chat ID)\n" +
|
|
35
|
-
" Chat ID:",
|
|
36
|
-
validate: (v) => {
|
|
37
|
-
const n = Number(v);
|
|
38
|
-
return !isNaN(n) && n > 0 ? true : "Must be a valid number";
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
type: "input",
|
|
43
|
-
name: "workingDirectory",
|
|
44
|
-
message: "Working directory for Claude Code:",
|
|
45
|
-
default: process.cwd(),
|
|
46
|
-
validate: (v) => {
|
|
47
|
-
const resolved = path.resolve(v);
|
|
48
|
-
return fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()
|
|
49
|
-
? true
|
|
50
|
-
: "Directory does not exist";
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
79
|
]);
|
|
80
|
+
let workingDirectory = "";
|
|
81
|
+
while (!workingDirectory) {
|
|
82
|
+
const answer = await promptWithPrefill("Working directory for Claude Code:", process.cwd());
|
|
83
|
+
const resolved = path.resolve(answer);
|
|
84
|
+
if (fs.existsSync(resolved) && fs.statSync(resolved).isDirectory()) {
|
|
85
|
+
workingDirectory = answer;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
console.log(` Directory does not exist: ${resolved}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Ensure Telegram connection works (applies SNI bypass if needed)
|
|
92
|
+
try {
|
|
93
|
+
const patched = await ensureTelegramConnection(token.trim());
|
|
94
|
+
if (patched) {
|
|
95
|
+
console.log(" (Using SNI bypass for Telegram connection)");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
100
|
+
console.error(`\nCannot connect to Telegram: ${msg}`);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
let chatId;
|
|
104
|
+
try {
|
|
105
|
+
chatId = await waitForVerification(token.trim());
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
109
|
+
console.error(`\nVerification failed: ${msg}`);
|
|
110
|
+
console.error("You can set the chat ID manually: tgcc config set telegram.whitelist YOUR_CHAT_ID");
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
console.log(`\nChat ID verified: ${chatId}`);
|
|
54
114
|
const config = {
|
|
55
115
|
telegram: {
|
|
56
|
-
token:
|
|
57
|
-
whitelist: [
|
|
116
|
+
token: token.trim(),
|
|
117
|
+
whitelist: [chatId],
|
|
58
118
|
},
|
|
59
119
|
claude: {
|
|
60
|
-
workingDirectory: path.resolve(
|
|
120
|
+
workingDirectory: path.resolve(workingDirectory),
|
|
61
121
|
permissionMode: "acceptEdits",
|
|
62
122
|
allowedTools: ["Read", "Edit", "Write", "Bash", "Glob", "Grep"],
|
|
63
123
|
},
|
|
64
124
|
};
|
|
65
125
|
saveConfig(config);
|
|
66
|
-
console.log(
|
|
67
|
-
|
|
68
|
-
{
|
|
69
|
-
type: "confirm",
|
|
70
|
-
name: "startNow",
|
|
71
|
-
message: "Start the bot now?",
|
|
72
|
-
default: true,
|
|
73
|
-
},
|
|
74
|
-
]);
|
|
75
|
-
if (startNow) {
|
|
76
|
-
await runStart();
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
console.log('Run "tgcc start" to launch the bot.');
|
|
80
|
-
}
|
|
126
|
+
console.log(`Config saved to ${getConfigPath()}\n`);
|
|
127
|
+
await runStart();
|
|
81
128
|
}
|
|
82
129
|
//# sourceMappingURL=init.js.map
|
package/dist/src/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/cli/reset.ts"],"names":[],"mappings":"AAKA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB9C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import inquirer from "inquirer";
|
|
3
|
+
import { getConfigDir } from "../config/config.js";
|
|
4
|
+
import { runInit } from "./init.js";
|
|
5
|
+
export async function runReset() {
|
|
6
|
+
const configDir = getConfigDir();
|
|
7
|
+
const { confirm } = await inquirer.prompt([
|
|
8
|
+
{
|
|
9
|
+
type: "confirm",
|
|
10
|
+
name: "confirm",
|
|
11
|
+
message: `This will delete all config and sessions at ${configDir}. Continue?`,
|
|
12
|
+
default: false,
|
|
13
|
+
},
|
|
14
|
+
]);
|
|
15
|
+
if (!confirm) {
|
|
16
|
+
console.log("Reset cancelled.");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (fs.existsSync(configDir)) {
|
|
20
|
+
fs.rmSync(configDir, { recursive: true });
|
|
21
|
+
console.log("Config and sessions deleted.\n");
|
|
22
|
+
}
|
|
23
|
+
await runInit();
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=reset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/cli/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACxC;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,+CAA+C,SAAS,aAAa;YAC9E,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests direct connection to Telegram API.
|
|
3
|
+
* If SNI is blocked, patches TLS to connect via IP.
|
|
4
|
+
* Returns true if patch was applied.
|
|
5
|
+
*/
|
|
6
|
+
export declare function ensureTelegramConnection(token: string): Promise<boolean>;
|
|
7
|
+
//# sourceMappingURL=telegram-tls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-tls.d.ts","sourceRoot":"","sources":["../../../src/utils/telegram-tls.ts"],"names":[],"mappings":"AAwCA;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAa9E"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import dns from "node:dns";
|
|
2
|
+
import tls from "node:tls";
|
|
3
|
+
import { Telegraf } from "telegraf";
|
|
4
|
+
let patched = false;
|
|
5
|
+
async function resolveTelegramIp() {
|
|
6
|
+
return new Promise((resolve) => {
|
|
7
|
+
dns.resolve4("api.telegram.org", (err, addresses) => {
|
|
8
|
+
if (err || !addresses.length) {
|
|
9
|
+
resolve(undefined);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
resolve(addresses[0]);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function patchTls(ip) {
|
|
17
|
+
if (patched)
|
|
18
|
+
return;
|
|
19
|
+
patched = true;
|
|
20
|
+
const origConnect = tls.connect;
|
|
21
|
+
tls.connect = function (options, ...args) {
|
|
22
|
+
if (typeof options === "object" &&
|
|
23
|
+
typeof options.host === "string" &&
|
|
24
|
+
options.host.endsWith("telegram.org")) {
|
|
25
|
+
options = {
|
|
26
|
+
...options,
|
|
27
|
+
host: ip,
|
|
28
|
+
servername: "",
|
|
29
|
+
rejectUnauthorized: false,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return origConnect.call(tls, options, ...args);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Tests direct connection to Telegram API.
|
|
37
|
+
* If SNI is blocked, patches TLS to connect via IP.
|
|
38
|
+
* Returns true if patch was applied.
|
|
39
|
+
*/
|
|
40
|
+
export async function ensureTelegramConnection(token) {
|
|
41
|
+
try {
|
|
42
|
+
const test = new Telegraf(token);
|
|
43
|
+
await test.telegram.getMe();
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
const ip = await resolveTelegramIp();
|
|
48
|
+
if (ip) {
|
|
49
|
+
patchTls(ip);
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
throw new Error("Cannot connect to Telegram API and failed to resolve IP");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=telegram-tls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram-tls.js","sourceRoot":"","sources":["../../../src/utils/telegram-tls.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,KAAK,UAAU,iBAAiB;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE;YAClD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBAC7B,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU;IAC1B,IAAI,OAAO;QAAE,OAAO;IACpB,OAAO,GAAG,IAAI,CAAC;IAEf,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;IAChC,GAAG,CAAC,OAAO,GAAG,UAAU,OAAY,EAAE,GAAG,IAAW;QAClD,IACE,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EACrC,CAAC;YACD,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,IAAI,EAAE,EAAE;gBACR,UAAU,EAAE,EAAE;gBACd,kBAAkB,EAAE,KAAK;aAC1B,CAAC;QACJ,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAuB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAAa;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACrC,IAAI,EAAE,EAAE,CAAC;YACP,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucashca/tgcc",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Control Claude Code remotely via Telegram",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@anthropic-ai/claude-code": "^1.0.0",
|
|
42
|
+
"@inquirer/input": "^5.0.10",
|
|
42
43
|
"commander": "^13.0.0",
|
|
43
44
|
"inquirer": "^12.0.0",
|
|
44
45
|
"telegraf": "^4.16.0"
|