首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-03-05 14:02
  • 3490
  • 14036
blog.csdn.net

一、搭建自己的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

  1. # 接收QQ端消息
  2. import socket
  3. import json
  4. ListenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5. ListenSocket.bind(('127.0.0.1', 5701))
  6. ListenSocket.listen(100)
  7. HttpResponseHeader = '''HTTP/1.1 200 OK\r\n
  8. Content-Type: text/html\r\n\r\n
  9. '''
  10. def request_to_json(msg):
  11. for i in range(len(msg)):
  12. if msg[i] == "{" and msg[-1] == "\n":
  13. return json.loads(msg[i:])
  14. return None
  15. # 需要循环执行,返回值为json格式
  16. def rev_msg(): # json or None
  17. Client, Address = ListenSocket.accept()
  18. Request = Client.recv(1024).decode(encoding='utf-8')
  19. rev_json = request_to_json(Request)
  20. Client.sendall(HttpResponseHeader.encode(encoding='utf-8'))
  21. Client.close()
  22. return rev_json

2. 发送QQ消息

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

  1. # 发送QQ端消息
  2. import socket
  3. def send_msg(resp_dict):
  4. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5. ip = '127.0.0.1'
  6. client.connect((ip, 5700))
  7. msg_type = resp_dict['msg_type'] # 回复类型(群聊/私聊)
  8. number = resp_dict['number'] # 回复账号(群号/好友号)
  9. msg = resp_dict['msg'] # 要回复的消息
  10. # 将字符中的特殊字符进行url编码
  11. msg = msg.replace(" ", "%20")
  12. msg = msg.replace("\n", "%0a")
  13. if msg_type == 'group':
  14. payload = "GET /send_group_msg?group_id=" + str(
  15. number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n"
  16. elif msg_type == 'private':
  17. payload = "GET /send_private_msg?user_id=" + str(
  18. number) + "&message=" + msg + " HTTP/1.1\r\nHost:" + ip + ":5700\r\nConnection: close\r\n\r\n"
  19. else:
  20. return 0
  21. print("发送" + payload)
  22. client.send(payload.encode("utf-8"))
  23. client.close()
  24. return 0

 3. 测试接收和发送消息的功能

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

  1. from receive import rev_msg
  2. from QQMessages import send_msg
  3. def TEST():
  4. while 1:
  5. rev = rev_msg()
  6. if rev["post_type"] == "message":
  7. if rev["message_type"] == "private":
  8. if rev['raw_message'] == '在吗':
  9. qq = rev['sender']['user_id']
  10. send_msg({'msg_type': 'private', 'number': qq, 'msg': '我在'})
  11. elif rev["message_type"] == "group":
  12. group = rev['group_id']
  13. if "[CQ:at,qq=机器人的QQ号]" in rev["raw_message"]:
  14. if rev['raw_message'].split(' ')[1] == '在吗':
  15. qq = rev['sender']['user_id']
  16. send_msg({'msg_type': 'group', 'number': group, 'msg': '[CQ:poke,qq={}]'.format(qq)})
  17. else:
  18. continue
  19. else:
  20. continue
  21. if __name__ == '__main__':
  22. TEST()

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

三、引用人工智能到服务器上,实现AI机器人

1. 调用文心一言的接口

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

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

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

  1. import configparser
  2. import requests
  3. import json
  4. class res:
  5. def __init__(self):
  6. super().__init__()
  7. config = configparser.ConfigParser()
  8. config.read('properties/constant.properties', encoding='utf-8-sig')
  9. self.appKey = config.get('api', 'appKey')
  10. self.uid = config.get('api', 'uid')
  11. self.url = config.get('WenXin', 'url')
  12. self.body = None
  13. self.text = None
  14. def response(self, text):
  15. try:
  16. self.text = text
  17. self.body = {
  18. 'appKey': self.appKey,
  19. 'ques': self.text,
  20. 'uid': self.uid,
  21. 'isLongChat': 1
  22. }
  23. # 将字典转换为JSON格式的字符串
  24. body_json = json.dumps(self.body)
  25. # 发送POST请求
  26. response = requests.post(self.url, data=body_json, headers={'Content-Type': 'application/json'})
  27. start = "result"
  28. end = "countMsg"
  29. start_index = response.text.find(start) + len(start)
  30. end_index = response.text.find(end)
  31. # 打印响应结果
  32. return response.text[start_index + 3:end_index - 4]
  33. except Exception:
  34. return "发生错误,请稍后重试"

2. 在代码上进行简单的自我扩展,即可实现机器人账号或者是机器人托管

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

群聊:

单聊:

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

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

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

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览421970 人正在系统学习中
注:本文转载自blog.csdn.net的Bai_JinBo的文章"https://blog.csdn.net/2401_83427145/article/details/138535733"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

139
资讯
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top