myqq(趣味项目—MyQQ机器人「终于解决」)

发布时间:2025-12-10 19:14:35 浏览次数:5

趣味项目—MyQQ机器人「终于解决」-名誉侵权

趣味项目—MyQQ机器人(一)「终于解决」qq机器人

系列文章目录

趣味项目—MyQQ机器人(一)

趣味项目—MyQQ机器人(二)签到功能

文章目录

系列文章目录 趣味项目—MyQQ机器人(二)签到功能 前言 一、下载MyQQ框架 二、简单开发 1.先上代码 2.现有功能说明 总结

前言

前段时间看到了这个框架,感觉很有意思,学院有个学弟也开发了一个机器人放在群里,所以我也试了一试。花了一上午时间,有了一个雏形,还挺好玩的,在开发的过程中还可以复习和学习python的语法和应用。最近太忙了,要复习功课和数学,只能慢慢更新了。


一、下载MyQQ框架


进入MyQQ官网下载中心,下载这两个,进入开发文档按照新手教程进行配置,有一个地方文档没细说,要想正常使用是一定要设置回调端口的,教程里面只教设置监听端口,这些端口都要是其他系统任务和用户任务没用的,一般来说8888和8889没问题。

二、简单开发

1.先上代码

from http.server import HTTPServer, BaseHTTPRequestHandlerimport jsonimport urllib.parseimport randomimport requestslistb = { 1: '在食堂', 2: '在公教', 3: '在床上', 4: '在运动场', 5: '在不显山'}lista = { 1: '在食堂', 2: '在公教', 3: '在床上', 4: '在运动场', 5: '在不显山'}listd = { 1: '在学习', 2: '玩游戏', 3: '打篮球', 4: '在吃饭', 5: '迷路了'}listc = { 1: '在学习', 2: '玩游戏', 3: '打篮球', 4: '在吃饭', 5: '迷路了'}host = ('localhost', 8890)url = 'http://localhost:8889/MyQQHTTPAPI'code='101190801'url1='http://www.weather.com.cn/data/cityinfo/%s.html'% codedata1 = { "function": "Api_SendMsg",  #要调用的函数英文名(查看右侧API列表)"token": "hhh007",            #后台设置的token"params": { "c1": "350xxxxx75",            #参数1,要使用的机器人QQ"c2": "2",                    #参数2,消息类型,2为群,以此类推..."c3": "102xxxxx80",            #参数3,要发送的群号,以此类推..."c4": "",                    #参数4,要发送的QQ,此处发的是群,所以这个要留空,以此类推..."c5": "休息一下"        #参数5,要发送的消息内容,以此类推...}}data5 = { "function": "Api_SendMsg",  #要调用的函数英文名(查看右侧API列表)"token": "hhh007",            #后台设置的token"params": { "c1": "350xxxxx75",            #参数1,要使用的机器人QQ"c2": "2",                    #参数2,消息类型,2为群,以此类推..."c3": "102xxxxx80",            #参数3,要发送的群号,以此类推..."c4": "",                    #参数4,要发送的QQ,此处发的是群,所以这个要留空,以此类推..."c5": "恒神我好爱你"        #参数5,要发送的消息内容,以此类推...}}class Resquest(BaseHTTPRequestHandler):def do_POST(self):datas = self.rfile.read(int(self.headers['content-length'])).decode()datas = json.loads(datas)msg = urllib.parse.unquote(datas['MQ_msg'])if int(datas['MQ_type'])==2:print(datas['MQ_fromID'],datas['MQ_fromQQ'],msg)if datas['MQ_fromQQ'] == "105xxxxx94":requests.post(url=url, json=data5)if msg == "恒神":requests.post(url=url, json=data1)if msg == "天气":obj=urllib.request.urlopen(url1)data_b = obj.read()data_s = data_b.decode('utf-8')data_dict = json.loads(data_s)rt = data_dict['weatherinfo']my_rt = ('%s,%s,%s~%s') % (rt['city'], rt['weather'], rt['temp1'], rt['temp2'])data2 = { "function": "Api_SendMsg",  # 要调用的函数英文名(查看右侧API列表)"token": "hhh007",  # 后台设置的token"params": { "c1": "35xxxxx75",  # 参数1,要使用的机器人QQ"c2": "2",  # 参数2,消息类型,2为群,以此类推..."c3": "10xxxxx80",  # 参数3,要发送的群号,以此类推..."c4": "",  # 参数4,要发送的QQ,此处发的是群,所以这个要留空,以此类推..."c5": my_rt  # 参数5,要发送的消息内容,以此类推...}}requests.post(url=url, json=data2)if msg == "我在哪":a = random.sample(lista.keys(), 1)  # 随机一个字典中的key,第二个参数为限制个数b = a[0]data3 = { "function": "Api_SendMsg",  # 要调用的函数英文名(查看右侧API列表)"token": "hhh007",  # 后台设置的token"params": { "c1": "350xxxxx75",  # 参数1,要使用的机器人QQ"c2": "2",  # 参数2,消息类型,2为群,以此类推..."c3": "102xxxxx80",  # 参数3,要发送的群号,以此类推..."c4": "",  # 参数4,要发送的QQ,此处发的是群,所以这个要留空,以此类推..."c5": lista[b]  # 参数5,要发送的消息内容,以此类推...}}requests.post(url=url, json=data3)if msg == "我在干什么":c = random.sample(listc.keys(), 1)  # 随机一个字典中的key,第二个参数为限制个数d = c[0]data4 = { "function": "Api_SendMsg",  # 要调用的函数英文名(查看右侧API列表)"token": "hhh007",  # 后台设置的token"params": { "c1": "350xxxxx75",  # 参数1,要使用的机器人QQ"c2": "2",  # 参数2,消息类型,2为群,以此类推..."c3": "102xxxxx80",  # 参数3,要发送的群号,以此类推..."c4": "",  # 参数4,要发送的QQ,此处发的是群,所以这个要留空,以此类推..."c5": listc[d]  # 参数5,要发送的消息内容,以此类推...}}requests.post(url=url, json=data4)#print('headers', self.headers)#print("do post:", self.path, self.client_address, datas)if __name__ == '__main__':server = HTTPServer(host, Resquest)print("Starting server, listen at: %s:%s" % host)server.serve_forever()

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

2.现有功能说明

用的是http的post方法,在百度一搜就有,也是csdn上的博客,据博主所说,现在的代码安全性是待考虑的,不过我就拿来玩玩,应该没什么问题。
现在设计了几个小功能,

  datas = self.rfile.read(int(self.headers['content-length'])).decode()datas = json.loads(datas)msg = urllib.parse.unquote(datas['MQ_msg'])

这是对QQ消息的监听,我想应该和当时计网实验的时候一样,这是对udp抓包,这里好像是解析从服务器来的json文件,细节就不再追究了,得到msg也就是qq里面的消息,其实json文件里面有很多东西

下面就是为了整蛊我同学

if datas['MQ_fromQQ'] == "105xxxxx94":requests.post(url=url, json=data5)if msg == "恒神":requests.post(url=url, json=data1)

只要监听到消息来自我同学的QQ,机器人就会马上自动发送诸如我爱你的消息。监听到群里有人发某个消息也会做出反应,让他休息一下

这是调用了一个天气的接口进行json解析,有人发天气就会查询我们这当地的天气发到群里

 if msg == "天气":obj=urllib.request.urlopen(url1)data_b = obj.read()data_s = data_b.decode('utf-8')data_dict = json.loads(data_s)rt = data_dict['weatherinfo']my_rt = ('%s,%s,%s~%s') % (rt['city'], rt['weather'], rt['temp1'], rt['temp2'])data2 = { "function": "Api_SendMsg",  # 要调用的函数英文名(查看右侧API列表)"token": "hhh007",  # 后台设置的token"params": { "c1": "35xxxxx75",  # 参数1,要使用的机器人QQ"c2": "2",  # 参数2,消息类型,2为群,以此类推..."c3": "10xxxxx80",  # 参数3,要发送的群号,以此类推..."c4": "",  # 参数4,要发送的QQ,此处发的是群,所以这个要留空,以此类推..."c5": my_rt  # 参数5,要发送的消息内容,以此类推...}}requests.post(url=url, json=data2)

下面就是一个玩具了,大家经常玩内卷游戏,就跟玩骰子一样,只要发了我在哪、我在干什么就会从字典里面随机发送键值,这样可以证明自己的清白

if msg == "我在哪":a = random.sample(lista.keys(), 1)  # 随机一个字典中的key,第二个参数为限制个数b = a[0]data3 = { "function": "Api_SendMsg",  # 要调用的函数英文名(查看右侧API列表)"token": "hhh007",  # 后台设置的token"params": { "c1": "350xxxxx75",  # 参数1,要使用的机器人QQ"c2": "2",  # 参数2,消息类型,2为群,以此类推..."c3": "102xxxxx80",  # 参数3,要发送的群号,以此类推..."c4": "",  # 参数4,要发送的QQ,此处发的是群,所以这个要留空,以此类推..."c5": lista[b]  # 参数5,要发送的消息内容,以此类推...}}requests.post(url=url, json=data3)if msg == "我在干什么":c = random.sample(listc.keys(), 1)  # 随机一个字典中的key,第二个参数为限制个数d = c[0]data4 = { "function": "Api_SendMsg",  # 要调用的函数英文名(查看右侧API列表)"token": "hhh007",  # 后台设置的token"params": { "c1": "350xxxxx75",  # 参数1,要使用的机器人QQ"c2": "2",  # 参数2,消息类型,2为群,以此类推..."c3": "102xxxxx80",  # 参数3,要发送的群号,以此类推..."c4": "",  # 参数4,要发送的QQ,此处发的是群,所以这个要留空,以此类推..."c5": listc[d]  # 参数5,要发送的消息内容,以此类推...}}requests.post(url=url, json=data4)

总结

后面想学一学诸如爬虫什么的和pandas之类的可以丰富功能,也可以学一学知识。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477