教你使用python搭建一个QQ机器人实现叫起床服务
作者:……快乐的√4 发布时间:2021-04-22 02:25:41
前言
上一篇文章介绍了怎么配置机器人框架,并且实现了一些简单的功能。
(发送私聊或者群聊信息、接收上报的事件、简单的自动回复等等)
这次为了让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机器人的资料请关注脚本之家其它相关文章!
来源:https://blog.csdn.net/qq_44809707/article/details/119981592


猜你喜欢
- 日志作为项目开发和运行中必备组件,python提供了内置的logging模块来完成这个工作;借助 TimedRotatingFileHand
- 栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top)。 举个例子,栈就想一摞洗干净的盘
- 接口模块需要用 API 来提供对外服务的接口,当然也可以直接连数据库来取,但是这样就需要知道数据库的连接信息,不太安全,而且需要配置连接,所
- 前言python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时
- 花几分钟时间欣赏一下我们写好的Web应用程序,然后我们再来搞点小破坏。 我们故意在 views.py 文件中引入一项 Python 错误,注
- 1. 规范简介本规范主要规定ASP源程序在书写过程中所应遵循的规则及注意事项。编写该规范的目的是使项目开发人员的源代码书写习惯保持一致。这样
- 由于同事电脑上没有直接可以压缩gz.tar格式的压缩软件,而工作中这个又时常需要将zip文件转换为gz.tar格式,所以常常将压缩为zip格
- mysql -uusername -pyourpassword yourdatabasename < c:\sqlfile.sql其中
- 前言最近因为业务需求,就写了这个脚本,脚本完成的任务是从FTP上下载一个目录,大家都知道从FTP上下载一个文件可用用get命令,下载多个文件
- var info="腾讯拍拍网(www.paipai.com)是腾讯旗下知名电子商务网站。"; info +="
- 之前学习深度学习算法,都是使用网上现成的数据集,而且都有相应的代码。到了自己开始写论文做实验,用到自己的图像数据集的时候,才发现无从下手 ,
- 多表关系在进行数据库表结构的设计时,会根据业务的需求和业务模块之间的关系,分析设计表结构,由于业务之间相互关联,所以各个表结构之间也存在各种
- Pandas是一个用于数据分析和操作的Python库。在pandas中几乎所有的操作都围绕着DataFrame。Dataframe是一个二维
- INSERT、DELETE、UPDATE 三种SQL语句是数据库技术的三大基本语句. 在通常的web开发中对它的处理可以说是无处不在. 如果
- 守护进程主进程创建子进程目的是:主进程有一个任务需要并发执行,那开启子进程帮我并发执行任务主进程创建子进程,然后将该进程设置成守护自己的进程
- 1、远程登录到linux上,使用到的模块paramiko#远程登陆操作系统def ssh(sys_ip,username,password,
- SELECT sch.name + '.' + t.name AS [Table Name],
- 一、字符串的本质1.字符串的定义golang中的字符(character)串指的是所有8比特位字节字符串的集合,通常(非必须)是UTF-8&
- 几个常用的js小函数,在表单验证时也许您用得到:一检查是否是email地址,二检查是否为数字,三检查是否为电话号码,四检查num是否是负数或
- 首先交代一下运行环境和工具版本:WIN10MINGW64ORACLEINSTANCCLIENT_18_3 x64Jetbrins Golan