声明文件有什么用
方便开发,提升开发效率,有了autMan的ES5插件内联函数的TS声明文件可以让你的IDE变得更加智能,获得ES5插件编写的智能提示。
目前的进度
目前的声明文件只写了插件编写规则 - autMan 中关于内联函数部分的声明,但是部分函数(比如importJS之类)只声明了函数,返回值都写了any(具体的我不会了)。
演示截图
在jetbrains全家桶中,将文件放到项目下任意目录,都可以正确识别,在VS Code 中,需要将文件放到项目根目录或在编写插件时文件处于打开状态。
文件下载
论坛不支持上传该类型文件,所以使用蓝奏云。
https://hunyan.lanzout.com/icLcZ1on2j8d
下载后解压,将autMan.d.ts放到插件开发的相关目录即可。
// autMan.d.ts
type callParam = 'name' | 'version' | 'machineId' | 'uuid' | 'md5' | 'timeFormat' | 'qq_bots' | 'unixTimeFormat';
type callMethod<T extends callParam> = {
"name":
/**
* 获取当前autMan机器人昵称
* @returns 当前autMan机器人昵称
* */
() => string;
"version":
/**
* 获取当前autMan版本
* @returns 当前autMan版本
*/
() => string;
"machineId":
/**
* 获取当前机器码
* @returns 当前机器码
*/
() => string;
"uuid":
/**
* 生成随机uuid
* @returns 随机uuid
*/
() => string;
"md5":
/**
* 对字符串计算md5
* @returns 字符串的md5值
*/
(str: string) => string;
"timeFormat":
/**
* 按格式输出当前系统时间
* @returns 按格式输出当前系统时间
* @example ("yyyy-MM-dd hh:mm:ss")
*/
(format: string) => string;
"qq_bots":
/**
* 获取当前对接到autMan的所有QQ机器人id集合
* @returns 当前对接到autMan的所有QQ机器人id集合
*/
() => string[];
"unixTimeFormat":
/**
* 将unixtime按格式输出
* @returns 格式化后的字符串
* @example (second,nanosecond,"yyyy-MM-dd hh:mm:ss")
*/
(second: number, nanosecond: number, format: string) => string;
}[T];
interface AutRequestHeaders {
"User-Agent"?: string;
"Content-Type"?: string;
[propName: string]: string | undefined;
}
interface RequestOptions {
useproxy?: boolean,//是否使用代理
proxyAddr?: string//代理地址,支持http\sock5代理。不设置则根据useproxy情况使用系统代理,设置则使用自定义的代理。
url: string,//地址
headers: AutRequestHeaders,
method: "post" | "get",//网络请求方法get,post,put,delete,head,patch
dataType?: string,//数据类型json(json数据类型)、location(跳转页)
body?: any,
formData?: object,
fileData?: object,
timeOut?: number //单位为毫秒ms,也可以都小写timeout
}
interface PushOptions {
imType: string;
groupCode: string;
userID: string;
content: string;
}
interface CronItem {
id?: number;
cron: string;
cmd: string;
toSelf: boolean;
toOthers?: string;
}
interface CronResult {
iD: number;
cron: string;
lastRunningTime: string;
nextRunningTime: string;
cmd: string;
cronEntityId: number;
toSelf: boolean;
disguiseImtype: string;
disguiseGroup: string;
disguiseUser: string;
toOthers: string;
memo: string;
}
interface ReplyRequest {
url: string;
method: string;
body: string;
headers: [];
location: boolean;
responseType: string;
get: string;
regex: string;
template: string;
disappear: boolean;
}
interface ReplyItem {
id?: number;
rules: string[];
content: string;
}
interface ReplyResult {
iD: number;
isOn: boolean;
rules: string[];
imtypes: string[];
groups: string[];
type: string;
content: string;
request: ReplyRequest;
replace: []
}
interface payJSON {
time: string;
type: string;
fromWxid: string;
fromName: string;
money: number;
}
type PayData = payJSON | "timeout";
interface IMGD {
success: boolean; //下载成功与否
local: string; // 图片本地存储位置
url: string; // 图片在autMan的网络地址
base64: string; // 图片的base64字符串
}
interface DrawOptions {
background?: { // 背景
color: {
r: number;
g: number;
b: number;
a: number;
}, // 背景底色,默认为白色
image: string; // 背景图,支持本地相对路径、网络url、base64编码字符串图片(非必要)
};
icon?: { // 行图标
images: string[]; // 字符串数组,图标类型支持path本地相对路径、url网络图版、base64编码图片
};
text: { // 行文字
color?: { //文字颜色,r红基色,g绿基色,b蓝基色,a透明度,非必需,默认为黑色
r: number;
g: number;
b: number;
a: number;
};
size?: number; //文字大小,非必需,默认为48
texts: string; //文字内容,必需的。
};
head?: { // 图头
image: string; //图片头(非必要)
};
foot?: { // 图尾
image: string; //图片尾(非必要)
};
}
interface emailSetOptions {
host: string;
port: number;
user: string;
pwd: string;
}
interface emailSendOptions {
addresses: string[];
subject: string;
body: string;
}
/**
*
* @param {callParam} param 参数
* @example version=call("name")()//获取当前autMan机器人昵称
* version=call("version")()//获取当前系统版本
* machineId=call("machineId")()//获取当前机器码
* qqbots=call("qq_bots")()//获取当前对接到autMan的所有QQ机器人id集合
* uuid=call("uuid")()//获取一个随机uuid
* md5=call("md5")(str)//获取str的md5值
* time=call("timeFormat")("yyyy-MM-dd hh:mm:ss")//按格式输出当前系统时间
* time=call("unixTimeFormat")(second,nanosecond,"yyyy-MM-dd hh:mm:ss")//将unixtime按格式输出
*/
declare function call<T extends callParam>(param: T): callMethod<T>;
/**
* 检查是否可调用某函数,返回布尔值
* @param param 想调用的函数
*/
declare function cancall(param: string): boolean;
/**
* 检查autMan咖啡码是否有效
*/
declare function coffee(): boolean;
/**
*
* @returns 根据配置中dataType返回响应的body
*/
declare function request(RequestOptions: RequestOptions): any;
/**
* @description 网络请求函数
* @param RequestOptions 请求配置
* @param cb 回调函数,用于网络请求处理
*/
declare function request(RequestOptions: RequestOptions, cb: (error: any, response: any, header: any, body: any) => void): void;
/**
* 信息推送函数
* @param pushOptions 推送配置
* @example push(
{
imType: 'qq',
groupCode: 'xxxxxxxx'或者chatID: 'xxxxxxxx',
userID: 'xxxxxxx',
content: 'xxxxxxxx',
}
)
*/
declare function push(pushOptions: PushOptions): void;
/**
* 定时指令或定时消息
*/
declare namespace cron {
/**
* 获取所有定时
*/
function get(): CronResult[]
/**
* 获取序号为id的定时指令,id为number类型
* @param id
*/
function get(id: number): CronResult
/**
* 添加定时指令
* @param item 定时
* @returns 返回定时指令的id
* @example cron.add({//添加定时指令
cron: "0/5 * * * *", //定时
cmd:'export varient="abc"', //内容
toSelf:true, //定时指令自处理,如果是定时发送消息,此处为false
toOthers:"qqgroup:123,wxgroup:456,tggroup:789,qqindiv:321,wxindiv:654,tgindiv:987" //定时消息,如果是定时自处理指令,此处为空
})
*/
function add(item: CronItem): number
/**
* 更新定时指令
* @param item 定时
* @returns 返回更新的状态(貌似只会返回true)
* @example cron.update({//更新定时指令
id:3,
cron: "0/5 * * * *",
cmd:'export varient="abc"',
toSelf:true,
toOthers:"qqgroup:123,wxgroup:456,tggroup:789,qqindiv:321,wxindiv:654,tgindiv:987"
})
*/
function update(item: CronItem): boolean
/**
* 删除定时指令 -- 此函数应为delete,由于delete是JavaScript的保留字,故此处暂写为deleteI,使用时请自行修改
* @param id 定时指令序号id
* @returns 返回删除状态(貌似只会返回true)
* @example cron.delete(id)//删除定时指令
*/
function deleteI(id: number): void;
}
/**
* 知识库
*/
declare namespace reply {
/**
* 获取所有知识库
* @returns 返回所有的知识规则
*/
function get(): ReplyResult[];
/**
* 获取某个知识规则
* @param id 知识规则的id
* @returns 返回id对应的知识规则
*/
function get(id: number): ReplyResult[];
/**
* 添加知识库规则
* @param item 知识库规则
* @returns 返回知识id
* @example reply.add({
rules:["test1","test2"]
content:"reply test"
})
*/
function add(item: ReplyItem): number;
/**
* 更新知识库规则
* @param item 知识库规则
* @returns 知识库更新状态(貌似只会返回true)
* @example reply.update({
id:3
rules:["test1","test2"]
content:"reply test"
})
*/
function update(item: ReplyItem): boolean;
/**
* 删除某条知识 -- 此函数应为delete,由于delete是JavaScript的保留字,故此处暂写为deleteI,使用时请自行修改为delete
* @param id 知识库规则的id
* @returns 知识删除状态(貌似只会返回true)
*/
function deleteI(id: number): boolean;
}
/**
* 等待微信支付(支持微信赞赏码、微信收款码、微信转账,暂不支持微信红包)
* @param timeOut 超时时间,单位毫秒
* @param exitCode 退出,等待支付期间用户输入会主动退出等待支付
* @returns 返回支付的信息
*/
declare function waitPay(timeOut: number, exitCode?: string): PayData
/**
* 删除用户信息,不知道干啥的
*/
declare function Delete(): void
/**
* 生成二维码
* @param content 要生成二维码的内容
* @param size 二维码图片大小单位像素
*/
declare function encodeQR(content: string, size: number): string;
/**
* 将url二维码解析出内容
* @param url 二维码URL
*/
declare function decodeQR(url: string): string;
/**
* 下载到默认路径,url支持http路径,支持base64://路径,支持data:image
* @param url 图片URL
*/
declare function imageDownload(url: string): IMGD;
/**
* 下载到指定目录
* @param url 图片url
* @param path 下载目录
*/
declare function imageDownload(url: string, path: string): IMGD;
/**
* 画清单图
* @param DrawOptions 画图的配置项
*/
declare function drawList(DrawOptions: DrawOptions): IMGD;
/**
* 输出当前系统时间,格式默认"yyyy-MM-dd hh:mm:ss"
*/
declare function timeFmt(): string;
/**
* 输出时间,格式自定义,yyyy为年,MM为月份,dd为日期,hh为12小时制,HH为24小时制,mm为分,ss为秒,如:"yyyy-MM-dd hh:mm:ss"
* @param format 输出格式
*/
declare function timeFmt(format: string): string;
/**
* second为unix时间戳,即从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数
* @param format 输出格式
* @param second 秒级时间戳
*/
declare function timeFmt(format: string, second: number): string;
/**
*
* @param format 输出格式
* @param second 秒级时间戳
* @param nanosecond 纳秒,取值范围[0-999999999]
*/
declare function timeFmt(format: string, second: number, nanosecond: number): string;
/**
* 按照format格式输入unix时间(不知道干啥的,没试过)
* @param sec 秒级时间戳
* @param nsec 纳秒
* @param format 格式
*/
declare function unixTimeFmt(sec: number, nsec: number, format: string): void;
/**
* 获取当前会话用户ID
*/
declare function GetUserID(): string | number;
/**
* 获取当前会话用户发的信息内容
*/
declare function GetContent(): string;
/**
* 获取当前会话群ID
*/
declare function GetChatID(): string | number;
/**
* 获取当前会话的渠道,返回qq,wx等
*/
declare function GetImType(): string;
/**
* 获取当前会话的渠道,返回qq,wx等
*/
declare function ImType(): string;
/**
* 获取当前会话用户名
*/
declare function GetUsername(): string;
/**
* 获取当前会话群名称
*/
declare function GetChatname(): string;
/**
* 获取当前信息ID
*/
declare function GetMessageID(): string | number;
/**
* 通过信息id获取最近的消息
* @param id 信息ID
*/
declare function GetMessageByID(id: number | string): string;
/**
* 撤回信息,参数为信息id
* @param messageID 信息ID
*/
declare function RecallMessage(messageID: number | string): void;
/**
* 将信息发送给管理员
* @param content 发送的信息内容
*/
declare function notifyMasters(content: string): void;
/**
* 表示等待用户输入
* @param waitTime 等待用户输入时间
*/
declare function input(waitTime: number): string;
/**
* 表示等待用户输入,等待时间后撤回
* @param waitTime 等待用户输入时间
* @param recallTime 撤回用户输入的时间
*/
declare function input(waitTime: number, recallTime: number): string;
/**
* 表示等待群内任意用户的输入
* @param waitTime 等待用户输入时间
* @param recallTime 撤回用户输入的时间
* @param group group表示开放任意群成员输入
*/
declare function input(waitTime: number, recallTime: number, group: "group"): string;
/**
* 将信息送入对应的处理通道进行处理(将消息发回给autMan,相当于产生一个新消息)
* @param content 信息
*/
declare function breakIn(content: string): void;
/**
* 设置邮件服务
* @param emailSetOptions 邮件配置
*/
declare function EmailSet(emailSetOptions: emailSetOptions): void;
/**
* 发送邮件
* @param emailSendOptions 邮件发送配置
*/
declare function EmailSend(emailSendOptions: emailSendOptions): void;
/**
* 调试相关
* @param content 输出到日志的内容
*/
declare function Debug(content: any): void;
declare function Info(content: any): void;
declare function Warn(content: any): void;
// @ts-ignore
declare function Error(content: any): void;
/**
* 踢群
* @param userId 用户id
* @param reject_add_request 是否拒绝再次加群请求
*/
declare function GroupKick(userId: string | number, reject_add_request: boolean): void;
/**
* 禁言
* @param userId 用户id
* @param duration 市场
*/
declare function GroupBan(userId: string | number, duration: string | number): void;
/**
* 群禁言
* @param isBan 是否禁言
*/
declare function GroupWholeBan(isBan: boolean): void;
/**
* 邀请加群
* @param userId 用户id
* @param chatId 群id
*/
declare function GroupInviteIn(userId: string | number, chatId: string | number): void;
/**
* 当前仅支持go-cqhttp群内发公告
* @param content 公告内容
*/
declare function GroupNoticeSend(content: string): void;
/**
* 睡眠一段时间 单位毫秒
* @param waitTime 睡眠时间
*/
declare function sleep(waitTime: number): void;
/**
* 返回当前会话是否为管理员
*/
declare function isAdmin(): boolean;
/**
* 存储key,value
* @param key key
* @param value value
*/
declare function set(key: string, value: string): void;
/**
* 获取匹配规则里规定的第几个匹配值
* @param integer
*/
declare function param(integer: number): string;
/**
* 获取otto桶key的值
* @param key key
*/
declare function get(key: string): string;
/**
* 获取bucket桶的key值
* @param bucket 桶名称
* @param key key
*/
declare function bucketGet(bucket: string, key: string): string;
/**
* 返回otto桶内所有的key值
*/
declare function bucketKeys(): string[];
/**
* 返回bucket桶内所有的key集合
* @param bucket 桶
*/
declare function bucketKeys(bucket: string): string[];
/**
* 返回bucket桶内所有值为value的key的集合
* @param bucket 桶
* @param value value
*/
declare function bucketKeys(bucket: string, value: string): string[];
/**
* 获取桶内所有的key
* @param bucket 桶
*/
declare function bucketAllKeys(bucket: string): string[];
/**
* 设置bucket桶的key的值为value
* @param bucket 桶
* @param key key
* @param value value
*/
declare function bucketSet(bucket: string, key: string, value: string): void;
/**
* 删除bucket桶的key值
* @param bucket 桶
* @param key key
*/
declare function bucketDel(bucket: string, key: string): void;
/**
* 给会话用户发送信息
* @param text 信息的内容
*/
declare function sendText(text: string): void;
/**
* 将图片url转换为CQ码格式
* @param url 图片url
*/
declare function image(url: string): string;
/**
* 转链,当信息中含有京东、淘宝、拼多多短链时,会自动转换成自己的短链。前提是“返利排错”正常
* @param msg 信息内容
*/
declare function spread(msg:string):string;
/**
* 发送图片,参数为
* 1.绝对路径,例如 file:///C:\\Users\Alice\Pictures\1.png,格式使用 file URI
* 2.网络 URL,例如 https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png
* 3.Base64 编码,例如 base64://iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAAKElEQVQ4EWPk5+RmIBcwkasRpG9UM4mhNxpgowFGMARGEwnBIEJVAAAdBgBNAZf+QAAAAABJRU5ErkJggg==
* @param url 图片url
*/
declare function sendImage(url:string):void;
/**
* 发送视频
* @param url 视频url
*/
declare function sendVideo(url:string):void;
/**
* 当前会话的Sender模块
*/
declare namespace Sender{
}
/**
* 控制台输出信息模块
*/
declare namespace fmt{
}
/**
* 字符串模块
*/
declare namespace strings{
}
/**
* 引入nodejs模块(需要主机安装nodejs)
* @param mname node模块名称
*/
declare function require(mname: string): any;
/**
* 读取文件
* @param filepath 文件路径
*/
declare function importFs(filepath:string):any;
/**
* 引入js文件
* @param filepath 文件路径
*/
declare function importJs(filepath:string):any;
/**
* 引入js文件夹
* @param dir 文件夹路径
*/
declare function importDir(dir:string):any;