IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 趣味项目—MyQQ机器人(一) -> 正文阅读

[Python知识库]趣味项目—MyQQ机器人(一)

系列文章目录

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



前言

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


一、下载MyQQ框架

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
进入MyQQ官网下载中心,下载这两个,进入开发文档按照新手教程进行配置,有一个地方文档没细说,要想正常使用是一定要设置回调端口的,教程里面只教设置监听端口,这些端口都要是其他系统任务和用户任务没用的,一般来说8888和8889没问题。

二、简单开发

1.先上代码

from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import urllib.parse
import random

import requests
listb = {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'% code
data1 = {
    "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()

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之类的可以丰富功能,也可以学一学知识。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:38:17  更:2022-04-26 11:40:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:55:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码