目录
前言具体实现1、定时发送信息2、让机器人陪女朋友聊天3、调用一些有趣的接口
前言
上一篇文章介绍了怎么配置机器人框架,并且实现了一些简单的功能。
(发送私聊或者群聊信息、接收上报的事件、简单的自动回复等等)
这次为了让QQ机器人更加智能,调用了一些实用的接口。
通过自己搭建的机器人实现定时叫女朋友起床、和女朋友聊天等功能。
如上图所示,我的机器人每天都会准时叫女朋友起床;并且在我忙的时候然而女朋友无聊的时候可以陪她聊一会天。
具体实现
以下实现的功能都需要机器人已经配置完成,并且已经写好了我上一篇文章的一些函数。
上一篇文章地址—>>>QQ机器人制作教程,超详细!
1、定时发送信息
要实现这个功能是不难的,只需要引入时间这个变量就可以了,具体代码如下(QQ号、里面的时间和msg自己改):
import datetime import time while True: qq=女朋友qq号 now = datetime.datetime.now() if(now.hour==0 and now.minute==0): send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': \'晚安!\'}) send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\':\'[CQ:poke,qq={}]\'.format(qq)}) time.sleep(60) continue if (now.hour == 9 and now.minute == 30): send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': \'起床了\'}) send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': \'[CQ:poke,qq={}]\'.format(qq)}) time.sleep(60) continue else: continue
上述代码实现的是:每天零点给女朋友发晚安并戳她一下;每天早上九点半发起床了并戳她一下。
这些你自己可以改进,可以发表情包,甚至可以把代码里的\’time.sleep(60)\’删除,
那样就会在一分钟之内连续发信息轰炸她,强烈建议使用!
2、让机器人陪女朋友聊天
要实现这个功能需要借助API接口了,目前我找到的实用智能回复API接口地址:http://api.qingyunke.com/
这个接口不仅仅可以聊天,还有一些实用的功能,如下图所示:
要实现以上功能都需要获取女朋友给你发的信息,这个在上一篇文章已经写了,
获取到后直接调用接口返回结果,再发送给她即可。
下面直接上代码:
from receive import rev_msg import requests import json import urllib.request from urllib.parse import quote import string while True: try: rev = rev_msg() print(rev) if rev == None: continue except: continue if rev[\"post_type\"] == \"message\": if rev[\"message_type\"] == \"private\": #私聊 message=rev[\'raw_message\'] if \'face\' in message: qq = rev[\'sender\'][\'user_id\'] img = rev[\'raw_message\'] send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': img}) elif \'image\' in message: qq = rev[\'sender\'][\'user_id\'] img=rev[\'raw_message\'] send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': img}) elif \'戳一戳\' in message: qq = rev[\'sender\'][\'user_id\'] send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': \'别戳了\'}) else: url = \'http://api.qingyunke.com/api.php?key=free&appid=0&msg=\' + message s = quote(url, safe=string.printable) try: with urllib.request.urlopen(s) as response: html = response.read() # 将获取到的响应内容进行解码,并将json字符串内容转换为python字典格式 # 通过下标取到机器人回复的内容 qq = rev[\'sender\'][\'user_id\'] # print(eval(html.decode(\"utf-8\"))[\"content\"]) send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': eval(html.decode(\"utf-8\"))[\"content\"].replace(\'{br}\', \'\\n\')}) # print(eval(html.decode(\"utf-8\"))[\"content\"]) except: qq = rev[\'sender\'][\'user_id\'] send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': \'重新连接中。。。\'}) else: # rev[\"post_type\"]==\"meta_event\": continue
上述代码中,先判断\”post_type
\”的类型,如果为message表明有人给机器人发消息了;
再看\”message_type
\”,如果为private
表明这是私聊信息,当然如果为group
表明这是群聊信息;
然后我们获取信息message=rev[‘raw_message\']
,拿到这个信息之后就可以设置关键词进行自己回复了。
我在代码中设置的\'face\' in message
和\'image\' in message
是为了获取表情和图片,
对方发送什么就返回什么,因为那个智能回复接口识别不了表情和图片。
3、调用一些有趣的接口
在聚合数据找了一些好玩的接口,有很多都是免费的。
本文以星座运势为例子教大家怎么实现。
申请使用一个api会给你请求key,需要先实名认证。
申请一个接口后点击测试,输入两个请求参数即可返回结果。
python代码如下(需要使用自己的api请求key):
def horoscope(constellation): # 请求地址 url = \"http://web.juhe.cn/constellation/getAll?\" + \'consName={}&type=today&key=自己的请求key\'.format(constellation) # 发送get请求 r = requests.get(url) # 获取返回的json数据 result = r.json()[\'summary\'] print(result) return result horoscope(\'摩羯座\')
再把它整合到机器人程序里面:
if \'星座运势\' in message: try: constellation = message.split(\' \')[1] text = horoscope(constellation) qq = rev[\'sender\'][\'user_id\'] send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': text}) except: qq = rev[\'sender\'][\'user_id\'] send_msg({\'msg_type\': \'private\', \'number\': qq, \'msg\': \'请在星座前面加上空格。\'})
健康填报小助手开发中。。。
前几天一个辅导员朋友看了我的文章问我能不能制作一个qq机器人,关于健康填报小助手的。
他每天都要提醒学生健康填报,而且每次查看谁没填报的时候都需要登录网站统计数据才能获得,
这就难免会忘记或者说每天做这些事情太烦人了,于是想让我给他开发一个QQ机器人。
简单交流了一下,了解了这个QQ机器人需要有的功能:
1、每天定时发送所有未进行健康报送的学生姓名
2、辅导员戳一戳QQ机器人或者艾特它也会发送所有未进行健康报送的学生姓名
3、设定一个特定的时间t,如果在t时间之后还未进行报送的将会被QQ机器人私聊
以上就是教你使用python搭建一个QQ机器人实现叫起床服务的详细内容,更多关于python搭建QQ机器人的资料请关注免费资源网其它相关文章!
暂无评论内容