Skip to main content

a wechat adapter for nonebot2

Project description

Nonebot Adapter Ntchat

release License

简介

nonebot2的ntchat适配器,配合 ntchat-client 可以实现与微信对接。

安装方式

使用包管理安装(推荐)

pip install nonebot-adapter-ntchat

使用源码(不推荐)

git clone https://github.com/JustUndertaker/adapter-ntchat.git

将目录复制到site-packages

已实现连接方式

  • 反向ws
  • http 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_messageon_regexon_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,比如:

from nonebot.plugin import on
from nonebot.adapter.ntchat import WcpayMessageEvent

matcher = on("app") # rule,permission等参数同样可以加入

@matcher.handle()
async def _(event:WcpayMessageEvent):
    pass

上述例子会监听所有的转账事件。

发送图片

使用MessageSegment.image发送图片(其他消息同理),图片与其他文件支持url、bytes、BytesIO、base64、Path发送,手动发送base64时需要在字符串前面加上"base64://",下面是发送图片的例子.

from base64 import b64encode
from io import BytesIO
from pathlib import Path

from nonebot import on_regex
from nonebot.adapter.ntchat import MessageSegment,TextMessageEvent

matcher = on_regex(r"^测试$")

@matcher.handle()
async def _(event:TextMessageEvent):
    url = "https://v2.nonebot.dev/logo.png"
    image = MessageSegment.image(url)						# 使用url构造
    await matcher.send(image)

    image_path = Path("./1.png")
    image = MessageSegment.image(image_path)				# 使用Path构造
    await matcher.send(image)

    with open(image_path, mode="rb") as f:
        data = f.read()
    image = MessageSegment.image(data)						# 使用bytes构造
    await matcher.send(image)

    bio = BytesIO(data)
    image = MessageSegment.image(bio)						# 使用BytesIO构造
    await matcher.send(image)

    base64_data = f"base64://{b64encode(data).decode()}"	# 使用base64构造
    image = MessageSegment.image(base64_data)
    await matcher.finish(image)

Permission

内置2个Permission,为:

  • PRIVATE:匹配任意私聊消息类型事件
  • GROUP:匹配任意群聊消息类型事件

已实现api

  • get_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:发送xml
  • send_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:修改好友备注

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot-adapter-ntchat-0.3.5.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

nonebot_adapter_ntchat-0.3.5-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file nonebot-adapter-ntchat-0.3.5.tar.gz.

File metadata

File hashes

Hashes for nonebot-adapter-ntchat-0.3.5.tar.gz
Algorithm Hash digest
SHA256 52a19d9eeb71a534e5543f3804c5cb68997411f309d9b3c848f27f39de25301e
MD5 6d2e3be6b722d0fc89973964dec293cc
BLAKE2b-256 a686e86cc0e0c847755aa170ace8c5b0f9e444f2651528d7f0568e62c0054fba

See more details on using hashes here.

File details

Details for the file nonebot_adapter_ntchat-0.3.5-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_adapter_ntchat-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ee8851ac28b6463413066dc32ccae08f478df68c6b37e117d48c43698f5e5881
MD5 158e2f280e2c9ac26c826f198024e00a
BLAKE2b-256 7c8f3c07368b18b810c0104ee0bbf82856a445c97795566b6f90b3243acd1f53

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page