social-mcp 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +165 -0
  2. package/dist/constants.d.ts +2 -0
  3. package/dist/constants.js +4 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.js +62 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/lib/config.d.ts +19 -0
  9. package/dist/lib/config.js +20 -0
  10. package/dist/lib/config.js.map +1 -0
  11. package/dist/lib/http.d.ts +7 -0
  12. package/dist/lib/http.js +27 -0
  13. package/dist/lib/http.js.map +1 -0
  14. package/dist/run_tools_discord.d.ts +19 -0
  15. package/dist/run_tools_discord.js +49 -0
  16. package/dist/run_tools_discord.js.map +1 -0
  17. package/dist/run_tools_facebook.d.ts +19 -0
  18. package/dist/run_tools_facebook.js +49 -0
  19. package/dist/run_tools_facebook.js.map +1 -0
  20. package/dist/run_tools_instagram.d.ts +20 -0
  21. package/dist/run_tools_instagram.js +54 -0
  22. package/dist/run_tools_instagram.js.map +1 -0
  23. package/dist/run_tools_slack.d.ts +19 -0
  24. package/dist/run_tools_slack.js +49 -0
  25. package/dist/run_tools_slack.js.map +1 -0
  26. package/dist/run_tools_telegram.d.ts +20 -0
  27. package/dist/run_tools_telegram.js +107 -0
  28. package/dist/run_tools_telegram.js.map +1 -0
  29. package/dist/run_tools_twitter.d.ts +23 -0
  30. package/dist/run_tools_twitter.js +74 -0
  31. package/dist/run_tools_twitter.js.map +1 -0
  32. package/dist/run_tools_whatsapp.d.ts +20 -0
  33. package/dist/run_tools_whatsapp.js +58 -0
  34. package/dist/run_tools_whatsapp.js.map +1 -0
  35. package/dist/services/discord-service.d.ts +10 -0
  36. package/dist/services/discord-service.js +24 -0
  37. package/dist/services/discord-service.js.map +1 -0
  38. package/dist/services/facebook-service.d.ts +8 -0
  39. package/dist/services/facebook-service.js +22 -0
  40. package/dist/services/facebook-service.js.map +1 -0
  41. package/dist/services/instagram-service.d.ts +7 -0
  42. package/dist/services/instagram-service.js +28 -0
  43. package/dist/services/instagram-service.js.map +1 -0
  44. package/dist/services/slack-service.d.ts +9 -0
  45. package/dist/services/slack-service.js +31 -0
  46. package/dist/services/slack-service.js.map +1 -0
  47. package/dist/services/telegram-service.d.ts +29 -0
  48. package/dist/services/telegram-service.js +80 -0
  49. package/dist/services/telegram-service.js.map +1 -0
  50. package/dist/services/twitter-service.d.ts +10 -0
  51. package/dist/services/twitter-service.js +58 -0
  52. package/dist/services/twitter-service.js.map +1 -0
  53. package/dist/services/whatsapp-service.d.ts +23 -0
  54. package/dist/services/whatsapp-service.js +72 -0
  55. package/dist/services/whatsapp-service.js.map +1 -0
  56. package/dist/tools/discord-tools/send-message.d.ts +16 -0
  57. package/dist/tools/discord-tools/send-message.js +35 -0
  58. package/dist/tools/discord-tools/send-message.js.map +1 -0
  59. package/dist/tools/facebook-tools/create-post.d.ts +16 -0
  60. package/dist/tools/facebook-tools/create-post.js +34 -0
  61. package/dist/tools/facebook-tools/create-post.js.map +1 -0
  62. package/dist/tools/instagram-tools/create-post.d.ts +18 -0
  63. package/dist/tools/instagram-tools/create-post.js +35 -0
  64. package/dist/tools/instagram-tools/create-post.js.map +1 -0
  65. package/dist/tools/slack-tools/send-message.d.ts +16 -0
  66. package/dist/tools/slack-tools/send-message.js +34 -0
  67. package/dist/tools/slack-tools/send-message.js.map +1 -0
  68. package/dist/tools/telegram-tools/forward-message.d.ts +20 -0
  69. package/dist/tools/telegram-tools/forward-message.js +44 -0
  70. package/dist/tools/telegram-tools/forward-message.js.map +1 -0
  71. package/dist/tools/telegram-tools/get-channel-info.d.ts +14 -0
  72. package/dist/tools/telegram-tools/get-channel-info.js +39 -0
  73. package/dist/tools/telegram-tools/get-channel-info.js.map +1 -0
  74. package/dist/tools/telegram-tools/get-channel-members.d.ts +16 -0
  75. package/dist/tools/telegram-tools/get-channel-members.js +56 -0
  76. package/dist/tools/telegram-tools/get-channel-members.js.map +1 -0
  77. package/dist/tools/telegram-tools/pin-message.d.ts +18 -0
  78. package/dist/tools/telegram-tools/pin-message.js +41 -0
  79. package/dist/tools/telegram-tools/pin-message.js.map +1 -0
  80. package/dist/tools/telegram-tools/send-message.d.ts +16 -0
  81. package/dist/tools/telegram-tools/send-message.js +38 -0
  82. package/dist/tools/telegram-tools/send-message.js.map +1 -0
  83. package/dist/tools/twitter-tools/get-user-info.d.ts +14 -0
  84. package/dist/tools/twitter-tools/get-user-info.js +38 -0
  85. package/dist/tools/twitter-tools/get-user-info.js.map +1 -0
  86. package/dist/tools/twitter-tools/search-tweets.d.ts +16 -0
  87. package/dist/tools/twitter-tools/search-tweets.js +51 -0
  88. package/dist/tools/twitter-tools/search-tweets.js.map +1 -0
  89. package/dist/tools/twitter-tools/send-tweet.d.ts +14 -0
  90. package/dist/tools/twitter-tools/send-tweet.js +33 -0
  91. package/dist/tools/twitter-tools/send-tweet.js.map +1 -0
  92. package/dist/tools/whatsapp-tools/get-messages.d.ts +14 -0
  93. package/dist/tools/whatsapp-tools/get-messages.js +54 -0
  94. package/dist/tools/whatsapp-tools/get-messages.js.map +1 -0
  95. package/dist/tools/whatsapp-tools/send-message.d.ts +16 -0
  96. package/dist/tools/whatsapp-tools/send-message.js +34 -0
  97. package/dist/tools/whatsapp-tools/send-message.js.map +1 -0
  98. package/dist/types.d.ts +4 -0
  99. package/dist/types.js +4 -0
  100. package/dist/types.js.map +1 -0
  101. package/package.json +74 -0
