搭建一个QQ机器人叫女朋友起床!

代码 代码 1547 人阅读 | 0 人回复

<
目次



媒介

第三篇文章曾经写完了,小火伴们撑持一下,上热榜了间接把一切代码战框架挨包给各人。
第三篇文章地点:拆建一个多功用机械人具体教程
上一篇文章引见了怎样设置机械人框架,并且完成了一些简朴的功用。(收收公聊大概群聊疑息、领受上报的变乱、简朴的主动复兴等等)
此次为了让QQ机械人愈加智能,挪用了一些适用的接心。经由过程本人拆建的机械人完成按时叫女伴侣起床、战女伴侣谈天等功用。
115208afzgdpopogroiio8.jpg

115208cjqjhbeaozaejyyl.jpg

如上图所示,我的机械人天天城市定时叫女伴侣起床;并且正在我闲的时分但是女伴侣无聊的时分能够伴她聊一会天。
115208hnhzihhpfahda003.png

详细完成

以下完成的功用皆需求机械人曾经设置完成,并且曾经写好了我上一篇文章的一些函数。
上一篇文章地点—>>>QQ机械人建造教程,超具体!
1、按时收收疑息

要完成那个功用是没有易的,只需求引进工夫那个变量就能够了,详细代码以下(QQ号、内里的工夫战msg本人改):
  1. import datetime
  2. import time
  3. while True:
  4.         qq=女伴侣qq号
  5.     now = datetime.datetime.now()
  6.     if(now.hour==0 and now.minute==0):
  7.         send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: &#39;早安!&#39;})
  8.         send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;:&#39;[CQ:poke,qq={}]&#39;.format(qq)})
  9.         time.sleep(60)
  10.         continue
  11.     if (now.hour == 9 and now.minute == 30):
  12.         send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: &#39;起床了&#39;})
  13.         send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: &#39;[CQ:poke,qq={}]&#39;.format(qq)})
  14.         time.sleep(60)
  15.         continue
  16.     else:
  17.             continue
复造代码
上述代码完成的是:天天整面给女伴侣收早安并戳她一下;天天早上九面半倡议床了并戳她一下。那些您本人能够改良,能够揭晓情包,以至能够把代码里的’time.sleep(60)&#39;删除,那样便会正在一分钟以内连续收疑息轰炸她,激烈倡议利用!
115208pbrh08dfnkvc50td.gif

2、让机械人伴女伴侣谈天

要完成那个功用需求借助API接心了,今朝我找到的适用智能复兴API接心地点:http://api.qingyunke.com/
115209f9lw3kxmwkcwq0xk.png

那个接心不单单能够谈天,另有一些适用的功用,以下图所示:
115209sr5lhioehlv5fhhh.jpg

