精华内容
下载资源
问答
  • Python 企业微信机器人 发送微信消息 2021/02/20 Server酱是一个很好用的微信消息推送工具,常用于服务器异常报警、向微信发送消息。 其实企业微信本身就支持机器人,可以使用API发送文本、图片、音频、视频、文件等...

    Python 企业微信机器人 发送微信消息

    2021/02/20

    Server酱是一个很好用的微信消息推送工具,常用于服务器异常报警、向微信发送消息。

    其实企业微信本身就支持机器人,可以使用API发送文本、图片、音频、视频、文件等消息,实现在个人微信中接收消息,无需下载企业微信客户端。

    1. 注册企业微信
      企业微信目前是支持个人注册的,即使没有企业,还是可以使用。
      前往 https://work.weixin.qq.com/ 使用个人微信注册企业微信。进入管理后台,我的企业 > 企业信息,可以看到企业ID。
    2. 创建机器人
      进入管理后台,应用管理 > 自建 > 创建应用,创建一个机器人,得到AgentId和Secret。
    3. 我的企业 > 微信插件 > 邀请关注,用个人微信扫码关注,即可使用个人微信接收消息。
    4. Python代码
    import requests
    import json
    
    
    class wechatbot:
        '''
        企业微信机器人
        '''
    
        def __init__(self, corpid, agentid, secret):
            '''
            corpid: 企业ID
            agentid: 机器人的AgentId
            secret: 机器人的Secret
            '''
            self.corpid = corpid
            self.agentid = agentid
            self.secret = secret
    
        def get_access_token(self):
            get_token_api = f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={self.secret}'
            r = requests.get(get_token_api).json()
            print(r)
            if r["errcode"] == 0:
                self.access_token = r["access_token"]
    
        def upload_file(self, file_type, file_path, file_name):
            upload_api = f'https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={self.access_token}&type={file_type}'
            files = {'media': (file_name, open(file_path, "rb"), '', {})}
    
            # headers = {'Content-Type': 'multipart/form-data'}
            r = requests.post(upload_api,  files=files).json()
            print(r)
            if r["errcode"] == 0:
                return r["media_id"]
    
        def send(self, msgtype, content):
            send_message_api = f'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={self.access_token}'
    
            message = {
                "agentid": self.agentid,
                "touser": "@all",
                "msgtype": msgtype,
                msgtype: content
            }
    
            headers = {'Content-Type': 'application/json'}
            r = requests.post(send_message_api, data=json.dumps(message),
                              headers=headers).json()
            print(r)
            return r["errcode"]
    
    
    if __name__ == "__main__":
        corpid = 'wxxxxxxxxxxxxxxxxx'
        agentid = 1000002
        secret = 'SCXXXXXXXXXXXXXXXXXXXXXXXXXX'
    
        bot = wechatbot(corpid, agentid, secret)
        bot.get_access_token()
        #bot.access_token = '4awAnq'
    
        text = {
            "content": 'test - send from vscode'
        }
    
        news = {
            "articles": [
                {
                    "title": "article 1",
                    "description": "description 1",
                    "url": "https://www.example.com",
                    "picurl": "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
                },
                {
                    "title": "article 2",
                    "description": "description 2",
                    "url": "https://www.example.com",
                    "picurl": "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
                }
            ]
        }
    
        image_id = bot.upload_file('image', './test/src/123+123.png', '123+123.png')
        # image_id = '3Ru536yMS8NKoZ5lC5QBB3GyHktVWEAy8yuEoyJhXXXX'
        image = {
            "media_id": image_id
        }
    
        voice_id = bot.upload_file('voice', './test/src/hello.amr', 'hello.amr')
        # voice_id = '3XOId6MOk_gW1X48x0L0ZXfhHclK72DzUe1ZL-R1XXXX'
        voice = {
            "media_id": voice_id
        }
    
        video_id = bot.upload_file('video', './test/src/test_video.mp4', 'video.mp4')
        # video_id = '37NqJGlKZU3vcvijSO1XoJwmJ9kfyt4Pw3hhG4w2HvbkoVMPco_38BVOg9F0LXXXX'
        video = {
            "media_id": video_id,
            "title": "Title",
            "description": "Description"
        }
    
        file_id = bot.upload_file('file', './test/test.pdf', 'test.pdf')
        # file_id = '3MAsA-EWw0g1iAhlWghUzbHOUp_n_nS1iLYS1uEzXXXX'
        f = {
            "media_id": file_id
        }
    
        textcard = {
            "title": "通知",
            "description": '''
                <div class=\"gray\">gray</div>
                <div class=\"normal\">normal</div>
                <div class=\"highlight\">highlight</div>''',
            "url": "https://www.example.com",
            "btntxt": "More"
        }
    
        markdown = {
            "content": """# Title
                `code`
                **bold**
                > <font color=\"info\">info</font>
                <font color=\"warning\">warning</font>
                <font color=\"comment\">comment</font>
                [link](https://www.example.com)
                """
        }
    
        taskcard = {
            "title": "Title",
            "description": "Description<br>description",
            "url": "https://www.example.com",
            "task_id": "taskid002",
            "btn": [
                {
                    "key": "key1",
                    "name": "name1",
                    "replace_name": "replace_name1",
                    "color": "red",
                    "is_bold": True
                },
                {
                    "key": "key2",
                    "name": "name2",
                    "replace_name": "replace_name2"
                }
            ]
        }
    
        bot.send("text", text)
        bot.send("news", news)
        bot.send("image", image)
        bot.send("voice", voice)
        bot.send("video", video)
        bot.send("file", f)
        bot.send("textcard", textcard)
        # bot.send("markdown", markdown) # 个人微信不支持
        # bot.send("taskcard", taskcard) # 个人微信不支持
        
    
    1. 根据企业ID、机器人的AgentId和Secret获取access_token
    2. 调用发送消息API发送指定格式的数据
    3. 文本型消息可以直接发送,各种文件需要先上传获取media_id
    4. access_token的有效期一般为2小时,media_id的有效期是3天
    

    参考

    1. 企业微信开发文档

    ----------------8<----------------[ end ]----------------8<----------------

    展开全文
  • 主要介绍了python实现微信机器人: 登录微信消息接收、自动回复功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 2.接收人必须是你的微信好友 代码如下 # 使用微信接口给微信好友发送消息, import itchat # 自动登录方法,hotReload=True可以缓存,不用每次都登录,但是第一次执行时会出现一个二维码,需要手机微信扫码...

    前提条件

    1.能够上外网

    2.接收人必须是你的微信好友

    代码如下

    # 使用微信接口给微信好友发送消息,
    import itchat
    
    # 自动登录方法,hotReload=True可以缓存,不用每次都登录,但是第一次执行时会出现一个二维码,需要手机微信扫码登录
    itchat.auto_login(hotReload=True)
    
    # 搜索好友,search_friends("xxx"),其中"xxx"为好友昵称,备注或微信号不行
    userfinfo = itchat.search_friends("智能群管家014")   # "智能群管家014"为好友昵称
    
    # print(userfinfo),获取userinfo中的UserName参数
    userid = userfinfo[0]["UserName"]   # 获取用户id
    
    # 调用微信接口发送消息
    itchat.send("hello dear", userid)  # 通过用户id发送信息
    #
    itchat.send_msg(msg='hello dear', toUserName=userid)  # 发送纯文本信息

     

    转载于:https://www.cnblogs.com/golinux/p/10897723.html

    展开全文
  • 主要介绍了Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息的方法,涉及Python微信企业号回调模式消息响应机制相关操作技巧,需要的朋友可以参考下
  • 对PC微信客户端进行Hook逆向分析,Hook到微信消息,然后与Python程序进行交互,在Python程序中实现微信消息自动回复的逻辑。 开源代码和使用教程链接如下: PC微信Hook逆向程序:Hook到微信消息,然后与Python程序...

    问题描述:

    有时候,我们需要设置微信根据接收到的消息来进行自动回复。现在,大多数的方法是基于itchat模块来实现的,itchat模块是基于网页版微信接口来实现的,但是现在很多微信都被禁止登陆网页版微信了,所以大部分微信现在使用不了itchat模块。

    解决方法:

    对PC微信客户端进行Hook逆向分析,Hook到微信消息,然后与Python程序进行交互,在Python程序中实现微信消息自动回复的逻辑。
    开源代码和使用教程链接如下:
    PC微信Hook逆向程序:Hook到微信消息,然后与Python程序进行交互。

    实现效果如下:

    用另外一个微信给登录的电脑微信发送好友消息或者群消息,运行结果如下:

    • 显示接收到的微信消息: 在这里插入图片描述
    • 好友消息自动回复:
      在这里插入图片描述
    • 微信群消息自动回复:
      在这里插入图片描述
    展开全文
  • 安装wxpypip install -U wxpy登录微信# 导入模块 from wxpy import * # 初始化机器人,扫码登陆 bot = Bot()运行以上代码,会生成一个二维码,通过图片扫描二维码即可登录微信。如果是在服务器上运行代码,无法显示...


    安装wxpy

    pip install -U wxpy

    登录微信

    # 导入模块
    from wxpy import *
    # 初始化机器人,扫码登陆
    bot = Bot()

    运行以上代码,会生成一个二维码,通过图片扫描二维码即可登录微信。

    如果是在服务器上运行代码,无法显示图片的时候, 可以选择通过终端显示二维码图片, 只需要将代码改成:

    from wxpy import *
    bot = Bot(console_qr=True)

    运行的效果如下:


    当然,为了安全,这个二维码做了模糊处理

    如果你认为每次都需要扫描二维码很麻烦,可以启用缓存,来保存自己的登录状态:

    bot = Bot(console_qr=True, cache_path=True)

    发送消息

    首先我们尝试给自己和文件传输助手发消息:

    # 给机器人自己发送消息
    bot.self.send('Hello World!')
    # 给文件传输助手发送消息
    bot.file_helper.send('Hello World!')

    自动回复

    可通过 预先注册 的方式,实现消息的自动处理。

    “预先注册” 是指
    预先将特定聊天对象的特定类型消息,注册到对应的处理函数,以实现自动回复等功能。

    注册消息

    提示

    每当收到新消息时,将根据注册规则找到匹配条件的执行函数。
    并将 消息对象 作为唯一参数传入该函数。

    将 Bot.register() 作为函数的装饰器,即可完成注册。

    # 获取所有类型的消息(好友消息、群聊、公众号,不包括任何自己发送的消息)
    # 并将获得的消息打印到控制台
    @bot.register()
    def print_others(msg):
        print(msg)

    同时wxpy也可以给注册消息的类型加上限制,

    # 回复 my_friend 发送的消息
    @bot.register(my_friend)
    def reply_my_friend(msg):
        return 'received: {} ({})'.format(msg.text, msg.type)
    
    # 回复发送给自己的消息,可以使用这个方法来进行测试机器人而不影响到他人
    @bot.register(bot.self, except_self=False)
    def reply_self(msg):
        return 'received: {} ({})'.format(msg.text, msg.type)
    
    # 打印出所有群聊中@自己的文本消息,并自动回复相同内容
    # 这条注册消息是我们构建群聊机器人的基础
    @bot.register(Group, TEXT)
    def print_group_msg(msg):
        if msg.is_at:
            print(msg)
            msg.reply(meg.text)

    我们设置一个自动回复所有消息的功能:

    @bot.register()
    def reply_self(msg):
        # return 'received: {} ({})'.format(msg.text, msg.type)
        msg.reply(u'好的呀')

    效果如下:



    展开全文
  • 《使用Python进行微信公众号开发》系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器。 效果体验 扫码“是雯子吖”公众号进行体验 配置自己的公众号后台进行体验 想要体验效果的小伙伴可以将微信...
  • 最近在使用企业微信的用户交互消息功能时,遇到了企业微信端会三次转发给我用户的消息;...这里就是原因,我的程序里面接收消息后解析成功,并没有通知企业微信端我接受消息成功,如果没有通知它(企...
  • python web微信应用(五) 自动下载微信接收的 图片/语音/视频 这篇文章使用 webwx 模块,将实现监测微信撤回的消息 一、webwx 模块介绍 webwx 模块支持的功能有:二维码扫码登录、缓存自动登录、联系人/群组/公众号...
  • 查看原文
  • Python实现接收企业微信接收消息

    千次阅读 2020-02-19 17:02:25
    接收企业微信消息,首先得开启验证信息API(GET请求)以及接收消息服务(POST请求)。 GET的请求参考: 企业微信验证接口API 第一部分解析POST请求: 并且解析msg_signature, time, nonce和消息体数据Body...
  • Python自制微信机器人:群发消息、自动接收好友

    千次阅读 热门讨论 2019-03-19 21:59:41
    好友加我微信后,每次都要手动备注。 这些使用客户端工具都无法解决,因为客户端工具的一个特点就是native,需要你直接操作电脑,不方便。 所以就想着自己写一个干脆,经过一周漫长的开发(主要...
  • 说明:此代码用于接收手机微信端发送的消息 #-*-coding:utf-8-*- fromflaskimportFlask,request fromWXBizMsgCryptimportWXBizMsgCrypt importxml.etree.cElementTreeasET importsys app=Flask(__name__) @app....
  • 主要是讲一下思路:先是app实现定位,当微信发送消息时,消息微信服务器转发到开发者服务器然后用socket发送指定消息来通知app,I need your location,app接收消息之后再发送给开发服务器(app 开service实现后台全程...
  • 这篇文章主要介绍了Python实现微信机器人的方法,非常不错具有一定的参考借鉴价值需要的朋友可 参考下 最近在学python的过程中无意间发现一个python库 wxpy其可 实现让微信自动接收处理消息并进行回复的一 ...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 171
精华内容 68
关键字:

python接收微信消息

python 订阅