-->
当前位置:首页 > DayDayUp > 正文内容

WeChatFerry实现简单的微信机器人

Luz2天前DayDayUp52

项目里需要使用微信推送告警数据,使用PyOfficeRobot能实现但是发送消息速度太慢了,找到一个项目
https://github.com/lich0821/WeChatFerry/ 使用HOOK的方式发送消息,简单做了个服务试了一下

from wcferry import Wcf, WxMsg
from flask import Flask, request
wcf = Wcf()
wcf_rooms = []
for contact in wcf.get_contacts():
    if contact['wxid'].endswith("chatroom"):
        wcf_rooms.append(contact)

def get_chatroom_roomid(wcf_rooms: list, room_name: str):
    for room in wcf_rooms:
        if room['name'] == room_name:
            return room['wxid']
    return None

room_id1 = get_chatroom_roomid(wcf_rooms=wcf_rooms, room_name="预警测试")
print('当前登录用户信息:',wcf.get_user_info())
print('预警测试群id:',room_id1)
app = Flask(__name__)
def send_message(message,room_id=room_id1):
    wcf.send_text(message,room_id)

def send_picture(temp_path,room_id=room_id1):
    wcf.send_image(temp_path,room_id)

@app.route('/asduih24t45dty4j9874ghssendmessage', methods=['GET', 'POST'])
def handle_message():
    message = request.args.get('message') if request.method == 'GET' else request.form.get('message')
    if message:
        send_message(message)
        return "Message sent", 200
    else:
        return "No message provided", 400
@app.route('/asduih24t45dty4j9874ghssendmessage2', methods=['GET', 'POST'])
def handle_message_and_picture():
    # 获取 message 参数
    message = request.args.get('message') if request.method == 'GET' else request.form.get('message')

    # 获取 picture 参数(假设 picture 是一个文件上传字段)
    picture = request.files.get('picture') if request.method == 'POST' else None

    if not message:
        return "No message provided", 400  # 如果未提供 message,返回 400 错误

    # 发送消息
    send_message(message)
    # 如果提供了图片,则保存并发送
    if picture:
        # 将图片保存到临时路径
        temp_path = r'C:\0.jpg'  # 确保路径存在或调整为合适的路径
        picture.save(temp_path)
        send_picture(temp_path)
        return "Message and picture sent", 200
    else:
        return "Message sent, but no picture provided", 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=38888)

还挺好用,图片也正常,关键是可以实现调接口秒发了

附函数表备用

函数名称 描述 返回类型
cleanup 关闭连接 回收资源 None
keep_running 阻塞进程(让 RPC 一直维持连接)
is_receiving_msg 是否已启动接收消息功能 bool
get_qrcode 获取登录二维码(已经登录则返回空字符串) str
is_login 检查登录状态 bool
get_self_wxid 获取登录账号的 wxid str
get_msg_types 获取所有消息类型 Dict
get_contacts 获取所有联系人 List[Dict]
get_friends 获取所有好友 List[Dict]
get_dbs 获取数据库 List[str]
get_tables 获取某数据库下的表 List[Dict]
get_user_info 获取登录账号个人信息 Dict
get_audio_msg 取语音消息并转成 MP3 str
send_text 发送文本消息(可 @) int
downloadfile 下载文件 str
processpath 处理路径(如果是网络路径则下载文件) str
send_image 发送图片(非线程安全) int
send_file 发送文件(非线程安全) int
send_xml 发送 XML int
send_emotion 发送表情 int
send_rich_text 发送富文本消息 int
send_pat_msg 拍一拍群友 int
forward_msg 转发消息 int
get_msg 从消息队列中获取消息 WxMsg
enable_receiving_msg 允许接收消息 bool
enable_recv_msg 允许接收消息(旧接口) bool
disable_recv_msg 停止接收消息 bool
query_sql 执行 SQL 查询 List[Dict]
accept_new_friend 接受好友申请 int
refresh_pyq 刷新朋友圈 int
download_attach 下载附件 int
get_info_by_wxid 通过 wxid 查询微信号昵称等信息 dict
revoke_msg 撤回消息 int
decrypt_image 解密图片 str
get_ocr_result 获取 OCR 结果 str
download_image 下载图片 str
add_chatroom_members 添加群成员 int
del_chatroom_members 删除群成员 int
invite_chatroom_members 邀请群成员 int
返回列表

上一篇:ubuntu的几个磁盘操作

没有最新的文章了...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。