11import * as dotenv from "dotenv" ;
22import express from "express" ;
33import { Telegraf , TelegramError } from "telegraf" ;
4- import { statHandler } from "./handlers" ;
4+ import { awaitingMnemonic , siteHandler , statHandler } from "./handlers" ;
55import { handleInboundCallback } from "./handlers/callback/inbound" ;
66import { handleProtoCallback } from "./handlers/callback/proto" ;
77import { handleSubscriptionCallback } from "./handlers/callback/sub" ;
@@ -16,7 +16,7 @@ import { scoreHandler } from "./handlers/score";
1616import { startHandler } from "./handlers/start" ;
1717import { subHandler } from "./handlers/sub" ;
1818import { BotState } from "./state" ;
19- import QRCode from "qrcode " ;
19+ import { connectWithMnemonic } from "./site " ;
2020
2121dotenv . config ( ) ;
2222
@@ -31,7 +31,7 @@ const missingVars = requiredEnvVars.filter((varName) => !process.env[varName]);
3131
3232if ( missingVars . length > 0 ) {
3333 throw new Error (
34- `Missing required environment variables: ${ missingVars . join ( ", " ) } ` ,
34+ `Missing required environment variables: ${ missingVars . join ( ", " ) } `
3535 ) ;
3636}
3737
@@ -51,7 +51,7 @@ const botState = new BotState(
5151 API_AUTH_TOKEN ,
5252 GOOGLE_SCRIPT_URL ,
5353 TOKEN ,
54- ADMIN_CHAT_ID ,
54+ ADMIN_CHAT_ID
5555) ;
5656
5757const app = express ( ) ;
@@ -114,6 +114,7 @@ process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
114114 bot . command ( "connect" , ( ctx ) => connectHandler ( ctx , botState ) ) ;
115115 bot . command ( "sub" , ( ctx ) => subHandler ( ctx , botState ) ) ;
116116 bot . command ( "stat" , ( ctx ) => statHandler ( ctx , botState ) ) ;
117+ bot . command ( "site" , ( ctx ) => siteHandler ( ctx , botState ) ) ;
117118 bot . command ( "delete" , ( ctx ) => deleteHandler ( ctx , botState ) ) ;
118119 bot . command ( "stop" , ( ctx ) => deleteHandler ( ctx , botState ) ) ;
119120 bot . command ( "status" , ( ctx ) => scoreHandler ( ctx , botState ) ) ;
@@ -122,6 +123,7 @@ process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
122123
123124 // Text message handler
124125 bot . on ( "text" , async ( ctx ) => {
126+ const userId = ctx . from . id ;
125127 const message = ctx . message . text ;
126128
127129 // Handle feedback messages first
@@ -130,6 +132,35 @@ process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
130132 return ;
131133 }
132134
135+ // Handle site command
136+ if ( awaitingMnemonic [ userId ] ) {
137+ awaitingMnemonic [ userId ] = false ; // reset
138+
139+ const words = message . trim ( ) . split ( / \s + / ) ;
140+ if ( words . length !== 12 ) {
141+ return ctx . reply (
142+ "Фраза должна содержать 12 слов. Попробуйте ещё раз командой /site"
143+ ) ;
144+ }
145+
146+ try {
147+ const data = await connectWithMnemonic ( message . trim ( ) ) ;
148+ if ( typeof data === "string" ) {
149+ await ctx . reply ( data ) ;
150+ } else {
151+ await ctx . reply (
152+ `Ваша ссылка: <code>${ data . subscription_url } </code>` ,
153+ { parse_mode : "HTML" }
154+ ) ;
155+ }
156+ } catch ( err ) {
157+ console . error ( "Ошибка в siteHandler:" , err ) ;
158+ await ctx . reply ( "Ошибка при обработке фразы." ) ;
159+ } finally {
160+ return ;
161+ }
162+ }
163+
133164 // Handle unknown commands
134165 if ( message . startsWith ( "/" ) ) {
135166 await ctx . reply (
@@ -139,8 +170,9 @@ process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
139170 "• /sub - Управление подпиской\n" +
140171 "• /status - Проверить статус\n" +
141172 "• /stat - Статистика\n" +
173+ "• /site - Если оплачивали подписку на сайте\n" +
142174 "• /support - Поддержка и обратная связь\n" +
143- "• /delete - Удалить аккаунт" ,
175+ "• /delete - Удалить аккаунт"
144176 ) ;
145177 }
146178 } ) ;
@@ -218,7 +250,7 @@ process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
218250 ` Domain: ${ DOMAIN } \n` +
219251 ` Port: ${ PORT } \n` +
220252 ` Webhook path: ${ WEBHOOK_PATH } \n` +
221- ` Environment: ${ process . env . NODE_ENV || "development" } ` ,
253+ ` Environment: ${ process . env . NODE_ENV || "development" } `
222254 ) ;
223255} ) ( ) . catch ( ( err ) => {
224256 console . error ( "[STARTUP] Fatal error during startup:" , err ) ;
0 commit comments