UNPKG

weworkbot

Version:
53 lines (52 loc) 3 kB
/// <reference types="node" /> import * as Types from './types'; import { ReadStream } from 'fs'; import type { Queue } from 'bull'; /** * 如何使用群机器人 * 在终端某个群组添加机器人之后,创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。 * 特别特别要注意:一定要保护好机器人的webhook地址,避免泄漏!不要分享到github、博客等可被公开查阅的地方,否则坏人就可以用你的机器人来发垃圾消息了。 */ export declare class WeWorkBot { /** 企业微信机器人的key */ private key; /** 是否不走队列,对于一些不重要的消息,可以不走队列;队列的好处是保证消息不被限流,能够顺利投递 */ private noQueue; constructor(params: { key: string; noQueue?: boolean; }); /** * https://developer.work.weixin.qq.com/document/path/91770#%E6%B6%88%E6%81%AF%E5%8F%91%E9%80%81%E9%A2%91%E7%8E%87%E9%99%90%E5%88%B6 * 企业微信规定:每个机器人发送的消息不能超过20条/分钟。 * 这里我们需要传入一个bull的队列,并且队列需要设置 limiter: { max: 1, duration: 3000 } * 每隔3秒只能发送1次请求,这样能满足20条/分钟的要求 * @param que Bull的队列实例 * @param ENV_NAME 可选参数,如果传入的话,会检查当前的NODE_ENV环境变量和ENV_NAME是否相符,相符合的话,才会定义 process worker,这样可以让worker执行在指定的环境里 */ static setQueue(que: Queue, ENV_NAME?: string): void; /** 统一发送任意类型的消息 */ send(msg: Types.IMsg): Promise<Types.IMsgResult>; /** 发送文本消息 */ sendText(msg: Types.IMsgText['text']): Promise<Types.IMsgResult>; /** 发送markdown类型消息 */ sendMarkDown(content: string): Promise<Types.IMsgResult>; /** 发送 图片类型消息 */ sendImage(filePath: string): Promise<Types.IMsgResult>; /** 发送文件消息,请先用文件上传接口获取media id */ sendFile(mediaId: string): Promise<Types.IMsgResult>; /** 发送图文类型消息 */ sendNews(articles: Types.IMsgNewsArticle[]): Promise<Types.IMsgResult>; /** 发送文本通知模版卡片 */ sendCardTextNotice(msg: Omit<Types.IMsgTemplateCardTextNotice['template_card'], 'card_type'>): Promise<Types.IMsgResult>; /** 发送图文展示模版卡片 */ sendCardNewsNotice(msg: Omit<Types.IMsgTemplateCardNewsNotice['template_card'], 'card_type'>): Promise<Types.IMsgResult>; /** * 文件上传接口 * 要求文件大小在5B~20M之间, 素材上传得到media_id,该media_id仅三天内有效, media_id只能是对应上传文件的机器人可以使用 * */ upload(params: { stream?: ReadStream; filePath?: string; }): Promise<string>; }