精华内容
下载资源
问答
  • 主要介绍了用python自制微信机器人,定时发送天气预报,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 如果想给里增加一个天气查询的功能,要如何做到呢? 首先要先有天气数据的信息来源,通过对这些信息的处理变成友好的数据格式再发到微信里。 天气接口: $str = file_get_contents('...

    如果想给群里增加一个天气查询的功能,要如何做到呢?

    首先要先有天气数据的信息来源,通过对这些信息的处理变成友好的数据格式再发到微信群里。

    天气接口:这段代码可以放在服务器上,我这里文件名是getWeather.php,为了安全请自请加token类的验证。

    $str =  file_get_contents('http://wthrcdn.etouch.cn/weather_mini?city='.$_GET["city"]);
    $result = gzdecode($str);   //解压
    echo $result;

    返回查询城市的JSON格式的结果。

     

    根据模板格式数据替换,

        CWeb html;
    	SENDINFO si;
    	CString strRet, strPostData;
    
    	strUrl.Format(_T("http://www.youserver.com/getWeather.php?city=%"), strCityName);
    	
    	if (html.Get(strUrl, strPostData, strRet, si))
    	{
    		CStringA strAJson = _W2A(strRet);
    		Json::Reader reader;
    		Json::Value root;
    		if (!reader.parse(strAJson.GetBuffer(strAJson.GetLength()), root))
    		{
    			CString strInfo;
    			strInfo.Format(_T("数据格式有误"));			
    			WriteLog(m_hWnd, strInfo);
    			return;
    		}
    
        ...
        }

    就为群提供了一个天气查询的功能了。通过口令就能查到天气,是不是很方便呢?

    附上发送文本的CALL:

    #define WxSendMessage 0x2FA7F0
    void SendTextMessage(wchar_t* wxid, wchar_t* msg)
    {
    	//拿到发送消息的call的地址
    	DWORD dwSendCallAddr = (DWORD)GetModuleHandle(TEXT("WeChatWin.dll")) + WxSendMessage;
    
    	//组装微信ID/群ID的结构体
    	wxMsg id = { 0 };
    	id.pMsg = wxid;
    	id.msgLen = wcslen(wxid);
    	id.buffLen = wcslen(wxid) * 2;
    
    	//消息内容
    	wxMsg text = { 0 };
    	text.pMsg = msg;
    	text.msgLen = wcslen(msg);
    	text.buffLen = wcslen(msg) * 2;
    
    	//取出微信ID和消息的地址
    	char* pWxid = (char*)&id.pMsg;
    	char* pWxmsg = (char*)&text.pMsg;
    
    	char buff[0x81C] = { 0 };
    
    	//调用微信发送消息call
    	__asm {
    		mov edx, pWxid;
    		push 0x1;
    		push 0;
    		mov ebx, pWxmsg;
    		push ebx;
    		lea ecx, buff;
    		call dwSendCallAddr;
    		add esp, 0xC;
    	}
    }

     

    展开全文
  • 概述 ...由此,我们得到启发,是不是可以创建一个线上故障,如果监控到故障,就发送一条报告到该内。相比邮件,这种提醒方式更及时,并且不受电脑的限制,只需要在手机上把企业微信的通知打开,随

    概述

    很多公司内部都会使用企业微信进行通讯,恰恰企业微信又对我们开放了API,我们可以很方便的使用它提供的API实现一些自动化的功能。

    比如在我们公司内部,定加班餐都需要在美餐页面点,并且只能是当天且在16:30以前。忙的时候,可能有人就会忘记,于是有人起了一个16:00的定时任务,通过企业微信的API,定时在群里发送订餐提醒。
    在这里插入图片描述

    由此,我们得到启发,是不是可以创建一个线上故障群,如果监控到故障,就发送一条报告到该群内。相比邮件,这种提醒方式更及时,并且不受电脑的限制,只需要在手机上把企业微信的通知打开,随时随地都能收到预警,快速处理,再也不用担心从用户发现到通知到我们已经过去了几个小时的这种问题了。
    在这里插入图片描述

    企业微信群机器人API简介

    PS:如果找不到了,可以通过:搜素引擎 -> 企业微信API -> 企业内部开发 -> 客户端API -> 群机器人 -> 群机器人配置说明

    在开始前,建议看一下官方的说明文档:https://work.weixin.qq.com/api/doc/90000/90136/91770,大概包含如下内容:

    • 如何使用群机器人
    • 消息类型及数据格式
      • 文本类型
      • markdown类型
      • 图片类型
      • 图文类型
      • 文件类型
    • 消息发送频率限制
    • 文件上传接口

    看完之后,我们大概知道群机器人能干什么了,那怎么创建群机器人呢?

    创建群机器人

    1. 先创建一个群聊,不能包含微信的联系人。

    2. 点击群详情->群机器人->点击
      在这里插入图片描述

    3. 点击添加机器人
      在这里插入图片描述

    4. 取个名字
      在这里插入图片描述

    5. 完成,复制Webhook
      在这里插入图片描述

    至此,群机器人创建成功。Webhook地址非常重要,切勿泄漏或公开,否则别人可以通过这个地方给群里推送一些垃圾信息,造成不好的影响。

    测试群机器人

    通过上述步骤完成机器人的创建后,我们可以打开postman工具进行API测试。

    选择POST请求,粘贴机器人的Webhook地址,在Body界面选择raw->Json,把以下内容粘贴进去:

    {
        "msgtype": "text",
        "text": {
            "content": "广州今日天气:29度,大部分多云,降雨概率:60%"
        }
    }
    

    在这里插入图片描述

    点击Send,应该就会在群里收到一条机器人发过来的消息了。

    下图是作者markdown格式发的消息,相比text更醒目,关于markdown格式可以参考官方的API手册
    在这里插入图片描述
    当然还可以指定@某人,只需要在“mentioned_mobile_list”中写上对应的手机号即可。注意当msgType=markdown的时候,@功能是不生效的哦。

    PS:机器人创建后,还可以添加到其他群聊中。

    如果要删除机器人,点击机器人详情的“…”按钮即可。

    展开全文
  • 企业微信机器人

    万次阅读 2019-08-25 16:06:29
    在企业微信机器人接口对接天气API使用过程中,遇到 过一个问题,就是对于嵌套json数据如何进行嵌套的 一:"msgtype": "text", curl '...

    在企业微信群聊机器人接口对接天气API使用过程中,遇到 过一个问题,就是对于嵌套json数据如何进行嵌套的

    一:"msgtype": "text",

    1. curl 'http://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=633a31f6-7f9c-4bc4-97a0-0ec1eefa5898' \
    2. -H 'Content-Type: application/json' \
    3. -d '
    4. {
    5. "msgtype": "text",
    6. "text": {
    7. "content": "hello world"
    8. }
    9. }'
    10. 这是第一种情况:

    //请求天气API

          String weather = HttpRequest.sendGet("https://www.tianqiapi.com/api/", "version=v1");
          JSONObject text = new JSONObject();
          //获得天气的json格式的字符串,将字符串转json对象
          JSONObject weatherJson = JSONObject.parseObject(weather);

    //将刚获得的json对象中的data键值
          JSONArray ja = weatherJson.getJSONArray("data");

    //获得data数据组中第一组数据(一共有5天的天气数据,只取了第一天的数据存入weatherJson1 )
          JSONObject weatherJson1 = JSONObject.parseObject(ja.get(0).toString());
          System.out.println(weatherJson1.get("air_tips"));


          text.put("content", weatherJson.get("update_time").toString()+ "数据,东宇鸿翔气象发布:\r\n潍坊:  " + weatherJson1.get("wea")+"\r\n"+ "最高温度:" + weatherJson1.get("tem1") + "\r\n"+ "最低温度:" + weatherJson1.get("tem2") + "\r\n" + "\r\n空气指数:"+ "<font color=\\\"warning\\\">"+weatherJson1.get("air")+"</font>" + "\r\n空气质量:"+"<font color=\\\"warning\\\">"+weatherJson1.get("air_level")+"</font>\r\n" + weatherJson1.get("air_tips"));

    //定义一新jsonobject
          JSONObject msg = new JSONObject();

    //定义格式
          msg.put("msgtype", "markdown");

    放入json值
          msg.put("markdown", text);

    对接的企业微信机器人URL
          String url = "企业微信机器人webhook地址";
          String result = InterfaceUtils.sendPost(url,msg.toJSONString(),"");
          System.out.println(result);

     

    二、"msgtype": "news",类型

    1. {
    2. "msgtype": "news",
    3. "news": {
    4. "articles" : [
    5. {
    6. "title" : "中秋节礼品领取",
    7. "description" : "今年中秋节公司有豪礼相送",
    8. "url" : "URL",
    9. "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"
    10. }
    11. ]
    12. }
    13.  
    14. }

    String weather = HttpRequest.sendGet("https://www.tianqiapi.com/api/", "version=v1");        
          String result;
          //将字符串转json
          JSONObject weatherJson = JSONObject.parseObject(weather);
          Object jaArticle = weatherJson.get("data");
          System.out.println(jaArticle);
          JSONArray jsonSonData = weatherJson.getJSONArray("data");
          System.out.println("L38:" + jsonSonData.get(0));
    //      JSONObject weatherJson1 = JSONObject.parseObject(jsonSonData.get(0).toString());
          String data = weatherJson.get("data").toString().substring(1);
          data  = data.substring(0,data.length()-1);
          //第二部分中上面这段数据可能没用,下面对象直接赋死值,是为了测试在连接企业微信机器人json值的使用格式,请见谅,如果有需要,可以联系我,将上面代码改为天气数据QQ:58925561
          
          
         
          Article article = new Article();//定义对象
          article.setTitle("abc");//给对象赋值
          article.setDescription("abc");
          article.setUrl("https://mp.weixin.qq.com/s/Lca666663Vhib_Fbn8sXDk1qCig?company_from66=a42b8d663ced2a11e88d5b52540005f4367767865");
          article.setPicurl("http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png");
          List<Article> listArticles = new ArrayList<Article>();//定义泛型
          
          listArticles.add(article);//List数组赋值,可以add多个,亲测有效
          JSONObject msg = new JSONObject();//大json
          JSONObject msg1 = new JSONObject();//小json
          /**
           *如果将put第二个参数toString(),不能将其转为JSON字符串。
           * msg1.put("articles", listArticles.toString());toString()会在json对应位置多加一地引号,导致下面报错
           * 则
           * "article size out of limit, hint: [1566700084_6_35eebe8628c6d0b3066d76116fff3a17]"}
           */

          msg1.put("articles", listArticles);
          msg.put("msgtype", "news");//格式
          msg.put("news", msg1);
    //      msg.put("news", jsArticle);
          System.out.println( "*********77:" + msg.toJSONString());
          System.out.println("*********************");
          String url = "企业微信机器人webhook地址";
          result = InterfaceUtils.sendPost(url,msg.toJSONString(),"");
          System.out.println(result);

    展开全文
  • #文字标记(markdown)机器人 def tony_bot_txt_markdown(boturl,provice,city,cityname): weather="下雨" temperature="20度" headers={"Content-Type":"text/plain"} city=get_weather(provice,city) data={ ...

    方法1:获取页面HTML内容,再通过正则表达式来获取需要的内容

    #!/usr/bin/env python
    #coding=gbk
    import requests
    import urllib.request ,sys
    import re
    import time
    
    def get_weather(provice,city):
        url="http://qq.ip138.com/weather/"+provice+'/'+city+'.htm'
        wetherhtml=urllib.request.urlopen(url)
        result=wetherhtml.read().decode('gb2312')
        f=open('weather.txt','wb')
        f.write(result.encode('gb2312'))
        f.close()
    
        regex1='>(\d*-\d*-\d*.+?)<'
        date=re.findall(regex1,result)
    
        regex2='alt="(.+?)" />'
        weather=re.findall(regex2,result)
    
        regex3='<td>(\d{1,2}.+)</td>'
        temperature=re.findall(regex3,result)
    
        length=len(date)
        t="未来5天天气预报:\n"
        msg=''
        for i in range(length):
            msg= msg+date[i]+" 天气:"+weather[i]+", 温度:<font color=\"warning\">"+temperature[i]+"</font>\n";
        return(t+msg)
    
    
    #文字标记(markdown)机器人
    def tony_bot_txt_markdown(boturl,provice,city,cityname):
        weather="下雨"
        temperature="20度"
        headers={"Content-Type":"text/plain"}
        city=get_weather(provice,city)
        data={
            "msgtype": "markdown",
     
            "markdown": {
    
            "content": cityname+city
            }
    }
        res=requests.post(url=boturl,headers=headers,json=data)
    
    #测试
    tony_bot_txt_markdown('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx','hunan','zhuzhou','株洲')
    
    

    方法2:如果内容是json等规范格式的情况

    {"data":{"yesterday":{"date":"17日星期日","high":"高温 11℃","fx":"西北风","low":"低温 -4℃","fl":"<![CDATA[5-6级]]>","type":"多云"},"city":"北京","forecast":[{"date":"18日星期一","high":"高温 4℃","fengli":"<![CDATA[3-4级]]>","low":"低温 -5℃","fengxiang":"西北风","type":"晴"},{"date":"19日星期二","high":"高温 6℃","fengli":"<![CDATA[<3级]]>","low":"低温 -4℃","fengxiang":"西南风","type":"晴"},{"date":"20日星期三","high":"高温 7℃","fengli":"<![CDATA[<3级]]>","low":"低温 -3℃","fengxiang":"北风","type":"晴"},{"date":"21日星期四","high":"高温 9℃","fengli":"<![CDATA[<3级]]>","low":"低温 -1℃","fengxiang":"北风","type":"晴"},{"date":"22日星期五","high":"高温 10℃","fengli":"<![CDATA[<3级]]>","low":"低温 0℃","fengxiang":"东南风","type":"多云"}],"ganmao":"将有一次强降温过程,天气寒冷,且风力较强,极易发生感冒,请特别注意增加衣服保暖防寒。","wendu":"-1"},"status":1000,"desc":"OK"}

    #coding=gbk
    import urllib.request
    import gzip
    import json
    
    def get_weather():
        city_name = input('请输入城市名称:')
        url = 'http://wthrcdn.etouch.cn/weather_mini?city='+urllib.parse.quote(city_name)
        w_data = urllib.request.urlopen(url).read()
        w_data = gzip.decompress(w_data).decode('utf-8')
        w_dict = json.loads(w_data)
        return w_dict
    
    wdata=get_weather();
    if(wdata.get('desc')=='OK'):
        cityName=wdata.get('data').get('city')
        wendu=wdata.get('data').get('wendu')+"℃"
        tips=wdata.get('data').get('ganmao')
        forecast=wdata.get('data').get('forecast')
        today_date=forecast[0].get('date')
        today_high=forecast[0].get('high')
        today_fengli=forecast[0].get('fengli')
        print(today_fengli.replace('<![CDATA[','').replace(']]>',''))#<![CDATA[<3级]]>转成<3级
        isDisplay=input('是否显示未来4天的天气情况:')
        if(isDisplay=='是' or isDisplay=='Y' or isDisplay=='y'):
            for i in range(1,5):
                print(forecast[i].get('date')+','+forecast[i].get('high')+','+forecast[i].get('low')) 
    else:
        print('输入的城市名称有错误!')
    

    方法2的简化版

    #coding=gbk
    import json
    import requests
    
    whtml = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=株洲')
    wdata = json.loads(whtml.text)
    
    print(wdata['data'])
    print("\n")
    for i in range(len(wdata['data']['forecast'])):
        print(wdata['data']['forecast'][i]['type'])
    
    

    pip install -i https://pypi.douban.com/simple pyinstaller
    pyinstaller -F -w -i xxx.ico yy.py
    在dist目录下面生成exe文件

    展开全文
  • 使用企业微信办公时,我们可以在群聊中添加群机器人,自动推送消息,回答客户提问,那么企业微信群机器人怎么添加呢?因为企业微信内部群机器人和外部群机器人的添加方式有一点区别,下面我们分开来讲述。内部群...
  • 在项目的 settings -> Secrets 中添加 bot_api 字段,内容为企业群机器人webhook接口地址 可自行更改.github/workflows/*.yml配置文件,比如修改任务的执行时间 彩云天气配置 在项目settings->Secrets 中,添加: ...
  • 企业微信添加机器人播报天气

    千次阅读 2020-09-05 01:55:15
    ==前面这篇已经写了定时提醒吃饭的了,但是定时吃饭每天都是固定的那些字,所以后面又想着搞个天气播报,增加点花样,有意思嘛,活着开心点???? 想知道天气,怎么办呢?首先想的是去爬某个网站的天气,别人已经实时...
  • 最近想着做一个微信机器人,主要想要实现能够每天定时推送天气预报或励志语录,励志语录要每天有自动更新,定时或当有好友回复时,能够随机推送不同的内容。于是开始了分析思路。博主是采用了多线程群发,因为微信对...
  • 2019年7月企业微信上线了群机器人功能。企业微信机器人功能是指在内部群里可以添加机器人成员,机器人可以定时或者按照一定的规则给群里发信息,@群成员等。本身企业微信是一个高频使用的办公工具,再加上推出的...
  • golang 钉钉群机器人

    千次阅读 2020-05-09 18:07:53
    目录1. 钉钉SDK2. 代码示例3. 消息类型3.1 text类型3.2 link...群机器人 2. 代码示例 package main import ( "io/ioutil" "github.com/CodyGuo/dingtalk" "github.com/CodyGuo/dingtalk/pkg/robot" "github.c
  • 企业微信API&群机器人配置

    千次阅读 2021-03-12 10:04:36
    我们公司用的企业微信,会把相关开发或者运维拉到一个群里,然后配置上一个群机器人,这样的话就可以用企业微信API来配置群机器人接收消息,把一些日常的服务器或者日志告警发送到对应的群。 以下介绍两种常用的消息...
  • 社群运营,为什么需要微信群机器人助手?一般,在日常工作中需要针对大批量的微信群进行管理,用户数量非常庞大,单靠个人是很难运营管理的,所以需要微信群机器人助手来协助工作。 而且,无论社群是什么属性,都适合...
  • Unity-微信群机器人

    2021-03-23 17:10:24
    微信群机器人,在微信群上每天早晨根据天气提醒大家穿衣或带伞, 每隔一段时间提醒喝水,结合百度ai的API做一点geek的事
  • 因为要用到天气信息,在网上找了很多免费的api,不是有调用限制要不就是返回的结果不满意,最终看了百度的比较合适,决定用爬虫抓下来。 在百度上搜索"长春天气",将浏览器的地址复制,作为请求地址 因为我是吉林...
  • springboot实现企业微信机器人自动按时播报天气 第一步搭建项目。。。这个没有什么好说的 配置: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient...
  • 钉钉群机器人开发接口

    千次阅读 2020-04-08 17:08:06
    钉钉群机器人开发接口 获取自定义机器人webhook 步骤一,在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群。如果需要的话,可以为机器人设置一个头像。点击“完成添加”,完成后会...
  • 本文介绍如何使用Python3程序通过钉钉群机器人发送消息到群中。 钉钉群机器人有三种安全设置,本文使用加签方式,理论上兼容其他两种。 #!/usr/bin/python3 # -*- coding: utf-8 -*- #钉钉群机器人 Python3版 ...
  • 通过Python脚本结合钉钉机器人,定时向钉钉推送天气预报 #!/usr/bin/python # -*- coding: utf-8 -*- # Author: aiker@gdedu.ml # My blog http://m51cto.51cto.blog.com import requests import re import ...
  • 钉钉群机器人开发

    2019-12-03 15:44:56
    钉钉群机器人定义 群机器人是钉钉群的高级扩展功能。群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。目前,大部分机器人在添加后,还需要进行Webhook配置,才可正常使用(配置说明详见操作流程...
  • 文章目录1、背景2、企业微信API3、想法4、效果5、源代码6、Github源码分享7、具体步骤7.1、创建一个群7.2、创建好后,添加一个群机器人7.3、给机器人起名字、添加头像7.4、创建好后,复制Webhook地址后,点完成7.5、...
  • 流程简述 目前只支持发送数据,无法进行交互。...群机器人是每个成员都可以创建的。 创建者按以下说明构造post请求的data向这个webhook发起HTTP POST请求,即可实现给该群组发送消息。 假设webhook是:https...
  • 微信群机器人,主要用来管理群聊,提供类似天气查询、点歌、机器人聊天等用途。由于微信将web端的协议封杀后,很多基于http协议的群聊机器人都失效了,所以这里使用基于PC端协议的插件来实现。 声明以下过程只用于...
  • 本开源库提供多个聊天机器人 对话模板 项目。 https://github.com/chatopera/chatbot-samples 基于这些源码程序,您可以: 快速掌握 聊天机器人开发,实现智能问答,智能客服等应用; 以对话模板为脚手架,学习...
  • 实现效果图 代码分析 import requests //这个库用来获取网页信息 from bs4 import BeautifulSoup...def get_content(url, data=None): //获取城市的天气网页信息 try: r = requests.get(url, timeout=30) ...
  • 记一次钉钉机器人的开发

    千次阅读 2020-08-12 18:51:37
    文章目录一、需求描述二、开发思路三、开发步骤(一)阅读开发文档(二)创建机器人(三)了解消息格式(四)传参并调用(五)其他四、总结 一、需求描述 为实现更好的沟通,先需要实现以自定义形式向钉钉聊内发送...
  • + "天气: " + weather[index_type + 7:index_notice - 3] + " " \ + weather[index_fx + 5:index_fl - 3] \ + weather[index_fl + 5:index_type - 3] + '\n' \ + "温度范围:" + weather[index_low + 9:index_...
  • Python使用飞书群机器人发送消息

    万次阅读 2020-11-19 15:04:07
    进入群聊,打开群设置,找到群机器人,并点击添加机器人。选择Custom Bot(自定义机器人)加入群聊。 第一步:添加该机器人进群,设置机器人头像、名称和描述,然后点击下一步。 第二步:配置webhook,可根据需求...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,128
精华内容 851
关键字:

群机器人天气