搭建自己的AI智能QQ机器人,可实现单聊或者群聊,新手可看,手把手保姆级教学,可实现机器人托管自己的QQ,机器人可以定时发送消息,个性化定制机器人的类型

您所在的位置:网站首页 qq字符一个人发消息可以点亮吗 搭建自己的AI智能QQ机器人,可实现单聊或者群聊,新手可看,手把手保姆级教学,可实现机器人托管自己的QQ,机器人可以定时发送消息,个性化定制机器人的类型

搭建自己的AI智能QQ机器人,可实现单聊或者群聊,新手可看,手把手保姆级教学,可实现机器人托管自己的QQ,机器人可以定时发送消息,个性化定制机器人的类型

2024-07-12 10:25:42| 来源: 网络整理| 查看: 265

一、搭建自己的QQ服务器

GitHub上开源的项目go-cqhttp可以帮助快速搭建,并且操作十分简单  

1. go-cqhttp官网:go-cqhttp 帮助中心  官网界面如下图

2. 下载自己机器适配的版本 

如果你是Windows,推荐使用下面的两个文件,Linux也没事,文档中写的很清楚

3. 必要操作和配置文件

下载好之后是下面的三个文件:

双击go-cqhttp.exe,会出现控制台和三个弹窗,弹窗全部点击确定,控制台会自动关闭,这时会发现文件夹里多了一个文件go-cqhttp.bat,如下图所示,双击打开它

在出现的控制台上选择0,并将控制台关闭,接下来就是配置文件

返回文件夹,会发现多出一个文件:config.yml 如下图所示,使用记事本编辑它

文本内容如下图所示,uin是QQ号,password为QQ密码, 因为现在的QQ都有登陆保护或者验证,本次使用的是扫码登录,将uin和password全部置为空,多出的空格不必删除,删除就会报错

再将倒数几行的 地址 和 密钥 前面的 # 删掉,这一步不可以省略

保存文件之后,双击打开go-cqhttp.bat,此时会在文件夹内生成几个登录文件并尝试打开摄像头进行QQ的登录扫描,如果打开摄像头时报错协议不支持或者版本过低,则用记事本打开device.json并将其内容"protocol":6改为"protocol":2

到此,必要的操作和配置文件已经整理好,双击go-cqhttp.bat就可以登录我们自己的QQ了

如果自己弄不明白或者环境配置不上以及任何问题,欢迎和我私聊,如果希望快一点也可加我的微信:BeWhite_Studio

二、使用python语言进行消息的接收和发送 1. 接收QQ消息

将以下代码命名为:receive.py

# 接收QQ端消息 import socket import json 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 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 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 2. 发送QQ消息

将以下代码命令为:QQMessages.py

# 发送QQ端消息 import socket 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" else: return 0 print("发送" + payload) client.send(payload.encode("utf-8")) client.close() return 0  3. 测试接收和发送消息的功能

将以下代码命名为Main.py 并运行,如果当有人给你的QQ发消息“在吗”时,自动回复“我在”,则功能正常,其他功能可自行完善

from receive import rev_msg from QQMessages import send_msg def TEST(): while 1: rev = rev_msg() if rev["post_type"] == "message": 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=机器人的QQ号]" in rev["raw_message"]: if rev['raw_message'].split(' ')[1] == '在吗': qq = rev['sender']['user_id'] send_msg({'msg_type': 'group', 'number': group, 'msg': '[CQ:poke,qq={}]'.format(qq)}) else: continue else: continue if __name__ == '__main__': TEST()

如果自己弄不明白或者环境配置不上以及任何问题,欢迎和我私聊,如果希望快一点也可加我的微信:BeWhite_Studio 

三、引用人工智能到服务器上,实现AI机器人 1. 调用文心一言的接口

我在测试的时候使用的是文心一言,其他的大家可以自行读官网文档

这里推荐一个网站:LuckyCola,该网站集成了很多的人工智能,简单方便

以下是人工智能对话的代码,此代码中的账密都是我自己的,故不方便展示。当有文心一言的appKey和uid之后,就可以将以下代码中的appKey和uid切换成自己的,并调用方法则可实现

import configparser import requests import json class res: def __init__(self): super().__init__() config = configparser.ConfigParser() config.read('properties/constant.properties', encoding='utf-8-sig') self.appKey = config.get('api', 'appKey') self.uid = config.get('api', 'uid') self.url = config.get('WenXin', 'url') self.body = None self.text = None def response(self, text): try: self.text = text self.body = { 'appKey': self.appKey, 'ques': self.text, 'uid': self.uid, 'isLongChat': 1 } # 将字典转换为JSON格式的字符串 body_json = json.dumps(self.body) # 发送POST请求 response = requests.post(self.url, data=body_json, headers={'Content-Type': 'application/json'}) start = "result" end = "countMsg" start_index = response.text.find(start) + len(start) end_index = response.text.find(end) # 打印响应结果 return response.text[start_index + 3:end_index - 4] except Exception: return "发生错误,请稍后重试" 2. 在代码上进行简单的自我扩展,即可实现机器人账号或者是机器人托管

以下代码都是我在基础的功能上加的一些强化功能,演示如下:

群聊:

单聊:

自定义机器人可以实现自己的AI小助手,或者是个性化的群管家,也可实现托管自己的QQ

如果自己弄不明白或者环境配置不上以及任何问题,欢迎和我私聊,如果希望快一点也可加我的微信:BeWhite_Studio

作者声明:未经允许,禁止转载,如果需要,请联系微信:BeWhite_Studio



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