2401_84109401 2024-04-20 10:11 采纳率: 0%
浏览 230
已结题

自动转发微信群信息到另外一个微信群

编写一个python程序,用于阿里云服务器,要求:
1、自动转发微信群A的张三发的含有“某些字眼”的信息到B群(只转发张三发的信息);
2、可以持久运行,不能有间断。

  • 写回答

19条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-20 10:11
    关注

    引自免费微信小程序:皆我百晓生

    为实现您所描述的需求,即在阿里云服务器上运行一个Python程序,自动转发微信群A中张三发布的含特定字眼的消息至微信群B,您可以按照以下步骤进行操作:

    一、准备环境

    1. 获取微信API接口:由于微信官方并未提供官方API供第三方程序直接访问微信群聊内容,因此需要借助第三方库如itchat(已停止维护)或Wechaty(基于Puppeteer,适用于个人账户)来实现微信的自动化操作。然而,这些方法可能违反微信用户协议,并且稳定性较差。若需长期稳定运行,建议使用企业微信(或类似支持API接口的服务)替代个人微信,以合法合规地获取和处理消息数据。

    2. 创建企业微信应用:在企业微信管理后台创建一个自建应用,为其赋予“消息接收”和“消息发送”权限。获取到AppID、AppSecret以及自建应用的唯一标识(AgentID),并确保张三和目标群组已加入企业微信。

    3. 获取永久授权码:通过企业微信提供的OAuth2流程,引导张三授权您的应用访问其消息数据。完成后,您将获得一个永久授权码(permanent_code),用于后续接口调用。

    二、编写Python程序

    以下是一个基于企业微信API接口的Python程序示例,使用requests库进行HTTP请求:

    import requests
    import time
    
    # 企业微信API相关参数
    CORP_ID = 'your_corp_id'
    APP_SECRET = 'your_app_secret'
    AGENT_ID = 'your_agent_id'
    PERMANENT_CODE = 'your_permanent_code'
    
    # 目标群聊ID
    TARGET_GROUP_CHAT_ID = 'your_target_group_chat_id'
    
    # 张三的企业微信UserID
    ZHANG_SAN_USER_ID = 'zhang_san_user_id'
    
    # 检测消息中是否包含的特定字眼列表
    SPECIFIC_KEYWORDS = ['keyword1', 'keyword2']
    
    def get_access_token():
        url = f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={CORP_ID}&corpsecret={APP_SECRET}'
        response = requests.get(url)
        data = response.json()
        return data['access_token']
    
    def get_latest_msgs(access_token, userid):
        url = f'https://qyapi.weixin.qq.com/cgi-bin/user/message/list?access_token={access_token}&userid={userid}&agentid={AGENT_ID}&limit=1'
        response = requests.get(url)
        data = response.json()
        return data['message_list'][0] if data['message_list'] else None
    
    def forward_msg_to_group(access_token, group_chat_id, msg_data):
        url = f'https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token={access_token}'
        payload = {
            "chatid": group_chat_id,
            "msgtype": "text",
            "text": {
                "content": msg_data['content']
            }
        }
        requests.post(url, json=payload)
    
    def main():
        while True:
            access_token = get_access_token()
            
            latest_msg = get_latest_msgs(access_token, ZHANG_SAN_USER_ID)
            if latest_msg and any(keyword in latest_msg['content'] for keyword in SPECIFIC_KEYWORDS):
                forward_msg_to_group(access_token, TARGET_GROUP_CHAT_ID, latest_msg)
    
            # 暂定每分钟检查一次新消息
            time.sleep(60)
    
    if __name__ == "__main__":
        main()
    

    三、部署到阿里云服务器

    1. 安装Python环境:在您的阿里云服务器上安装Python及相关依赖(如requests库)。

    2. 配置定时任务:将上述Python程序作为定时任务运行,确保其持续监控张三的消息。具体操作取决于您使用的Linux发行版,一般可使用cron服务进行设置。

    注意事项

    • 请确保替换上述代码中的占位符(如your_corp_id等)为实际值。
    • 由于企业微信API存在访问频率限制,实际使用时可能需要增加错误处理及重试机制。
    • 本示例仅转发文本消息,如需转发其他类型消息(如图片、文件等),需相应调整forward_msg_to_group函数中的payload。

    替代方案

    若不便使用企业微信,可考虑使用第三方微信机器人平台(如Server酱、酷Q等),它们通常提供更为稳定的接口供开发者接入。但请注意遵守相关平台的使用协议,避免滥用导致账号被封禁。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月22日
  • 创建了问题 4月20日