要完成以上功用皆需求获得女伴侣给您收的疑息,那个正在上一篇文章曾经写了,获得到后间接挪用接心返回结果,再收收给她便可。
上面间接上代码:
  1. from receive import rev_msg
  2. import requests
  3. import json
  4. import urllib.request
  5. from urllib.parse import quote
  6. import string
  7. while True:
  8.     try:
  9.         rev = rev_msg()
  10.         print(rev)
  11.         if rev == None:
  12.             continue
  13.     except:
  14.         continue
  15.     if rev["post_type"] == "message":
  16.         if rev["message_type"] == "private": #公聊
  17.             message=rev[&#39;raw_message&#39;]
  18.             if &#39;face&#39; in message:
  19.                 qq = rev[&#39;sender&#39;][&#39;user_id&#39;]
  20.                 img = rev[&#39;raw_message&#39;]
  21.                 send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: img})
  22.             elif &#39;image&#39; in message:
  23.                 qq = rev[&#39;sender&#39;][&#39;user_id&#39;]
  24.                 img=rev[&#39;raw_message&#39;]
  25.                 send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: img})
  26.             elif &#39;戳一戳&#39; in message:
  27.                 qq = rev[&#39;sender&#39;][&#39;user_id&#39;]
  28.                 send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: &#39;别戳了&#39;})
  29.             else:
  30.                 url = &#39;http://api.qingyunke.com/api.php?key=free&appid=0&msg=&#39; + message
  31.                 s = quote(url, safe=string.printable)
  32.                 try:
  33.                     with urllib.request.urlopen(s) as response:
  34.                         html = response.read()
  35.                         # 将获得到的呼应内乱容停止解码,并将json字符串内乱容转换为python字典格局
  36.                         # 经由过程下标与到机械人复兴的内乱容
  37.                         qq = rev[&#39;sender&#39;][&#39;user_id&#39;]
  38.                         # print(eval(html.decode("utf-8"))["content"])
  39.                         send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq,
  40.                                   &#39;msg&#39;: eval(html.decode("utf-8"))["content"].replace(&#39;{br}&#39;, &#39;\n&#39;)})
  41.                         # print(eval(html.decode("utf-8"))["content"])
  42.                 except:
  43.                     qq = rev[&#39;sender&#39;][&#39;user_id&#39;]
  44.                     send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: &#39;从头毗连中。。。&#39;})
  45.     else:  # rev["post_type"]=="meta_event":
  46.         continue
复造代码
上述代码中,先判定"post_type"的范例,假如为message表白有人给机械人收动静了;再看"message_type",假如为private表白那是公聊疑息,当然假如为group表白那是群聊疑息;然后我们获得疑息message=rev[‘raw_message’],拿到那个疑息以后就能够设置枢纽词停止本人复兴了。
我正在代码中设置的’face’ in message战’image’ in message是为了获得心情战图片,对圆收收甚么便返回甚么,由于谁人智能复兴接心辨认没有了心情战图片。
115209g85eqt74efo4ftzj.jpg

115209bcifnccsxfzlmivl.jpg

115210rn75nsodur76v5tu.jpg

3、挪用一些风趣的接心

正在散开数据找了一些好玩的接心,有许多皆是免费的。
115210wppa1zppzcvazubr.jpg

本文以星座运势为例子教各人怎样完成。申请利用一个api会给您恳求key,需求先真名认证。
申请一个接心后面击测试,输进两个恳求参数便可返回结果。
115210d54u76w4r4lwc5ir.jpg

115211fq6q3oggoh9iiuo9.jpg

python代码以下(需求利用本人的api恳求key):
  1. def horoscope(constellation):
  2.     # 恳求地点
  3.     url = "http://web.juhe.cn/constellation/getAll?" + &#39;consName={}&type=today&key=本人的恳求key&#39;.format(constellation)
  4.     # 收收get恳求
  5.     r = requests.get(url)
  6.     # 获得返回的json数据
  7.     result = r.json()[&#39;summary&#39;]
  8.     print(result)
  9.     return result
  10. horoscope(&#39;摩羯座&#39;)
复造代码
再把它整开到机械人法式内里:
  1. if &#39;星座运势&#39; in message:
  2.                 try:
  3.                     constellation = message.split(&#39; &#39;)[1]
  4.                     text = horoscope(constellation)
  5.                     qq = rev[&#39;sender&#39;][&#39;user_id&#39;]
  6.                     send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: text})
  7.                 except:
  8.                     qq = rev[&#39;sender&#39;][&#39;user_id&#39;]
  9.                     send_msg({&#39;msg_type&#39;: &#39;private&#39;, &#39;number&#39;: qq, &#39;msg&#39;: &#39;请正在星座前里减上空格。&#39;})
复造代码
115211oz6viuvqv6rvyv9u.jpg

第三篇文章完成更多功用

第三篇文章完成了爆照、诞辰书、获得歌词、分享音乐等功用,等待各人的一键三连!!
小火伴们撑持一下,上热榜了间接把一切代码战框架挨包给各人。
第三篇文章地点:拆建一个多功用机械人具体教程
写正在最初

第一篇文章:QQ机械人建造底子教程,超具体!
建造不容易,等待各人的一键三连!
有甚么成绩欢迎正在批评区交流。
115211trqbmtqscq7qw5m5.jpg


免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则