QQ机器人生成大学习截图

效果:

聊天效果

大学习

@之后输入要P图的学号姓名 生成最新一期截图

例:@机器人QQ清年big学习 123456顾某  (审核真难)

 



QQ机器人制作

 QQ发送图片

```python
import requests
# go_cqhttp地址和端口
url = "http://127.0.0.1:5700"
# 发送图片API
def send_image(image_url, user_id=None, group_id=None):
    api_url = url + "/send_msg"
    data = {
        "message": "[CQ:image,file=" + image_url + "]",
        "auto_escape": False
    }
    if user_id:
        data["user_id"] = user_id
    elif group_id:
        data["group_id"] = group_id
    res = requests.post(api_url, json=data).json()
    return res
# 发送图片给某个QQ号
send_image("http://example.com/image.jpg", user_id=123456)

完整代码

import socket
import json,re,os
import requests
from PIL import Image, ImageDraw, ImageFont
urk='https://xiaoapi.cn/API/lt_xiaoai.php?type=json&msg='
ListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ListenSocket.bind(('127.0.0.1', 5701))
ListenSocket.listen(100)
HttpResponseHeader = '''HTTP/1.1 200 OK\r\n
Content-Type: text/html\r\n\r\n
'''
def qingnian(pk):
    head = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.1.1171 SLBChan/103"
    }
    des = os.path.join(os.path.expanduser("~"), "Desktop/")  #
    ps =  pk
    url = 'http://news.cyol.com/gb/channels/vrGlAKDl/index.html'
    gu = requests.get(url, headers=head)
    obj = re.compile(r"<li><a\shref=.(?P<name>.*?).\sclass", re.S)
    ml = obj.findall(gu.text)[0]  # 最新一期的视频网址
    gum = requests.get(ml)
    gum.encoding = 'UTF-8'
    oba = re.compile(r"<title>(.*?)</title>", re.S)
    resa = oba.findall(gum.text)[0]
    kl = ml.split('/')[5]
    sl = 'https://h5.cyol.com/special/daxuexi/' + kl + '/images/end.jpg'  # 图片网址
    pto = requests.get(sl)
    with open(des + resa + '.jpg', 'wb') as f:
        f.write(pto.content)
    print(resa + '下载完毕')  # 原图
    gum.close()
    pto.close()
    gu.close()
    path = des + resa + '.jpg'
    image = Image.open(path)
    draw = ImageDraw.Draw(image)
    font = ImageFont.truetype('../model_data/simhei.ttf', 50)
    draw.text((190, 100), ps, fill=(255, 0, 0), font=font)
    paths = dek + resa + '.jpg'
    image.save(paths)
    return resa + '.jpg'

url = "http://127.0.0.1:5700"
# 发送图片API
def send_image(image_url, user_id=None, group_id=None):
    api_url = url + "/send_msg"
    data = {
        "message": "[CQ:image,file=" + image_url + "]",
        "auto_escape": False
    }
    if user_id:
        data["user_id"] = user_id
    elif group_id:
        data["group_id"] = group_id
    res = requests.post(api_url, json=data).json()
    return res
def send_msg(resp_dict):
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ip = '127.0.0.1'
    client.connect((ip, 5700))
    msg_type = resp_dict['msg_type']  # 回复类型(群聊/私聊)
    number = resp_dict['number']  # 回复账号(群号/好友号)
    msg = resp_dict['msg']  # 要回复的消息
    # 将字符中的特殊字符进行url编码
    msg = msg.replace(" ", "%20")
    msg = msg.replace("\n", "%0a")
    if msg_type == 'group':
        payload = "GET /send_group_msg?group_id=" + str(number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n"
    elif msg_type == 'private':
        payload = "GET /send_private_msg?user_id=" + str(number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n"
    # print("发送" + payload)
    client.send(payload.encode("utf-8"))
    client.close()
    return 0
def request_to_json(msg):
    for i in range(len(msg)):
        if msg[i]=="{" and msg[-1]=="\n":
            return json.loads(msg[i:])
    return None
#需要循环执行,返回值为json格式
def rev_msg():# json or None
    global js
    Client, Address = ListenSocket.accept()
    Request = Client.recv(1024).decode(encoding='utf-8')
    rev_json=request_to_json(Request)
    Client.sendall((HttpResponseHeader).encode(encoding='utf-8'))
    Client.close()
    return rev_json
while(True):
    rev=rev_msg()
    print(rev)
    if rev["post_type"] == "message":
        #print(rev) #需要功能自己DIY
        if rev["message_type"] == "private": #私聊
            if rev['raw_message']=='在吗':
                qq = rev['sender']['user_id']
                send_msg({'msg_type':'private','number':qq,'msg':'我在'})
        elif rev["message_type"] == "group": #群聊
            group = rev['group_id']
            if "[CQ:at,qq=2201523460]" in rev["raw_message"]:
                s =rev['raw_message'].split(' ')[1]
                if '青年大学习'in s:
                    try :
                        k = rev['raw_message'].split(' ')[2]
                        pk=k
                    except:
                        pk=' '
                    send_image(qingnian(pk), group_id = rev['group_id'])
                else:
                    url=urk+s
                    gu = requests.get(url)
                    gus=gu.json().get('data').get('txt')
                    qq=rev['sender']['user_id']
                    send_msg({'msg_type':'group','number':group,'msg':gus.format(qq)})
                    gu.close()
                # [CQ: poke, qq = {}]     窗口抖动
        else:
            continue
    else:  # rev["post_type"]=="meta_event":
        continue

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值