Skip to content

Commit

Permalink
add TG_TRADER
Browse files Browse the repository at this point in the history
Signed-off-by: MarcoMandar <malicemandar@gmail.com>
  • Loading branch information
MarcoMandar committed Dec 2, 2024
1 parent 4dfcf8c commit 6b8a9c4
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 57 deletions.
40 changes: 40 additions & 0 deletions packages/client-telegram/src/getOrCreateRecommenderInBe.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
export async function getOrCreateRecommenderInBe(
recommenderId: string,
username: string,
backendToken: string,
backend: string,
retries = 3,
delayMs = 2000
) {
for (let attempt = 1; attempt <= retries; attempt++) {
try {
const response = await fetch(
`${backend}/api/updaters/getOrCreateRecommender`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${backendToken}`,
},
body: JSON.stringify({
recommenderId: recommenderId,
username: username,
}),
}
);
const data = await response.json();
return data;
} catch (error) {
console.error(
`Attempt ${attempt} failed: Error getting or creating recommender in backend`,
error
);
if (attempt < retries) {
console.log(`Retrying in ${delayMs} ms...`);
await new Promise((resolve) => setTimeout(resolve, delayMs));
} else {
console.error("All attempts failed.");
}
}
}
}
83 changes: 26 additions & 57 deletions packages/client-telegram/src/telegramClient.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import { Context, Telegraf } from "telegraf";
import { IAgentRuntime, elizaLogger } from "@ai16z/eliza";
import { MessageManager } from "./messageManager.ts";
import { getOrCreateRecommenderInBe } from "./getOrCreateRecommenderInBe.ts";

export class TelegramClient {
private bot: Telegraf<Context>;
private runtime: IAgentRuntime;
private messageManager: MessageManager;
private backend;
private backendToken;
private tgTrader;

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

Expand Down Expand Up @@ -49,24 +52,30 @@ export class TelegramClient {

this.bot.on("message", async (ctx) => {
try {
const userId = ctx.from?.id.toString();
const username =
ctx.from?.username || ctx.from?.first_name || "Unknown";
if (!userId) {
elizaLogger.warn(
"Received message from a user without an ID."
);
return;
}
try {
await this.getOrCreateRecommenderInBe(userId, username);
} catch (error) {
elizaLogger.error(
"Error getting or creating recommender in backend",
error
);
if (this.tgTrader) {
const userId = ctx.from?.id.toString();
const username =
ctx.from?.username || ctx.from?.first_name || "Unknown";
if (!userId) {
elizaLogger.warn(
"Received message from a user without an ID."
);
return;
}
try {
await getOrCreateRecommenderInBe(
userId,
username,
this.backendToken,
this.backend
);
} catch (error) {
elizaLogger.error(
"Error getting or creating recommender in backend",
error
);
}
}

await this.messageManager.handleMessage(ctx);
} catch (error) {
elizaLogger.error("❌ Error handling message:", error);
Expand Down Expand Up @@ -123,44 +132,4 @@ export class TelegramClient {
await this.bot.stop();
elizaLogger.log("Telegram bot stopped");
}
public async getOrCreateRecommenderInBe(
recommenderId: string,
username: string,
retries = 3,
delayMs = 2000
) {
for (let attempt = 1; attempt <= retries; attempt++) {
try {
const response = await fetch(
`${this.backend}/api/updaters/getOrCreateRecommender`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${this.backendToken}`,
},
body: JSON.stringify({
recommenderId: recommenderId,
username: username,
}),
}
);
const data = await response.json();
return data;
} catch (error) {
console.error(
`Attempt ${attempt} failed: Error getting or creating recommender in backend`,
error
);
if (attempt < retries) {
console.log(`Retrying in ${delayMs} ms...`);
await new Promise((resolve) =>
setTimeout(resolve, delayMs)
);
} else {
console.error("All attempts failed.");
}
}
}
}
}

0 comments on commit 6b8a9c4

Please sign in to comment.