影刀+python转发蝙蝠app消息,到企业微信

大致流程:使用影刀获取蝙蝠app消息,然后转发到本地。本地做过滤后,再转发到企业微信

python代码如下

需要替换你机器人的key

机器人key如何创建:

1.简历企业微信群

2.添加群机器人

3.复制群机器人key

详情参考企业

python 复制代码
import json
from flask import Flask, request, jsonify
import requests
import logging

app = Flask(__name__)

# ---------- 配置 ----------
# 企业微信机器人 Webhook 地址(请替换为您的实际 key)
WECOM_WEBHOOK = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=输入你机器人的key"

# 存储上一次接收到的消息(用集合存储,便于差集运算)
last_messages = []

# 日志配置
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')


# ---------- 企业微信推送 ----------
def send_to_wechat(new_items):
    """向企业微信推送新增消息列表"""
    if not new_items:
        return

    # 构造文本内容,每条消息换行
    content = "📢 检测到新增消息:\n" + "\n".join(f"- {item}" for item in new_items)
    payload = {
        "msgtype": "text",
        "text": {
            "content": content
        }
    }
    try:
        resp = requests.post(WECOM_WEBHOOK, json=payload, timeout=5)
        if resp.status_code == 200:
            logging.info("企业微信推送成功")
        else:
            logging.error(f"企业微信推送失败,状态码:{resp.status_code}, 响应:{resp.text}")
    except Exception as e:
        logging.error(f"企业微信推送异常:{e}")


def get_new_messages(old_list, new_list):
    """
        根据规则提取新列表的一个后缀。

        参数:
            old_list: 老列表
            new_list: 新列表

        返回:
            提取出的新列表(截取部分),如果没有满足条件的则返回空列表。
        """
    old_set = set(old_list)  # 提升查找效率

    # 1. 找到第一个不在 old_set 中的元素索引
    first_new_idx = -1
    for idx, item in enumerate(new_list):
        if item not in old_set:
            first_new_idx = idx
            break

    # 若没有新元素,返回空
    if first_new_idx == -1:
        return []

    # 2. 检查该元素是否包含 '*'
    if '*' in str(new_list[first_new_idx]):  # 转为字符串以防元素不是字符串
        start_idx = first_new_idx
    else:
        # 向前找第一个包含 '*' 的元素
        start_idx = -1
        for j in range(first_new_idx - 1, -1, -1):
            if '*' in str(new_list[j]):
                start_idx = j
                break
        # 如果向前找不到,返回空
        if start_idx == -1:
            return []

    # 3. 截取从 start_idx 到末尾
    return new_list[start_idx:]


# ---------- Web 接口 ----------
@app.route('/update', methods=['POST'])
def update_messages():
    global last_messages
    data = request.get_json()

    current_msgs = data.get('messages', [])
    if len(current_msgs) > 0:
        new_msgs = get_new_messages(last_messages, current_msgs)
        if len(new_msgs) > 0:
            send_to_wechat(new_msgs)
        last_messages = current_msgs  # 更新历史
        return str(new_msgs)
    return jsonify("收到空消息")


# ---------- 启动服务 ----------
if __name__ == '__main__':
    # 监听 0.0.0.0:5000,可根据需要修改
    app.run(host='0.0.0.0', port=5000, debug=True)

影刀代码如下:

https://www.yingdao.com/client/appstore/topic/?tag=其他

邀请加入应用市场_影刀RPA

影刀中的python片段如下:

python 复制代码
import requests

def clean_data(data):
    result = []
    i = 0
    while i < len(data):
        # 如果下一个元素存在、以 '***' 结尾,且当前元素出现在下一个元素中,则跳过当前元素
        if (i + 1 < len(data) and 
            data[i+1].endswith('***') and 
            data[i] in data[i+1]):
            i += 1
            continue
        result.append(data[i])
        i += 1
    return result

# 原始数据
original = 消息列表

cleaned = clean_data(original)
response=requests.post(
    "http://localhost:5000/update",
    json={"messages": cleaned}
)
# data = response.json()