1
1
import { Context , Telegraf } from "telegraf" ;
2
2
import { IAgentRuntime , elizaLogger } from "@ai16z/eliza" ;
3
3
import { MessageManager } from "./messageManager.ts" ;
4
+ import { getOrCreateRecommenderInBe } from "./getOrCreateRecommenderInBe.ts" ;
4
5
5
6
export class TelegramClient {
6
7
private bot : Telegraf < Context > ;
7
8
private runtime : IAgentRuntime ;
8
9
private messageManager : MessageManager ;
9
10
private backend ;
10
11
private backendToken ;
12
+ private tgTrader ;
11
13
12
14
constructor ( runtime : IAgentRuntime , botToken : string ) {
13
15
elizaLogger . log ( "📱 Constructing new TelegramClient..." ) ;
@@ -16,6 +18,7 @@ export class TelegramClient {
16
18
this . messageManager = new MessageManager ( this . bot , this . runtime ) ;
17
19
this . backend = runtime . getSetting ( "BACKEND_URL" ) ;
18
20
this . backendToken = runtime . getSetting ( "BACKEND_TOKEN" ) ;
21
+ this . tgTrader = runtime . getSetting ( "TG_TRADER" ) ; // boolean To Be added to the settings
19
22
elizaLogger . log ( "✅ TelegramClient constructor completed" ) ;
20
23
}
21
24
@@ -49,24 +52,30 @@ export class TelegramClient {
49
52
50
53
this . bot . on ( "message" , async ( ctx ) => {
51
54
try {
52
- const userId = ctx . from ?. id . toString ( ) ;
53
- const username =
54
- ctx . from ?. username || ctx . from ?. first_name || "Unknown" ;
55
- if ( ! userId ) {
56
- elizaLogger . warn (
57
- "Received message from a user without an ID."
58
- ) ;
59
- return ;
60
- }
61
- try {
62
- await this . getOrCreateRecommenderInBe ( userId , username ) ;
63
- } catch ( error ) {
64
- elizaLogger . error (
65
- "Error getting or creating recommender in backend" ,
66
- error
67
- ) ;
55
+ if ( this . tgTrader ) {
56
+ const userId = ctx . from ?. id . toString ( ) ;
57
+ const username =
58
+ ctx . from ?. username || ctx . from ?. first_name || "Unknown" ;
59
+ if ( ! userId ) {
60
+ elizaLogger . warn (
61
+ "Received message from a user without an ID."
62
+ ) ;
63
+ return ;
64
+ }
65
+ try {
66
+ await getOrCreateRecommenderInBe (
67
+ userId ,
68
+ username ,
69
+ this . backendToken ,
70
+ this . backend
71
+ ) ;
72
+ } catch ( error ) {
73
+ elizaLogger . error (
74
+ "Error getting or creating recommender in backend" ,
75
+ error
76
+ ) ;
77
+ }
68
78
}
69
-
70
79
await this . messageManager . handleMessage ( ctx ) ;
71
80
} catch ( error ) {
72
81
elizaLogger . error ( "❌ Error handling message:" , error ) ;
@@ -123,44 +132,4 @@ export class TelegramClient {
123
132
await this . bot . stop ( ) ;
124
133
elizaLogger . log ( "Telegram bot stopped" ) ;
125
134
}
126
- public async getOrCreateRecommenderInBe (
127
- recommenderId : string ,
128
- username : string ,
129
- retries = 3 ,
130
- delayMs = 2000
131
- ) {
132
- for ( let attempt = 1 ; attempt <= retries ; attempt ++ ) {
133
- try {
134
- const response = await fetch (
135
- `${ this . backend } /api/updaters/getOrCreateRecommender` ,
136
- {
137
- method : "POST" ,
138
- headers : {
139
- "Content-Type" : "application/json" ,
140
- Authorization : `Bearer ${ this . backendToken } ` ,
141
- } ,
142
- body : JSON . stringify ( {
143
- recommenderId : recommenderId ,
144
- username : username ,
145
- } ) ,
146
- }
147
- ) ;
148
- const data = await response . json ( ) ;
149
- return data ;
150
- } catch ( error ) {
151
- console . error (
152
- `Attempt ${ attempt } failed: Error getting or creating recommender in backend` ,
153
- error
154
- ) ;
155
- if ( attempt < retries ) {
156
- console . log ( `Retrying in ${ delayMs } ms...` ) ;
157
- await new Promise ( ( resolve ) =>
158
- setTimeout ( resolve , delayMs )
159
- ) ;
160
- } else {
161
- console . error ( "All attempts failed." ) ;
162
- }
163
- }
164
- }
165
- }
166
135
}
0 commit comments