username
是一个联系人(Contact)的临时标识,分为四种情况
- 个人的
username
格式类似@ahjad31242ad...
- 群聊的
username
的格式类似@@ahjad31242ad...
- 公众号的
username
格式与个人相同,但VerifyFlag & 8 != 0
- 特殊帐号,例如
filehelper
(文件传输助手),weixin
(微信团队)等
- 好友给自己发送消息
收到的消息中,msg.from_.username
为好友的username
,msg.to.username
为自己的username
- 收到群聊中某个群员发送的消息
收到的消息中,msg.from_.username
为群聊的username
,msg.to.username
为自己的username
,msg.chatroom_sender.username
为发送消息的群员的username
- 自己给好友发送消息 会收到回显消息,一般需要过滤此消息
- 自己在群聊中发送消息 会收到回显消息,一般需要过滤此消息
目前支持以下消息的发送
send_msg
:发送文本消息send_file
:发送文件,可以提供文件路径,也可以传入一个file like的对象send_image
:发送图片,可以提供文件路径,也可以传入一个file like的对象send_video
:发送视频,可以提供文件路径,也可以传入一个file like的对象revoke
: 撤回消息,需要提供发送的消息的message_id
获取的消息msg
的content
携带了消息的内容,支持以下消息,具体见Content
- TextContent(文本)
- ImageContent(图片)
- VideoContent(视频)
- VoiceContent(音频)
- AttachContent(文件)
- RevokeContent(撤回消息)
场景1: 已知msg.content
的类型
因为注册回调函数时已经指明了消息的类型,此时使用assert(isinstance(msg.content, TextContent))
,就能利用TextContent
类型声明提供的补全
场景2: 需要判断msg.content
的类型
使用if else判断类型即可,例如
if isinstance(msg.content, TextContent):
# 处理文本消息
elif isinstance(msg.content, ImageContent):
# 处理图片消息
# ...