天天看点

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

目录

  • 前言
  • 具体实现
    • 1、定时发送信息
    • 2、让机器人陪女朋友聊天
    • 3、调用一些有趣的接口
  • 第三篇文章实现更多功能
  • 写在最后

前言

第三篇文章已经写完了,小伙伴们支持一下,上热榜了直接把所有代码和框架打包给大家。

第三篇文章地址:搭建一个多功能机器人详细教程(含爆照功能)

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

上一篇文章介绍了怎么配置机器人框架,并且实现了一些简单的功能。(发送私聊或者群聊信息、接收上报的事件、简单的自动回复等等)

这次为了让QQ机器人更加智能,调用了一些实用的接口。通过自己搭建的机器人实现定时叫女朋友起床、和女朋友聊天等功能。

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后
搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

如上图所示,我的机器人每天都会准时叫女朋友起床;并且在我忙的时候然而女朋友无聊的时候可以陪她聊一会天。

搭建一个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)'删除,那样就会在一分钟之内连续发信息轰炸她,强烈建议使用!

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

2、让机器人陪女朋友聊天

要实现这个功能需要借助API接口了,目前我找到的实用智能回复API接口地址:http://api.qingyunke.com/

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

这个接口不仅仅可以聊天,还有一些实用的功能,如下图所示:

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

要实现以上功能都需要获取女朋友给你发的信息,这个在上一篇文章已经写了,获取到后直接调用接口返回结果,再发送给她即可。

下面直接上代码:

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是为了获取表情和图片,对方发送什么就返回什么,因为那个智能回复接口识别不了表情和图片。

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后
搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后
搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

3、调用一些有趣的接口

在聚合数据找了一些好玩的接口,有很多都是免费的。

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

本文以星座运势为例子教大家怎么实现。申请使用一个api会给你请求key,需要先实名认证。

申请一个接口后点击测试,输入两个请求参数即可返回结果。

搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后
搭建一个QQ机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后

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机器人叫女朋友起床!前言具体实现第三篇文章实现更多功能写在最后