weworkbot
Version:
53 lines (52 loc) • 3 kB
TypeScript
/// <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>;
}