@@ -0,0 +1,58 @@
1
+ import { TwitterApi } from "twitter-api-v2";
2
+ export class TwitterService {
3
+ client;
4
+ constructor() {
5
+ const appKey = process.env.TWITTER_APP_KEY;
6
+ const appSecret = process.env.TWITTER_APP_SECRET;
7
+ const accessToken = process.env.TWITTER_ACCESS_TOKEN;
8
+ const accessSecret = process.env.TWITTER_ACCESS_SECRET;
9
+ if (!appKey || !appSecret || !accessToken || !accessSecret) {
10
+ throw new Error("Twitter API credentials are not fully configured in environment variables");
11
+ }
12
+ this.client = new TwitterApi({
13
+ appKey,
14
+ appSecret,
15
+ accessToken,
16
+ accessSecret,
17
+ });
18
+ }
19
+ async sendTweet(text) {
20
+ try {
21
+ const { data: createdTweet } = await this.client.v2.tweet(text);
22
+ return createdTweet;
23
+ }
24
+ catch (error) {
25
+ throw new Error(`Failed to send tweet: ${error instanceof Error ? error.message : "Unknown error"}`);
26
+ }
27
+ }
28
+ async getUserInfo(username) {
29
+ try {
30
+ const { data: user } = await this.client.v2.userByUsername(username, {
31
+ "user.fields": [
32
+ "description",
33
+ "public_metrics",
34
+ "profile_image_url",
35
+ "created_at",
36
+ ],
37
+ });
38
+ return user;
39
+ }
40
+ catch (error) {
41
+ throw new Error(`Failed to get user info: ${error instanceof Error ? error.message : "Unknown error"}`);
42
+ }
43
+ }
44
+ async searchTweets(query, maxResults = 10) {
45
+ try {
46
+ // Return the full paginator so callers have access to both .data and .meta
47
+ const result = await this.client.v2.search(query, {
48
+ max_results: maxResults,
49
+ "tweet.fields": ["created_at", "author_id", "public_metrics"],
50
+ });
51
+ return result;
52
+ }
53
+ catch (error) {
54
+ throw new Error(`Failed to search tweets: ${error instanceof Error ? error.message : "Unknown error"}`);
55
+ }
56
+ }
57
+ }
58
+ //# sourceMappingURL=twitter-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitter-service.js","sourceRoot":"","sources":["../../src/services/twitter-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,OAAO,cAAc;IAClB,MAAM,CAAa;IAE3B;QACC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACrD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAEvD,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CACd,2EAA2E,CAC3E,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC;YAC5B,MAAM;YACN,SAAS;YACT,WAAW;YACX,YAAY;SACZ,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC3B,IAAI,CAAC;YACJ,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChE,OAAO,YAAY,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACd,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACnF,CAAC;QACH,CAAC;IACF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB;QACjC,IAAI,CAAC;YACJ,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE;gBACpE,aAAa,EAAE;oBACd,aAAa;oBACb,gBAAgB;oBAChB,mBAAmB;oBACnB,YAAY;iBACZ;aACD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACd,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACtF,CAAC;QACH,CAAC;IACF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,UAAU,GAAG,EAAE;QAChD,IAAI,CAAC;YACJ,2EAA2E;YAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjD,WAAW,EAAE,UAAU;gBACvB,cAAc,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC;aAC7D,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACd,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACtF,CAAC;QACH,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,23 @@
1
+ export declare class WhatsappService {
2
+ private baseUrl;
3
+ private headers;
4
+ sendMessage(to: string, text: string): Promise<{
5
+ messaging_product: string;
6
+ contacts: {
7
+ input: string;
8
+ wa_id: string;
9
+ }[];
10
+ messages: {
11
+ id: string;
12
+ }[];
13
+ }>;
14
+ getMessages(limit?: number): Promise<{
15
+ data: {
16
+ id: string;
17
+ from: string;
18
+ text?: {
19
+ body: string;
20
+ } | undefined;
21
+ }[];
22
+ }>;
23
+ }
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ import { fetchJson } from "../lib/http.js";
3
+ import { config } from "../lib/config.js";
4
+ const whatsappMessageSchema = z.object({
5
+ messaging_product: z.string(),
6
+ contacts: z.array(z.object({ input: z.string(), wa_id: z.string() })),
7
+ messages: z.array(z.object({ id: z.string() })),
8
+ });
9
+ // Define a schema for a single WhatsApp message for fetching
10
+ const whatsappMessageDetailSchema = z.object({
11
+ id: z.string().describe("The unique ID of the message"),
12
+ from: z.string().describe("The sender's phone number"),
13
+ text: z.object({ body: z.string() }).optional().describe("The message text content"),
14
+ // Add other relevant fields if available from the API, e.g., timestamp, type, etc.
15
+ });
16
+ // Define a schema for the list of messages response
17
+ const getMessagesResponseSchema = z.object({
18
+ data: z.array(whatsappMessageDetailSchema),
19
+ });
20
+ export class WhatsappService {
21
+ baseUrl = config.whatsapp.baseUrl;
22
+ headers = {
23
+ "Content-Type": "application/json",
24
+ Authorization: `Bearer ${config.whatsapp.accessToken}`,
25
+ };
26
+ async sendMessage(to, text) {
27
+ if (!to || !text) {
28
+ throw new Error("Both 'to' and 'text' parameters are required");
29
+ }
30
+ // Validate phone number format (basic validation)
31
+ if (!/^\+?[1-9]\d{1,14}$/.test(to)) {
32
+ throw new Error("Invalid phone number format");
33
+ }
34
+ try {
35
+ const body = {
36
+ messaging_product: "whatsapp",
37
+ to,
38
+ type: "text",
39
+ text: { body: text },
40
+ };
41
+ return fetchJson(`${this.baseUrl}/me/messages`, {
42
+ method: "POST",
43
+ headers: this.headers,
44
+ body: JSON.stringify(body),
45
+ }, whatsappMessageSchema);
46
+ }
47
+ catch (error) {
48
+ console.error("Error sending WhatsApp message:", error);
49
+ throw error;
50
+ }
51
+ }
52
+ // Method to fetch recent messages
53
+ async getMessages(limit = 10) {
54
+ // Note: The WhatsApp Business API might not directly support fetching historical messages via a simple GET request
55
+ // without specific conversation IDs or filters. This is a placeholder implementation assuming such an endpoint exists.
56
+ // A more realistic implementation might involve webhooks or specific conversation fetching.
57
+ // For demonstration, we'll assume a GET request to a /messages endpoint with a limit.
58
+ try {
59
+ const response = await fetchJson(`${this.baseUrl}/me/messages?limit=${limit}`, // Placeholder endpoint
60
+ {
61
+ method: "GET",
62
+ headers: this.headers,
63
+ }, getMessagesResponseSchema);
64
+ return response;
65
+ }
66
+ catch (error) {
67
+ console.error("Error fetching WhatsApp messages:", error);
68
+ throw error;
69
+ }
70
+ }
71
+ }
72
+ //# sourceMappingURL=whatsapp-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-service.js","sourceRoot":"","sources":["../../src/services/whatsapp-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ declare const sendMessageParams: z.ZodObject<{
3
+ channelId: z.ZodString;
4
+ content: z.ZodString;
5
+ }, z.core.$strip>;
6
+ type SendMessageParams = z.infer<typeof sendMessageParams>;
7
+ export declare const sendMessageTool: {
8
+ readonly name: "SEND_DISCORD_MESSAGE";
9
+ readonly description: "Send a message to a Discord channel";
10
+ readonly parameters: z.ZodObject<{
11
+ channelId: z.ZodString;
12
+ content: z.ZodString;
13
+ }, z.core.$strip>;
14
+ readonly execute: (params: SendMessageParams) => Promise<string>;
15
+ };
16
+ export {};
@@ -0,0 +1,35 @@
1
+ import dedent from "dedent";
2
+ import { z } from "zod";
3
+ import { DiscordService } from "../../services/discord-service.js";
4
+ const sendMessageParams = z.object({
5
+ channelId: z.string().describe("The ID of the Discord channel"),
6
+ content: z.string().min(1).describe("The message content to send"),
7
+ });
8
+ export const sendMessageTool = {
9
+ name: "SEND_DISCORD_MESSAGE",
10
+ description: "Send a message to a Discord channel",
11
+ parameters: sendMessageParams,
12
+ execute: async (params) => {
13
+ const discordService = new DiscordService();
14
+ try {
15
+ const message = await discordService.sendMessage(params.channelId, params.content);
16
+ return dedent `
17
+ Message sent successfully to Discord channel ${message.channel_id}!
18
+
19
+ Message ID: ${message.id}
20
+ Content: ${message.content}
21
+ Timestamp: ${message.timestamp}
22
+ `;
23
+ }
24
+ catch (error) {
25
+ if (error instanceof Error) {
26
+ if (error.message.includes("DISCORD_BOT_TOKEN")) {
27
+ return "Error: Discord bot token is not configured. Please set the DISCORD_BOT_TOKEN environment variable.";
28
+ }
29
+ return `Error sending message: ${error.message}`;
30
+ }
31
+ return "An unknown error occurred while sending the message";
32
+ }
33
+ },
34
+ };
35
+ //# sourceMappingURL=send-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../../src/tools/discord-tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CACnE,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,qCAAqC;IAClD,UAAU,EAAE,iBAAiB;IAC7B,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,EAAE;QAC3C,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,CAC9C,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,CACf,CAAC;YAEF,OAAO,MAAM,CAAA;uDACoC,OAAO,CAAC,UAAU;;sBAEnD,OAAO,CAAC,EAAE;mBACb,OAAO,CAAC,OAAO;qBACb,OAAO,CAAC,SAAS;OAC/B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBAChD,OAAO,oGAAoG,CAAC;gBAC9G,CAAC;gBACD,OAAO,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC;YACnD,CAAC;YACD,OAAO,qDAAqD,CAAC;QAC/D,CAAC;IACH,CAAC;CACO,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ declare const createPostParams: z.ZodObject<{
3
+ pageId: z.ZodString;
4
+ message: z.ZodString;
5
+ }, z.core.$strip>;
6
+ type CreatePostParams = z.infer<typeof createPostParams>;
7
+ export declare const createPostTool: {
8
+ readonly name: "CREATE_FACEBOOK_POST";
9
+ readonly description: "Create a post on a Facebook page";
10
+ readonly parameters: z.ZodObject<{
11
+ pageId: z.ZodString;
12
+ message: z.ZodString;
13
+ }, z.core.$strip>;
14
+ readonly execute: (params: CreatePostParams) => Promise<string>;
15
+ };
16
+ export {};
@@ -0,0 +1,34 @@
1
+ import dedent from "dedent";
2
+ import { z } from "zod";
3
+ import { FacebookService } from "../../services/facebook-service.js";
4
+ const createPostParams = z.object({
5
+ pageId: z.string().describe("The ID of the Facebook page"),
6
+ message: z.string().min(1).describe("The text of the post"),
7
+ });
8
+ export const createPostTool = {
9
+ name: "CREATE_FACEBOOK_POST",
10
+ description: "Create a post on a Facebook page",
11
+ parameters: createPostParams,
12
+ execute: async (params) => {
13
+ const facebookService = new FacebookService();
14
+ try {
15
+ const post = await facebookService.createPost(params.pageId, params.message);
16
+ return dedent `
17
+ Post created successfully on Facebook!
18
+
19
+ Post ID: ${post.post_id}
20
+ Page ID: ${post.id}
21
+ `;
22
+ }
23
+ catch (error) {
24
+ if (error instanceof Error) {
25
+ if (error.message.includes("FACEBOOK_ACCESS_TOKEN")) {
26
+ return "Error: Facebook access token is not configured. Please set the FACEBOOK_ACCESS_TOKEN environment variable.";
27
+ }
28
+ return `Error creating post: ${error.message}`;
29
+ }
30
+ return "An unknown error occurred while creating the post";
31
+ }
32
+ },
33
+ };
34
+ //# sourceMappingURL=create-post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-post.js","sourceRoot":"","sources":["../../../src/tools/facebook-tools/create-post.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CAC5D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,kCAAkC;IAC/C,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,EAAE;QAC1C,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,UAAU,CAC3C,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,CACf,CAAC;YAEF,OAAO,MAAM,CAAA;;;mBAGA,IAAI,CAAC,OAAO;mBACZ,IAAI,CAAC,EAAE;OACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBACpD,OAAO,4GAA4G,CAAC;gBACtH,CAAC;gBACD,OAAO,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC;YACjD,CAAC;YACD,OAAO,mDAAmD,CAAC;QAC7D,CAAC;IACH,CAAC;CACO,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ declare const createPostParams: z.ZodObject<{
3
+ userId: z.ZodString;
4
+ imageUrl: z.ZodString;
5
+ message: z.ZodString;
6
+ }, z.core.$strip>;
7
+ type CreatePostParams = z.infer<typeof createPostParams>;
8
+ export declare const createPostTool: {
9
+ readonly name: "CREATE_INSTAGRAM_POST";
10
+ readonly description: "Create an Instagram post with an image and text";
11
+ readonly parameters: z.ZodObject<{
12
+ userId: z.ZodString;
13
+ imageUrl: z.ZodString;
14
+ message: z.ZodString;
15
+ }, z.core.$strip>;
16
+ readonly execute: (params: CreatePostParams) => Promise<string>;
17
+ };
18
+ export {};
@@ -0,0 +1,35 @@
1
+ import dedent from "dedent";
2
+ import { z } from "zod";
3
+ import { InstagramService } from "../../services/instagram-service.js";
4
+ const createPostParams = z.object({
5
+ userId: z.string().describe("The Instagram user ID"),
6
+ imageUrl: z.string().url().describe("The URL of the image to post (optional)"),
7
+ message: z.string().min(1).describe("The text content of the Instagram post"),
8
+ });
9
+ export const createPostTool = {
10
+ name: "CREATE_INSTAGRAM_POST",
11
+ description: "Create an Instagram post with an image and text",
12
+ parameters: createPostParams,
13
+ execute: async (params) => {
14
+ const instagramService = new InstagramService();
15
+ try {
16
+ // Call createPost with userId, imageUrl, and message
17
+ const post = await instagramService.createPost(params.userId, params.imageUrl, params.message);
18
+ return dedent `
19
+ Post created successfully on Instagram!
20
+
21
+ Post ID: ${post.id}
22
+ `;
23
+ }
24
+ catch (error) {
25
+ if (error instanceof Error) {
26
+ if (error.message.includes("INSTAGRAM_ACCESS_TOKEN")) {
27
+ return "Error: Instagram access token is not configured. Please set the INSTAGRAM_ACCESS_TOKEN environment variable.";
28
+ }
29
+ return `Error creating Instagram post: ${error.message}`;
30
+ }
31
+ return "An unknown error occurred while creating the Instagram post";
32
+ }
33
+ },
34
+ };
35
+ //# sourceMappingURL=create-post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-post.js","sourceRoot":"","sources":["../../../src/tools/instagram-tools/create-post.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC9E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CAC9E,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,iDAAiD;IAC9D,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,KAAK,EAAE,MAAwB,EAAE,EAAE;QAC1C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEhD,IAAI,CAAC;YACH,qDAAqD;YACrD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAE/F,OAAO,MAAM,CAAA;;;mBAGA,IAAI,CAAC,EAAE;OACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;oBACrD,OAAO,8GAA8G,CAAC;gBACxH,CAAC;gBACD,OAAO,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3D,CAAC;YACD,OAAO,6DAA6D,CAAC;QACvE,CAAC;IACH,CAAC;CACO,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ declare const sendMessageParams: z.ZodObject<{
3
+ channelId: z.ZodString;
4
+ text: z.ZodString;
5
+ }, z.core.$strip>;
6
+ type SendMessageParams = z.infer<typeof sendMessageParams>;
7
+ export declare const sendMessageTool: {
8
+ readonly name: "SEND_SLACK_MESSAGE";
9
+ readonly description: "Send a message to a Slack channel";
10
+ readonly parameters: z.ZodObject<{
11
+ channelId: z.ZodString;
12
+ text: z.ZodString;
13
+ }, z.core.$strip>;
14
+ readonly execute: (params: SendMessageParams) => Promise<string>;
15
+ };
16
+ export {};
@@ -0,0 +1,34 @@
1
+ import dedent from "dedent";
2
+ import { z } from "zod";
3
+ import { SlackService } from "../../services/slack-service.js";
4
+ const sendMessageParams = z.object({
5
+ channelId: z.string().describe("The Slack channel ID or name"),
6
+ text: z.string().min(1).describe("The message text to send"),
7
+ });
8
+ export const sendMessageTool = {
9
+ name: "SEND_SLACK_MESSAGE",
10
+ description: "Send a message to a Slack channel",
11
+ parameters: sendMessageParams,
12
+ execute: async (params) => {
13
+ const slackService = new SlackService();
14
+ try {
15
+ const message = await slackService.sendMessage(params.channelId, params.text);
16
+ return dedent `
17
+ Message sent successfully to Slack channel ${message.channelId}!
18
+
19
+ Message ID: ${message.messageId}
20
+ Content: ${message.text}
21
+ `;
22
+ }
23
+ catch (error) {
24
+ if (error instanceof Error) {
25
+ if (error.message.includes("SLACK_BOT_TOKEN")) {
26
+ return "Error: Slack bot token is not configured. Please set the SLACK_BOT_TOKEN environment variable.";
27
+ }
28
+ return `Error sending message: ${error.message}`;
29
+ }
30
+ return "An unknown error occurred while sending the message";
31
+ }
32
+ },
33
+ };
34
+ //# sourceMappingURL=send-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../../src/tools/slack-tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CAC5D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC9B,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,mCAAmC;IAChD,UAAU,EAAE,iBAAiB;IAC7B,OAAO,EAAE,KAAK,EAAE,MAAyB,EAAE,EAAE;QAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,WAAW,CAC7C,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,IAAI,CACX,CAAC;YAEF,OAAO,MAAM,CAAA;iDACiC,OAAO,CAAC,SAAS;;kBAEhD,OAAO,CAAC,SAAS;eACpB,OAAO,CAAC,IAAI;IACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC/C,OAAO,gGAAgG,CAAC;gBACzG,CAAC;gBACD,OAAO,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC;YAClD,CAAC;YACD,OAAO,qDAAqD,CAAC;QAC9D,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ declare const forwardMessageParams: z.ZodObject<{
3
+ fromChatId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
4
+ toChatId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
5
+ messageId: z.ZodNumber;
6
+ disableNotification: z.ZodOptional<z.ZodBoolean>;
7
+ }, z.core.$strip>;
8
+ type ForwardMessageParams = z.infer<typeof forwardMessageParams>;
9
+ export declare const forwardMessageTool: {
10
+ readonly name: "FORWARD_MESSAGE";
11
+ readonly description: "Forward a message from one chat to another";
12
+ readonly parameters: z.ZodObject<{
13
+ fromChatId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
14
+ toChatId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
15
+ messageId: z.ZodNumber;
16
+ disableNotification: z.ZodOptional<z.ZodBoolean>;
17
+ }, z.core.$strip>;
18
+ readonly execute: (params: ForwardMessageParams) => Promise<string>;
19
+ };
20
+ export {};
@@ -0,0 +1,44 @@
1
+ import dedent from "dedent";
2
+ import { z } from "zod";
3
+ import { TelegramService } from "../../services/telegram-service.js";
4
+ const forwardMessageParams = z.object({
5
+ fromChatId: z
6
+ .union([z.string(), z.number()])
7
+ .describe("Source chat ID or username"),
8
+ toChatId: z
9
+ .union([z.string(), z.number()])
10
+ .describe("Destination chat ID or username"),
11
+ messageId: z.number().describe("ID of the message to forward"),
12
+ disableNotification: z
13
+ .boolean()
14
+ .optional()
15
+ .describe("Forward message silently"),
16
+ });
17
+ export const forwardMessageTool = {
18
+ name: "FORWARD_MESSAGE",
19
+ description: "Forward a message from one chat to another",
20
+ parameters: forwardMessageParams,
21
+ execute: async (params) => {
22
+ const telegramService = new TelegramService();
23
+ try {
24
+ const messageInfo = await telegramService.forwardMessage(params.fromChatId, params.toChatId, params.messageId);
25
+ return dedent `
26
+ Message forwarded successfully!
27
+
28
+ New Message ID: ${messageInfo.messageId}
29
+ Destination Chat ID: ${messageInfo.chatId}
30
+ Forwarded at: ${new Date(messageInfo.date * 1000).toISOString()}
31
+ `;
32
+ }
33
+ catch (error) {
34
+ if (error instanceof Error) {
35
+ if (error.message.includes("BOT_TOKEN")) {
36
+ return "Error: Telegram bot token is not configured. Please set the TELEGRAM_BOT_TOKEN environment variable.";
37
+ }
38
+ return `Error forwarding message: ${error.message}`;
39
+ }
40
+ return "An unknown error occurred while forwarding the message";
41
+ }
42
+ },
43
+ };
44
+ //# sourceMappingURL=forward-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forward-message.js","sourceRoot":"","sources":["../../../src/tools/telegram-tools/forward-message.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;SAC/B,QAAQ,CAAC,4BAA4B,CAAC;IACxC,QAAQ,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;SAC/B,QAAQ,CAAC,iCAAiC,CAAC;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC9D,mBAAmB,EAAE,CAAC;SACpB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,0BAA0B,CAAC;CACtC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,4CAA4C;IACzD,UAAU,EAAE,oBAAoB;IAChC,OAAO,EAAE,KAAK,EAAE,MAA4B,EAAE,EAAE;QAC/C,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,cAAc,CACvD,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,SAAS,CAChB,CAAC;YAEF,OAAO,MAAM,CAAA;;;sBAGM,WAAW,CAAC,SAAS;2BAChB,WAAW,CAAC,MAAM;oBACzB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;IAC/D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACzC,OAAO,sGAAsG,CAAC;gBAC/G,CAAC;gBACD,OAAO,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC;YACrD,CAAC;YACD,OAAO,wDAAwD,CAAC;QACjE,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ declare const getChannelInfoParams: z.ZodObject<{
3
+ channelId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
4
+ }, z.core.$strip>;
5
+ type GetChannelInfoParams = z.infer<typeof getChannelInfoParams>;
6
+ export declare const getChannelInfoTool: {
7
+ readonly name: "GET_CHANNEL_INFO";
8
+ readonly description: "Get information about a Telegram channel or chat";
9
+ readonly parameters: z.ZodObject<{
10
+ channelId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
11
+ }, z.core.$strip>;
12
+ readonly execute: (params: GetChannelInfoParams) => Promise<string>;
13
+ };
14
+ export {};
@@ -0,0 +1,39 @@
1
+ import dedent from "dedent";
2
+ import { z } from "zod";
3
+ import { TelegramService } from "../../services/telegram-service.js";
4
+ const getChannelInfoParams = z.object({
5
+ channelId: z
6
+ .union([z.string(), z.number()])
7
+ .describe("The channel ID or username (e.g., @channelname or -1001234567890)"),
8
+ });
9
+ export const getChannelInfoTool = {
10
+ name: "GET_CHANNEL_INFO",
11
+ description: "Get information about a Telegram channel or chat",
12
+ parameters: getChannelInfoParams,
13
+ execute: async (params) => {
14
+ const telegramService = new TelegramService();
15
+ try {
16
+ const channelInfo = await telegramService.getChannelInfo(params.channelId);
17
+ return dedent `
18
+ Channel Information:
19
+
20
+ Title: ${channelInfo.title}
21
+ ID: ${channelInfo.id}
22
+ Type: ${channelInfo.type}
23
+ Username: ${channelInfo.username || "N/A"}
24
+ Description: ${channelInfo.description || "N/A"}
25
+ Member Count: ${channelInfo.memberCount || "N/A"}
26
+ `;
27
+ }
28
+ catch (error) {
29
+ if (error instanceof Error) {
30
+ if (error.message.includes("BOT_TOKEN")) {
31
+ return "Error: Telegram bot token is not configured. Please set the TELEGRAM_BOT_TOKEN environment variable.";
32
+ }
33
+ return `Error getting channel info: ${error.message}`;
34
+ }
35
+ return "An unknown error occurred while getting channel information";
36
+ }
37
+ },
38
+ };
39
+ //# sourceMappingURL=get-channel-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-channel-info.js","sourceRoot":"","sources":["../../../src/tools/telegram-tools/get-channel-info.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;SAC/B,QAAQ,CACR,mEAAmE,CACnE;CACF,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IACjC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kDAAkD;IAC/D,UAAU,EAAE,oBAAoB;IAChC,OAAO,EAAE,KAAK,EAAE,MAA4B,EAAE,EAAE;QAC/C,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,cAAc,CACvD,MAAM,CAAC,SAAS,CAChB,CAAC;YAEF,OAAO,MAAM,CAAA;;;aAGH,WAAW,CAAC,KAAK;UACpB,WAAW,CAAC,EAAE;YACZ,WAAW,CAAC,IAAI;gBACZ,WAAW,CAAC,QAAQ,IAAI,KAAK;mBAC1B,WAAW,CAAC,WAAW,IAAI,KAAK;oBAC/B,WAAW,CAAC,WAAW,IAAI,KAAK;IAChD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACzC,OAAO,sGAAsG,CAAC;gBAC/G,CAAC;gBACD,OAAO,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC;YACvD,CAAC;YACD,OAAO,6DAA6D,CAAC;QACtE,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ declare const getChannelMembersParams: z.ZodObject<{
3
+ channelId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
4
+ limit: z.ZodDefault<z.ZodNumber>;
5
+ }, z.core.$strip>;
6
+ type GetChannelMembersParams = z.infer<typeof getChannelMembersParams>;
7
+ export declare const getChannelMembersTool: {
8
+ readonly name: "GET_CHANNEL_MEMBERS";
9
+ readonly description: "Get a list of channel administrators and members";
10
+ readonly parameters: z.ZodObject<{
11
+ channelId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
12
+ limit: z.ZodDefault<z.ZodNumber>;
13
+ }, z.core.$strip>;
14
+ readonly execute: (params: GetChannelMembersParams) => Promise<string>;
15
+ };
16
+ export {};
@@ -0,0 +1,56 @@
1
+ import dedent from "dedent";
2
+ import { z } from "zod";
3
+ import { TelegramService } from "../../services/telegram-service.js";
4
+ const getChannelMembersParams = z.object({
5
+ channelId: z
6
+ .union([z.string(), z.number()])
7
+ .describe("The channel ID or username"),
8
+ limit: z
9
+ .number()
10
+ .min(1)
11
+ .max(50)
12
+ .default(10)
13
+ .describe("Maximum number of members to retrieve (1-50)"),
14
+ });
15
+ export const getChannelMembersTool = {
16
+ name: "GET_CHANNEL_MEMBERS",
17
+ description: "Get a list of channel administrators and members",
18
+ parameters: getChannelMembersParams,
19
+ execute: async (params) => {
20
+ const telegramService = new TelegramService();
21
+ try {
22
+ const members = await telegramService.getChannelMembers(params.channelId, params.limit);
23
+ if (members.length === 0) {
24
+ return "No members found or insufficient permissions to view members.";
25
+ }
26
+ const membersList = members
27
+ .map((member, index) => {
28
+ const name = [member.firstName, member.lastName]
29
+ .filter(Boolean)
30
+ .join(" ");
31
+ return dedent `
32
+ ${index + 1}. ${name || "No name"}
33
+ User ID: ${member.userId}
34
+ Username: ${member.username ? `@${member.username}` : "N/A"}
35
+ Status: ${member.status}
36
+ `;
37
+ })
38
+ .join("\n\n");
39
+ return dedent `
40
+ Channel Members (showing ${members.length} members):
41
+
42
+ ${membersList}
43
+ `;
44
+ }
45
+ catch (error) {
46
+ if (error instanceof Error) {
47
+ if (error.message.includes("BOT_TOKEN")) {
48
+ return "Error: Telegram bot token is not configured. Please set the TELEGRAM_BOT_TOKEN environment variable.";
49
+ }
50
+ return `Error getting channel members: ${error.message}`;
51
+ }
52
+ return "An unknown error occurred while getting channel members";
53
+ }
54
+ },
55
+ };
56
+ //# sourceMappingURL=get-channel-members.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-channel-members.js","sourceRoot":"","sources":["../../../src/tools/telegram-tools/get-channel-members.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;SAC/B,QAAQ,CAAC,4BAA4B,CAAC;IACxC,KAAK,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,8CAA8C,CAAC;CAC1D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,kDAAkD;IAC/D,UAAU,EAAE,uBAAuB;IACnC,OAAO,EAAE,KAAK,EAAE,MAA+B,EAAE,EAAE;QAClD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE9C,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,iBAAiB,CACtD,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,KAAK,CACZ,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,+DAA+D,CAAC;YACxE,CAAC;YAED,MAAM,WAAW,GAAG,OAAO;iBACzB,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;qBAC9C,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,GAAG,CAAC,CAAC;gBACZ,OAAO,MAAM,CAAA;OACX,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,SAAS;mBACnB,MAAM,CAAC,MAAM;oBACZ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK;kBACjD,MAAM,CAAC,MAAM;KAC1B,CAAC;YACF,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC,CAAC;YAEf,OAAO,MAAM,CAAA;+BACe,OAAO,CAAC,MAAM;;MAEvC,WAAW;IACb,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACzC,OAAO,sGAAsG,CAAC;gBAC/G,CAAC;gBACD,OAAO,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC1D,CAAC;YACD,OAAO,yDAAyD,CAAC;QAClE,CAAC;IACF,CAAC;CACQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ declare const pinMessageParams: z.ZodObject<{
3
+ chatId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
4
+ messageId: z.ZodNumber;
5
+ disableNotification: z.ZodOptional<z.ZodBoolean>;
6
+ }, z.core.$strip>;
7
+ type PinMessageParams = z.infer<typeof pinMessageParams>;
8
+ export declare const pinMessageTool: {
9
+ readonly name: "PIN_MESSAGE";
10
+ readonly description: "Pin a message in a Telegram chat or channel";
11
+ readonly parameters: z.ZodObject<{
12
+ chatId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
13
+ messageId: z.ZodNumber;
14
+ disableNotification: z.ZodOptional<z.ZodBoolean>;
15
+ }, z.core.$strip>;
16
+ readonly execute: (params: PinMessageParams) => Promise<string>;
17
+ };
18
+ export {};