Package: nonebot-adapter-ntchat
Nonebot Adapter Ntchat简介nonebot2的ntchat适配器，配合ntchat-client可以实现与微信对接。安装方式使用包管理安装（推荐）pipinstallnonebot-adapter-ntchat使用源码（不推荐）gitclonehttps://github.com/JustUndertaker/adapter-ntchat.git将目录复制到site-packages下已实现连接方式反向wshttp post正向ws其他的感觉用处不大就...配置内容access_token = ""可不填，如填写需要与 ntchat-lient 一致。使用反向ws：默认配置使用反向ws，无需调整使用http post需要将driver类型设置为：ForwardDriver，同时配置http api地址。设置方法：文档示例：DRIVER=~httpx
ntchat_http_api_root="http://127.0.0.1:8000"注意事项由于微信不支持连续不同类型消息发出（比如图文消息，发出来会变成2条），需注意：matcher的默认发送支持str，MessageSegment，Message，但是发送Message会同时发送多条消息（每个MessageSegment都会发送一条消息）。已实现事件消息事件消息事件可以使用on_message、on_regex、on_keyword等检测命令的方式触发，但是部分消息如图片消息没有文本返回，所有message内容为空字符串，但是可以用on_message捕获该事件，如果想单独监听某类事件，可以在matcher.handle()内的event参数单独注入事件类型，比如：event: PictureMessageEvent来处理图片事件TextMessageEvent：文本消息事件QuoteMessageEvent：引用回复消息事件PictureMessageEvent：图片消息事件VoiceMessageEvent：语音消息事件CardMessageEvent：名片消息事件VideoMessageEvent：视频消息事件EmojiMessageEvent：表情消息事件LocationMessageEvent：位置消息事件FileMessageEvent：文件消息事件请求事件请求事件可以使用on_request进行捕获FriendAddRequestEvent：添加好友请求事件通知事件通知事件可以使用on_notice进行捕获RevokeNoticeEvent：撤回消息事件FriendAddNoticeEvent：添加好友通知事件InvitedRoomEvent：被邀请入群通知事件APP事件APP事件，事件type是app，可以通过on("app")来监听此类事件LinkMessageEvent：链接消息事件MiniAppMessageEvent：小程序消息事件WcpayMessageEvent：转账消息事件OtherAppMessageEvent：其他应用消息，字段wx_sub_type未知监听事件除了通用的on_message，on_notice等一般行为，想要监听单独某个事件时，可以使用on来注册一个matcher，此函数第一个参数为事件type，比如：fromnonebot.pluginimportonfromnonebot.adapter.ntchatimportWcpayMessageEventmatcher=on("app")# rule,permission等参数同样可以加入@matcher.handle()asyncdef_(event:WcpayMessageEvent):pass上述例子会监听所有的转账事件。发送图片使用MessageSegment.image发送图片（其他消息同理），图片与其他文件支持url、bytes、BytesIO、base64、Path发送，手动发送base64时需要在字符串前面加上"base64://"，下面是发送图片的例子.frombase64importb64encodefromioimportBytesIOfrompathlibimportPathfromnonebotimporton_regexfromnonebot.adapter.ntchatimportMessageSegment,TextMessageEventmatcher=on_regex(r"^测试$")@matcher.handle()asyncdef_(event:TextMessageEvent):url="https://v2.nonebot.dev/logo.png"image=MessageSegment.image(url)# 使用url构造awaitmatcher.send(image)image_path=Path("./1.png")image=MessageSegment.image(image_path)# 使用Path构造awaitmatcher.send(image)withopen(image_path,mode="rb")asf:data=f.read()image=MessageSegment.image(data)# 使用bytes构造awaitmatcher.send(image)bio=BytesIO(data)image=MessageSegment.image(bio)# 使用BytesIO构造awaitmatcher.send(image)base64_data=f"base64://{b64encode(data).decode()}"# 使用base64构造image=MessageSegment.image(base64_data)awaitmatcher.finish(image)Permission内置2个Permission，为：PRIVATE：匹配任意私聊消息类型事件GROUP：匹配任意群聊消息类型事件已实现apiget_login_info：获取登录信息get_self_info：获取自己个人信息跟登录信息类似get_contacts：获取联系人列表get_publics：获取关注公众号列表get_contact_detail：获取联系人详细信息search_contacts：根据wxid、微信号、昵称和备注模糊搜索联系人get_rooms：获取群列表get_room_detail：获取指定群详细信息get_room_members：获取群成员列表send_text：发送文本消息send_room_at_msg：发送群@消息，需要注意：假如文本为："test,你好{$@},你好{$@}.早上好"文本消息的content的内容中设置占位字符串 {$@},这些字符的位置就是最终的@符号所在的位置假设这两个被@的微信号的群昵称分别为aa,bb则实际发送的内容为 "test,你好@ aa,你好@ bb.早上好"(占位符被替换了)占位字符串的数量必须和at_list中的微信数量相等.send_card：发送名片send_link_card：发送链接卡片send_image：发送图片接口send_file：发送文件send_video：发送视频send_gif：发送gif图片send_xml：发送xmlsend_pat：发送拍一拍accept_friend_request：同意加好友请求create_room：创建群add_room_member：添加好友入群invite_room_member：邀请好友入群del_room_member：删除群成员modify_room_name：修改群名modify_room_notice：修改群公告add_room_friend：添加群成员为好友quit_room：退出群modify_friend_remark：修改好友备注