🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@robinpath/telegram

Package Overview
Dependencies
Maintainers
4
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@robinpath/telegram - npm Package Compare versions

Comparing version
0.1.0
to
0.1.1
+37
-7
package.json
{
"name": "@robinpath/telegram",
"version": "0.1.0",
"publishConfig": { "access": "public" },
"version": "0.1.1",
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
"files": ["dist"],
"scripts": { "build": "tsc" },
"peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
"devDependencies": { "@wiredwp/robinpath": "^0.30.1", "typescript": "^5.6.0" }
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"files": [
"dist"
],
"scripts": {
"build": "tsc"
},
"peerDependencies": {
"@robinpath/core": ">=0.20.0"
},
"devDependencies": {
"@robinpath/core": "^0.30.1",
"typescript": "^5.6.0"
},
"description": "Telegram Bot API client for sending messages, photos, documents, locations, polls, stickers, and managing chats",
"keywords": [
"telegram",
"messaging",
"api"
],
"license": "MIT",
"robinpath": {
"category": "messaging",
"type": "integration",
"auth": "bearer-token",
"functionCount": 12,
"baseUrl": "https://api.telegram.org"
}
}
-6
import type { ModuleAdapter } from "@wiredwp/robinpath";
declare const TelegramModule: ModuleAdapter;
export default TelegramModule;
export { TelegramModule };
export { TelegramFunctions, TelegramFunctionMetadata, TelegramModuleMetadata } from "./telegram.js";
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,cAAc,EAAE,aAMrB,CAAC;AAEF,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
import { TelegramFunctions, TelegramFunctionMetadata, TelegramModuleMetadata } from "./telegram.js";
const TelegramModule = {
name: "telegram",
functions: TelegramFunctions,
functionMetadata: TelegramFunctionMetadata,
moduleMetadata: TelegramModuleMetadata,
global: false,
}; // as ModuleAdapter
export default TelegramModule;
export { TelegramModule };
export { TelegramFunctions, TelegramFunctionMetadata, TelegramModuleMetadata } from "./telegram.js";
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEpG,MAAM,cAAc,GAAkB;IACpC,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,iBAAiB;IAC5B,gBAAgB,EAAE,wBAA+B;IACjD,cAAc,EAAE,sBAA6B;IAC7C,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
import type { BuiltinHandler } from "@wiredwp/robinpath";
export declare const TelegramFunctions: Record<string, BuiltinHandler>;
export declare const TelegramFunctionMetadata: {
setToken: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getMe: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
send: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendPhoto: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendDocument: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendLocation: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendPoll: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
editMessage: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
deleteMessage: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getUpdates: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendSticker: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getChat: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
};
export declare const TelegramModuleMetadata: {
description: string;
methods: string[];
};
//# sourceMappingURL=telegram.d.ts.map
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAkNlG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAG5D,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuIpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;CAMlC,CAAC"}
import { readFileSync } from "node:fs";
import { basename } from "node:path";
// ── State ────────────────────────────────────────────────────────────
const tokens = new Map();
// ── Helper ───────────────────────────────────────────────────────────
function getToken(botId) {
const token = tokens.get(botId);
if (!token)
throw new Error(`Telegram bot token for "${botId}" not found. Call telegram.setToken first.`);
return token;
}
async function callApi(botId, method, params) {
const token = getToken(botId);
const response = await fetch(`https://api.telegram.org/bot${token}/${method}`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(params),
});
const data = await response.json();
if (!data.ok) {
throw new Error(`Telegram API error: ${data.description ?? JSON.stringify(data)}`);
}
return data.result;
}
async function callApiWithFile(botId, method, fileField, filePath, params) {
const token = getToken(botId);
const fileBuffer = readFileSync(filePath);
const fileName = basename(filePath);
const formData = new FormData();
formData.append(fileField, new Blob([fileBuffer]), fileName);
for (const [key, value] of Object.entries(params)) {
if (value !== undefined && value !== null) {
formData.append(key, String(value));
}
}
const response = await fetch(`https://api.telegram.org/bot${token}/${method}`, {
method: "POST",
body: formData,
});
const data = await response.json();
if (!data.ok) {
throw new Error(`Telegram API error: ${data.description ?? JSON.stringify(data)}`);
}
return data.result;
}
// ── Functions ────────────────────────────────────────────────────────
const setToken = (args) => {
const botId = String(args[0] ?? "default");
const token = String(args[1] ?? "");
if (!token)
throw new Error("Bot token is required.");
tokens.set(botId, token);
return { botId, set: true };
};
const getMe = async (args) => {
const botId = String(args[0] ?? "default");
return await callApi(botId, "getMe", {});
};
const send = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
const text = String(args[2] ?? "");
const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {});
if (!chatId)
throw new Error("chatId is required.");
if (!text)
throw new Error("text is required.");
const params = { chat_id: chatId, text };
if (opts.parseMode)
params.parse_mode = String(opts.parseMode);
if (opts.disableNotification)
params.disable_notification = true;
if (opts.replyToMessageId)
params.reply_to_message_id = Number(opts.replyToMessageId);
return await callApi(botId, "sendMessage", params);
};
const sendPhoto = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
const photoPath = String(args[2] ?? "");
const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {});
if (!chatId)
throw new Error("chatId is required.");
if (!photoPath)
throw new Error("photoPath is required.");
const params = { chat_id: chatId };
if (opts.caption)
params.caption = String(opts.caption);
return await callApiWithFile(botId, "sendPhoto", "photo", photoPath, params);
};
const sendDocument = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
const filePath = String(args[2] ?? "");
const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {});
if (!chatId)
throw new Error("chatId is required.");
if (!filePath)
throw new Error("filePath is required.");
const params = { chat_id: chatId };
if (opts.caption)
params.caption = String(opts.caption);
return await callApiWithFile(botId, "sendDocument", "document", filePath, params);
};
const sendLocation = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
const latitude = Number(args[2] ?? 0);
const longitude = Number(args[3] ?? 0);
if (!chatId)
throw new Error("chatId is required.");
return await callApi(botId, "sendLocation", { chat_id: chatId, latitude, longitude });
};
const sendPoll = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
const question = String(args[2] ?? "");
const options = Array.isArray(args[3]) ? args[3].map(String) : [];
if (!chatId)
throw new Error("chatId is required.");
if (!question)
throw new Error("question is required.");
if (options.length < 2)
throw new Error("At least 2 poll options are required.");
return await callApi(botId, "sendPoll", { chat_id: chatId, question, options });
};
const editMessage = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
const messageId = Number(args[2] ?? 0);
const text = String(args[3] ?? "");
const opts = (typeof args[4] === "object" && args[4] !== null ? args[4] : {});
if (!chatId)
throw new Error("chatId is required.");
if (!messageId)
throw new Error("messageId is required.");
if (!text)
throw new Error("text is required.");
const params = { chat_id: chatId, message_id: messageId, text };
if (opts.parseMode)
params.parse_mode = String(opts.parseMode);
return await callApi(botId, "editMessageText", params);
};
const deleteMessage = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
const messageId = Number(args[2] ?? 0);
if (!chatId)
throw new Error("chatId is required.");
if (!messageId)
throw new Error("messageId is required.");
return await callApi(botId, "deleteMessage", { chat_id: chatId, message_id: messageId });
};
const getUpdates = async (args) => {
const botId = String(args[0] ?? "default");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
const params = {};
if (opts.offset !== undefined)
params.offset = Number(opts.offset);
if (opts.limit !== undefined)
params.limit = Number(opts.limit);
if (opts.timeout !== undefined)
params.timeout = Number(opts.timeout);
return await callApi(botId, "getUpdates", params);
};
const sendSticker = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
const stickerId = String(args[2] ?? "");
if (!chatId)
throw new Error("chatId is required.");
if (!stickerId)
throw new Error("stickerId is required.");
return await callApi(botId, "sendSticker", { chat_id: chatId, sticker: stickerId });
};
const getChat = async (args) => {
const botId = String(args[0] ?? "default");
const chatId = String(args[1] ?? "");
if (!chatId)
throw new Error("chatId is required.");
return await callApi(botId, "getChat", { chat_id: chatId });
};
// ── Exports ──────────────────────────────────────────────────────────
export const TelegramFunctions = {
setToken, getMe, send, sendPhoto, sendDocument, sendLocation, sendPoll,
editMessage, deleteMessage, getUpdates, sendSticker, getChat,
};
export const TelegramFunctionMetadata = {
setToken: {
description: "Store a Telegram bot token for subsequent API calls",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier (default: \"default\")", formInputType: "text", required: false },
{ name: "token", dataType: "string", description: "Telegram bot token from @BotFather", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "{botId, set}",
example: 'telegram.setToken "default" "123456:ABC-DEF..."',
},
getMe: {
description: "Get info about the bot (id, first_name, username)",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier (default: \"default\")", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "{id, is_bot, first_name, username}",
example: 'telegram.getMe "default"',
},
send: {
description: "Send a text message to a chat",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Target chat ID or @username", formInputType: "text", required: true },
{ name: "text", dataType: "string", description: "Message text", formInputType: "text", required: true },
{ name: "options", dataType: "object", description: "{parseMode?, disableNotification?, replyToMessageId?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "Telegram Message object",
example: 'telegram.send "default" "-100123456" "Hello from RobinPath!"',
},
sendPhoto: {
description: "Send a photo from a local file to a chat",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Target chat ID or @username", formInputType: "text", required: true },
{ name: "photoPath", dataType: "string", description: "Absolute path to image file", formInputType: "text", required: true },
{ name: "options", dataType: "object", description: "{caption?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "Telegram Message object",
example: 'telegram.sendPhoto "default" "-100123456" "/tmp/photo.jpg" {"caption": "Look at this!"}',
},
sendDocument: {
description: "Send a document/file from a local path to a chat",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Target chat ID or @username", formInputType: "text", required: true },
{ name: "filePath", dataType: "string", description: "Absolute path to file", formInputType: "text", required: true },
{ name: "options", dataType: "object", description: "{caption?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "Telegram Message object",
example: 'telegram.sendDocument "default" "-100123456" "/tmp/report.pdf" {"caption": "Monthly report"}',
},
sendLocation: {
description: "Send a GPS location to a chat",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Target chat ID or @username", formInputType: "text", required: true },
{ name: "latitude", dataType: "number", description: "Latitude", formInputType: "text", required: true },
{ name: "longitude", dataType: "number", description: "Longitude", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "Telegram Message object",
example: 'telegram.sendLocation "default" "-100123456" 48.8566 2.3522',
},
sendPoll: {
description: "Send a poll to a chat",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Target chat ID or @username", formInputType: "text", required: true },
{ name: "question", dataType: "string", description: "Poll question", formInputType: "text", required: true },
{ name: "options", dataType: "array", description: "Array of answer option strings", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "Telegram Message object with poll",
example: 'telegram.sendPoll "default" "-100123456" "Best language?" ["TypeScript", "Rust", "Go"]',
},
editMessage: {
description: "Edit the text of an existing message",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Chat ID where the message is", formInputType: "text", required: true },
{ name: "messageId", dataType: "number", description: "ID of the message to edit", formInputType: "text", required: true },
{ name: "text", dataType: "string", description: "New message text", formInputType: "text", required: true },
{ name: "options", dataType: "object", description: "{parseMode?}", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "Edited Telegram Message object",
example: 'telegram.editMessage "default" "-100123456" 42 "Updated text"',
},
deleteMessage: {
description: "Delete a message from a chat",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Chat ID", formInputType: "text", required: true },
{ name: "messageId", dataType: "number", description: "ID of the message to delete", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "true on success",
example: 'telegram.deleteMessage "default" "-100123456" 42',
},
getUpdates: {
description: "Receive incoming updates via long polling",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "options", dataType: "object", description: "{offset?, limit?, timeout?}", formInputType: "text", required: false },
],
returnType: "array",
returnDescription: "Array of Telegram Update objects",
example: 'telegram.getUpdates "default" {"offset": 0, "limit": 10}',
},
sendSticker: {
description: "Send a sticker by file_id to a chat",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Target chat ID or @username", formInputType: "text", required: true },
{ name: "stickerId", dataType: "string", description: "Sticker file_id", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "Telegram Message object with sticker",
example: 'telegram.sendSticker "default" "-100123456" "CAACAgIAAxk..."',
},
getChat: {
description: "Get up-to-date information about a chat",
parameters: [
{ name: "botId", dataType: "string", description: "Bot identifier", formInputType: "text", required: true },
{ name: "chatId", dataType: "string", description: "Chat ID or @username", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "Telegram Chat object",
example: 'telegram.getChat "default" "-100123456"',
},
};
export const TelegramModuleMetadata = {
description: "Telegram Bot API client for sending messages, photos, documents, locations, polls, stickers, and managing chats",
methods: [
"setToken", "getMe", "send", "sendPhoto", "sendDocument", "sendLocation",
"sendPoll", "editMessage", "deleteMessage", "getUpdates", "sendSticker", "getChat",
],
};
//# sourceMappingURL=telegram.js.map
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../src/telegram.ts"],"names":[],"mappings":"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"}