UNPKG

@kedoupi/wecombot-mcp

Version:

A Model Context Protocol (MCP) server for WeChat Work (企业微信) group bot integration

102 lines 3.29 kB
import axios from 'axios'; import crypto from 'crypto'; export class WeComClient { webhookUrl; constructor(webhookUrl) { this.webhookUrl = webhookUrl; } createTextMessage(content, mentionedList) { return { msgtype: 'text', text: { content, mentioned_list: mentionedList, }, }; } createMarkdownMessage(content) { return { msgtype: 'markdown', markdown: { content, }, }; } createImageMessage(base64Data) { const md5 = crypto.createHash('md5').update(base64Data, 'base64').digest('hex'); return { msgtype: 'image', image: { base64: base64Data, md5, }, }; } createNewsMessage(title, content, url, description, picurl) { return { msgtype: 'news', news: { articles: [ { title, description: description || content.substring(0, 100), url, picurl, }, ], }, }; } async sendMessage(request) { try { let message; switch (request.message_type) { case 'text': message = this.createTextMessage(request.content, request.mentioned_list); break; case 'markdown': message = this.createMarkdownMessage(request.content); break; case 'image': message = this.createImageMessage(request.content); break; case 'news': if (!request.title || !request.url) { throw new Error('News message requires title and url'); } message = this.createNewsMessage(request.title, request.content, request.url, request.description, request.picurl); break; default: throw new Error(`Unsupported message type: ${request.message_type}`); } const response = await axios.post(this.webhookUrl, message, { headers: { 'Content-Type': 'application/json', }, timeout: 10000, }); if (response.data.errcode === 0) { return { success: true }; } else { return { success: false, message: `WeChat API error: ${response.data.errmsg} (code: ${response.data.errcode})`, }; } } catch (error) { if (axios.isAxiosError(error)) { return { success: false, message: `HTTP error: ${error.message}`, }; } return { success: false, message: `Unexpected error: ${error instanceof Error ? error.message : String(error)}`, }; } } } //# sourceMappingURL=wecom-client.js.map