感谢群友 胖胖无私提供~
# coding:utf-8
import json
from typing import Optional
from pydantic import BaseModel
from fastapi.responses import Response
"""
消息事件 事件说明
EventGroupMsg 群消息事件
EventFriendMsg 私聊消息事件
EventReceivedTransfer 收到转账事件
EventScanCashMoney 面对面收款
EventFriendVerify 好友请求事件
EventContactsChange 朋友变动事件
EventGroupMemberAdd 群成员增加事件
EventGroupMemberDecrease 群成员减少事件(群成员退出)
EventSysMsg 系统消息事件
"""
"""
事件发送 发送说明
SendTextMsg 发送文本消息
SendImageMsg 发送图片消息
SendVideoMsg 发送视频消息
SendFileMsg 发送文件消息
SendGroupMsgAndAt 发送群消息并艾特
SendEmojiMsg 发送动态表情
SendLinkMsg 发送分享链接
SendMusicMsg 发送音乐分享
GetRobotName 取登录账号昵称
GetRobotHeadimgurl 取登录账号头像
GetLoggedAccountList 取登录账号列表
GetFriendList 取好友列表
GetGroupList 取群聊列表
GetGroupMemberList 取群成员列表
GetGroupMemberInfo 取群成员详细
AcceptTransfer 接收好友转账
AgreeGroupInvite 同意群聊邀请
AgreeFriendVerify 同意好友请求
EditFriendNote 修改好友备注
DeleteFriend 删除好友
GetappInfo 取插件信息
GetAppDir 取应用目录
AddAppLogs 添加日志
ReloadApp 重载插件
RemoveGroupMember 踢出群成员
EditGroupName 修改群名称
EditGroupNotice 修改群公告
BuildNewGroup 建立新群
QuitGroup 退出群聊
InviteInGroup 邀请加入群聊
"""
class AcceptEvent(BaseModel):
"""
消息接收模型
"""
# 注:在私聊事件下,from_wxid和final_from_wxid一致
# 消息事件
event: Optional[str] = None
# 机器人微信ID
robot_wxid: Optional[str] = None
# 机器人昵称
robot_name: Optional[str] = None
# 消息类型 1/文本消息 3/图片消息 34/语音消息 42/名片消息 43/视频 47/动态表情 48/地理位置 49/分享链接 2000/转账 2001/红包 2002/小程序 2003/群邀请
type: Optional[int] = None
# 微信群ID
from_wxid: Optional[str] = None
# 群名称
from_name: Optional[str] = None
# 发信人
final_from_wxid: Optional[str] = None
# 发信人昵称
final_from_name: Optional[str] = None
# 接收消息的群/人
to_wxid: Optional[str] = None
# 消息内容
msg: Optional[str] = None
# 金额
money: Optional[float] = None
def SendTextMsg(robot_wxid, to_wxid, msg):
"""
发送普通文本消息
:param robot_wxid:机器人ID
:param to_wxid:消息接收ID 人/群
:param msg:文本消息
:return:发送消息
"""
data = dict()
data["event"] = "SendTextMsg"
data["robot_wxid"] = robot_wxid
data["to_wxid"] = to_wxid
data["msg"] = str(msg)
data = json.dumps(data)
return Response(data)
def SendImageMsg(robot_wxid, to_wxid, path, name):
"""
发送图片消息
:param robot_wxid: 机器人ID
:param to_wxid: 消息接收ID 人/群
:param path: 图片URL路径
:param name: 图片唯一名称
:return: 发送图片消息
"""
data = dict()
msg = dict()
data["event"] = "SendImageMsg"
data["robot_wxid"] = robot_wxid
data["to_wxid"] = to_wxid
msg["url"] = path
msg['name'] = name
data['msg'] = msg
data = json.dumps(data)
return Response(data)
def SendVideoMsg(robot_wxid, to_wxid, path, name):
"""
发送视频消息
:param robot_wxid: 机器人ID
:param to_wxid: 消息接收ID 人/群
:param path: 视频URL路径
:param name: 视频唯一名称
:return: 发送视频消息
"""
data = dict()
msg = dict()
data["event"] = "SendVideoMsg"
data["robot_wxid"] = robot_wxid
data["to_wxid"] = to_wxid
msg["url"] = path
msg['name'] = name
data['msg'] = msg
data = json.dumps(data)
return Response(data)
def SendFileMsg(robot_wxid, to_wxid, path, name):
"""
发送文件消息
:param robot_wxid: 机器人ID
:param to_wxid: 消息接收ID 人/群
:param path: 文件URL路径
:param name: 文件唯一名称
:return: 发送文件频消息
"""
data = dict()
msg = dict()
data["event"] = "SendFileMsg"
data["robot_wxid"] = robot_wxid
data["to_wxid"] = to_wxid
msg['name'] = name
msg["url"] = path
data['msg'] = msg
data = json.dumps(data)
return Response(data)
'robot_wxid, group_wxid, member_wxid, member_name, msg'
def SendGroupMsgAndAt(robot_wxid, to_wxid, at_id, at_name, msg):
"""
发送@消息
:param robot_wxid:机器人ID
:param to_wxid:消息接收的群ID
:param at_id:需要@的人ID
:param at_name:需要@人的名称
:param msg:文本消息
:return:发送消息
"""
data = dict()
data["event"] = "SendGroupMsgAndAt"
data["robot_wxid"] = robot_wxid
data["group_wxid"] = to_wxid
data['member_wxid'] = at_id
data['member_name'] = at_name
data['msg'] = msg
data = json.dumps(data)
return Response(data)
def SendEmojiMsg(robot_wxid, to_wxid, path, name):
"""
发送动态表情
:param robot_wxid: 机器人ID
:param to_wxid: 接收消息ID 人/群
:param path: URL路径
:param name: 文件唯一名称
:return: 发送消息
"""
data = dict()
msg = dict()
data["event"] = "SendEmojiMsg"
data["robot_wxid"] = robot_wxid
data["to_wxid"] = to_wxid
msg['name'] = name
msg["url"] = path
data['msg'] = msg
data = json.dumps(data)
return Response(data)
def SendLinkMsg(robot_wxid, to_wxid, title, text, target_url, pic_url=' ', icon_url=' '):
"""
发送链接卡片消息
:param robot_wxid: 机器人ID
:param to_wxid: 接收消息ID 人/群
:param title: 链接卡片标题
:param text: 链接卡片文本
:param target_url: 链接卡片URL
:param pic_url:
:param icon_url: 链接卡片图标
:return: 发送链接卡片消息
"""
data = dict()
msg = dict()
data["event"] = "SendLinkMsg"
data["robot_wxid"] = robot_wxid
data["to_wxid"] = to_wxid
msg['title'] = title
msg['text'] = text
msg['target_url'] = target_url
msg['pic_url'] = pic_url
msg['icon_url'] = icon_url
data['msg'] = msg
data = json.dumps(data)
return Response(data)