基于go-cqhttp的ts开发框架。
首先开启go-cqhttp的websocket,登录到一个qq。
npm i cqhttp-ts
import linkServer, { ModTypes, PostTypes, useMod } from 'cqhttp-ts';
linkServer(8080); //需要开启websocket
useMod.useMessageMod([friendMessageModTest([2389451262]),xxx(),xxx().....]);
//类似这样来加载更多的mod
import { CqApi,ModTypes,PostTypes} from 'cqhttp-ts';
export default (whiteList: number[] | false): ModTypes.GroupMessageModType => {
const handler = async (msg: PostTypes.GroupMessageType) => {
const res = await CqApi.setEssenceMsgApi({
message_id: msg.message_id,
});//注意 api始终需要传入一个参数对象,即使内容为空。
console.log(res);//得到相应的结果。如果该条消息是精华等错误,则返回 调用api失败
console.log(modMonitor.messageModStore)//得到当前所有正在运行的消息mod列表,可以在任何地方使用
};
return {
type: 'groupMessageMod',
name: '把消息设置为精华消息',
whiteList, //如果whiteList是false,则对所有消息都响应。有些mod没有设置白名单的字段。
handler,
};
};
- 每一个事件都有一个对应的对象类型来与之对应。例如群消息mod的类型为ModTypes.GroupMessageModType.
- 原则上,每一种事件的监听都要在useMod.useMessageMod([])等函数中参数的数组中传入一个ModTypes中类型的对象。 注意即使没有mod也要传入一个空数组。
- modType中实现的handler函数会接收一个参数,参数名称和事件对应。比如群消息事件对应的消息类型为 PostTypes.GroupMessageType。
- 如果是message类型的mod,则msg上有reply函数可以快速回复。
- 消息类型mod中会有一个白名单whiteList的字段。如果传入false给whiteList,则表示取消白名单。否则接受一个number数组。
- 例如需要使用 获取群信息的API,则调用CqApi.getGroupInfoApi({})
- 在文档中有一个终结点,api的命名基本是以终结点转化为小驼峰式命名的。
- 这个函数规定必须传入一个参数对象,即使参数为空。 参数内容和文档的参数对应,或者查看ts类型。
- 这个api是返回的是一个promise。得到的结果是响应数据。
- 在每个mod对象中都有一个name属性,这里就是运用到name属性的地方。
- 在modMonitor对象中包含了所有的mod类型。modMonitor.messageModStore就可以获得message类型的mod。
- 通过name来区分mod。
系统导出了类似于useMessageMod和useNoticeMod形式的函数。以群消息为例
- 在任何地方使用useMod.useMessageMod()函数
- 这个函数需要提供一个对应的mod类型的对象,你可以编写一个函数来实现对应的函数类型来返回这个对象。(FriendMessageModType)。
- FriendMessageModType要求强制传入一个number数组来实现白名单(具体是否实现了白名单,根据modType中的字段来查看)。还需要实现handler来作为处理的入口,实现name来进行统一管理,实现type来作为内部识别的标志
- 编写handler函数。通过调用框架导出的api来实现主动操作,或者调用msg上绑定的reply快速回复消息。
在ModTypes中调用以下所有函数 具体用处见 cqhttp帮助中心
messageMod
- FriendMessageModType 朋友消息拓展模块
- GroupMessageModType 群消息拓展模块
noticeMod
- ClientStatusUpdateModType
- FriendAddModType
- FriendRecallModType
- FriendPokeModType
- GroupAdminUpdateModType
- GroupBanModType
- GroupCardUpdateModType
- GroupEssenceModType
- GroupHonorUpdateModType
- GroupLuckyKingModType
- GroupMemberDecreaseModType
- GroupMemberIncreaseModType
- GroupRecallModType
- GroupPokeModType
- GroupUploadFileModType
- ReceiveOfflineFileModType
requestMod
- friendAddRequestModType
- groupAddRequestModType
CqApi是一个异步函数,可以获取到响应结果。 在CqApi中调用下列函数
- canSendImageApi,
- canSendRecordApi,
- checkUrlSafelyApi,
- cleanCacheApiExpect,
- createGroupFileFolderApi,
- deleteEssenceMsgApi,
- deleteFriendApi,
- deleteGroupFileApi,
- deleteGroupFolderApi,
- deleteMessageApi,
- downloadFileApi,
- getCookiesApiExpect,
- getCredentialsApiExpect,
- getCSRFTokenApiExpect,
- getEssenceMsgListApi,
- GetForwardMessageApi,
- getFriendListApi,
- getGroupAtAllRemainApi,
- getGroupFileSystemInfoApi,
- getGroupFilesByFolderApi,
- getGroupFileUrlApi,
- getGroupHonorInfoApi,
- getGroupInfoApi,
- getGroupListApi,
- getGroupMemberListApi,
- getGroupMessageHistoryApi,
- getGroupNoticeApi,
- getGroupRootFilesApi,
- getGroupSystemMsgApi,
- getImageApi,
- getLoginInfoApi,
- getMessageApi,
- getModelShowApi,
- getOnlineClientsApi,
- getRecordApiExpect,
- getStatusApi,
- getStrangerInfoApi,
- getUnidirectionalFriendListApi,
- getVersionInfoApi,
- markMessageAsReadApi,
- ocrImageApi,
- reloadEventFilterApi,
- sendGroupForwardMessageApi,
- sendGroupMessageApi,
- sendGroupNoticeApi,
- sendGroupSignApi,
- sendMessageApi,
- sendPrivateMessageApi,
- setEssenceMsgApi,
- setFriendAddRequestApi,
- setGroupAddRequestApi,
- setGroupAdminApi,
- setGroupAnonymousApi,
- setGroupAnonymousBanApi,
- setGroupBanApi,
- setGroupCardApi,
- setGroupLeaveApi,
- setGroupNameApi,
- setGroupPortraitApi,
- setGroupSpecialTitleApi,
- setGroupWholeBanApi,
- setModelShowApi,
- setQQProfileApi,
- setRestartApi,
- uploadGroupFileApi,
- uploadPrivateFileApi,