Skip to content

Commit 6b8a9c4

Browse files
committed
add TG_TRADER
Signed-off-by: MarcoMandar <malicemandar@gmail.com>
1 parent 4dfcf8c commit 6b8a9c4

File tree

2 files changed

+66
-57
lines changed

2 files changed

+66
-57
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
export async function getOrCreateRecommenderInBe(
2+
recommenderId: string,
3+
username: string,
4+
backendToken: string,
5+
backend: string,
6+
retries = 3,
7+
delayMs = 2000
8+
) {
9+
for (let attempt = 1; attempt <= retries; attempt++) {
10+
try {
11+
const response = await fetch(
12+
`${backend}/api/updaters/getOrCreateRecommender`,
13+
{
14+
method: "POST",
15+
headers: {
16+
"Content-Type": "application/json",
17+
Authorization: `Bearer ${backendToken}`,
18+
},
19+
body: JSON.stringify({
20+
recommenderId: recommenderId,
21+
username: username,
22+
}),
23+
}
24+
);
25+
const data = await response.json();
26+
return data;
27+
} catch (error) {
28+
console.error(
29+
`Attempt ${attempt} failed: Error getting or creating recommender in backend`,
30+
error
31+
);
32+
if (attempt < retries) {
33+
console.log(`Retrying in ${delayMs} ms...`);
34+
await new Promise((resolve) => setTimeout(resolve, delayMs));
35+
} else {
36+
console.error("All attempts failed.");
37+
}
38+
}
39+
}
40+
}

packages/client-telegram/src/telegramClient.ts

+26-57
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { Context, Telegraf } from "telegraf";
22
import { IAgentRuntime, elizaLogger } from "@ai16z/eliza";
33
import { MessageManager } from "./messageManager.ts";
4+
import { getOrCreateRecommenderInBe } from "./getOrCreateRecommenderInBe.ts";
45

56
export class TelegramClient {
67
private bot: Telegraf<Context>;
78
private runtime: IAgentRuntime;
89
private messageManager: MessageManager;
910
private backend;
1011
private backendToken;
12+
private tgTrader;
1113

1214
constructor(runtime: IAgentRuntime, botToken: string) {
1315
elizaLogger.log("📱 Constructing new TelegramClient...");
@@ -16,6 +18,7 @@ export class TelegramClient {
1618
this.messageManager = new MessageManager(this.bot, this.runtime);
1719
this.backend = runtime.getSetting("BACKEND_URL");
1820
this.backendToken = runtime.getSetting("BACKEND_TOKEN");
21+
this.tgTrader = runtime.getSetting("TG_TRADER"); // boolean To Be added to the settings
1922
elizaLogger.log("✅ TelegramClient constructor completed");
2023
}
2124

@@ -49,24 +52,30 @@ export class TelegramClient {
4952

5053
this.bot.on("message", async (ctx) => {
5154
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+
}
6878
}
69-
7079
await this.messageManager.handleMessage(ctx);
7180
} catch (error) {
7281
elizaLogger.error("❌ Error handling message:", error);
@@ -123,44 +132,4 @@ export class TelegramClient {
123132
await this.bot.stop();
124133
elizaLogger.log("Telegram bot stopped");
125134
}
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-
}
166135
}

0 commit comments

Comments
 (0)