玩转多功能QQ机器人【含ChatGPT实现】

本文记录用nonebot2搭建多功能QQ机器人的流程,包括go-cqhttp和nonebot2环境搭建,解决了Linux下的扫码问题,介绍了配置及自建模块方法,附chatgpt模块示例,已实现文生图等多项功能。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

玩转多功能qq机器人【含chatgpt实现】 - 创想鸟

手把手实现多功能QQ机器人

现在网络上已经有很多的教程去教学QQ搭建,我这里再写一个完整的流程搭建及自建模块如何实现。

(主要是怕自己搭完一次就忘了,算是个记录博客)

实现功能

采用目前主流的nonebot2完成QQ机器人搭建。

这是一个QQ机器人功能合集。

目前实现了如下功能:

[X] 文生图-openai[X] 代码生成-openai[X] 随机图片-request[X] 单次聊天-openai-chatgpt[X] 天气预报-request[X] ip查询-高德[ ] 文生图 其他版本[ ] 多轮聊天

1. go-cqhttp环境搭建

下载go-cqhttp压缩包

https://docs.go-cqhttp.org/guide/quick_start.html#%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B

或者在github下载,都一样

https://github.com/Mrs4s/go-cqhttp/releases

按照官网流程进行操作即可

https://docs.go-cqhttp.org/guide/quick_start.html

我的config.yml已放在go-cqhttp文件夹中,可进行参考。

PS linux环境下踩坑记录

这里可能会存在一个情况,在配置好config.yml运行脚本之后

若配置文件没有写密码,会提示你进行扫码,扫码需要保持设备之间是局域网环境,我实操linux系统无法解决这个问题

ChatGPT ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

ChatGPT 211 查看详情 ChatGPT

后面解决的方法是:将Windows中生成的device.json文件复制到linux对应的位置,即可解决问题。

2. 安装nonebot2环境

先放官网地址

https://v2.nonebot.dev/docs/start/installation

安装nonebot2

pip install nb-cli

   

3. 运行bot.py

配置qqaibot/config.json

openai-key可以在openai获取app_id和app_secret可以在free-apigaode_key可以在高德获取

{   "openai_key": "sk-xxxxxxxxxxxxxxxx",   "app_id": "xxxxxxxxxxxxxxxxx",   "app_secret": "xxxxxxxxxxx",   "gaode_key": "xxxxxxxxxxxxxxxxx"}

       

到这里在运行go-cqhttp的前提下,你已经可以执行

qqaibot/bot.py

完成机器人的运行

4. 如何补充自己的模块

可以参考我的写法,在下面路径新建文件夹

qqaibot/src/plugins/

每一个文件夹都是一个模块,然后完成自己的模块编写即可。

举例chatgpt DEMO 如下:

chatbot.py

import configimport openaifrom nonebot import on_commandfrom nonebot.adapters.onebot.v11 import MessageEvent, MessageSegmentfrom nonebot.rule import to_mefrom revChatGPT.Official import Chatbot# 只有艾特机器人才会触发rule = to_me()key, _, _, _ = config.getToken()chat = on_command("chatgpt", aliases={                  "对话", "聊天", "chat"}, priority=99, rule=rule)@chat.handle()async def gpt3chat(event: MessageEvent):    # 获取用户发送的消息    msg = str(event.get_message()).strip()    if len(msg.split(" ")) == 1:        await chat.send(MessageSegment.text("请输入对话提示(或检查格式)"))        await chat.send(MessageSegment.text("格式:聊天 你吃饭了吗?"))    if len(msg.split(" ")) > 1:        await chat.send(MessageSegment.text("收到,本bot正在组织语言..."))        flag = msg.split(" ")[0]        prompt = msg.split(" ", 1)[1]        if flag == "对话" or flag == "gpt" or flag == "聊天" or flag == "chat":            try:                res = await getres(prompt)            except:                await chat.send(MessageSegment.text("请求超时,可能是网络问题"))                await chat.finish(MessageSegment.text("请重试"))            await chat.finish(MessageSegment.text(res))async def getres(prompt):    openai.api_key = key    chatbot = Chatbot(api_key=key)    response = chatbot.ask(prompt)    res = response["choices"][0]["text"]    return res.strip()

   

以上就是玩转多功能QQ机器人【含ChatGPT实现】的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/315426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月5日 07:27:04
下一篇 2025年11月5日 07:31:32

相关推荐

  • OpenAI Python SDK:获取API响应头部的实用指南

    本教程详细介绍了如何通过OpenAI Python SDK获取API响应中的HTTP头部信息。针对标准client.chat.completions.create方法无法直接访问响应头的问题,我们将展示如何利用with_raw_response方法来获取原始响应对象,从而轻松提取包括速率限制在内的关…

    2025年12月14日
    000
  • Python OpenAI API:如何获取响应头以监控速率限制

    本文旨在指导开发者如何通过OpenAI Python库获取API响应的HTTP头部信息,特别是用于监控API速率限制。针对标准API调用不直接返回头部的问题,教程将详细介绍如何利用with_raw_response方法获取原始响应对象,进而访问并解析其中的HTTP头部,从而有效管理和理解API的使用…

    2025年12月14日
    000
  • python如何获取字典的所有键_python获取字典keys()的方法

    使用keys()方法获取字典键,返回动态的dict_keys视图对象,可实时反映字典变化,支持迭代与集合操作,相比列表更节省内存且高效。 在Python中,想要获取一个字典里所有的键,最直接、最符合Pythonic风格的做法就是使用字典自带的 keys() 方法。这个方法会返回一个特殊的“字典视图”…

    2025年12月14日
    000
  • 通过Python脚本执行psql命令,包含连接字符串和输入重定向

    本文详细介绍了如何使用Python的subprocess模块正确执行包含连接字符串和输入重定向(如 通过Python脚本执行外部命令的挑战 在python开发中,经常需要与外部命令行工具交互,例如执行数据库客户端(如psql.exe)进行数据导入或导出。subprocess模块是python中用于创…

    2025年12月14日
    000
  • cx_Oracle查询调试:如何查看实际执行的参数化SQL语句

    本文旨在指导如何在cx_Oracle中调试参数化SQL查询。我们将深入理解cx_Oracle如何安全地处理绑定变量,避免SQL注入,并介绍通过设置PYO_DEBUG_PACKETS环境变量来查看发送至数据库的实际数据包,从而验证查询语句和参数。此外,还将探讨查询无结果的常见原因,如遗漏数据获取操作或…

    2025年12月14日
    000
  • 如何在电脑上同时管理多个 Python 版本

    在开发不同项目时,经常会遇到需要使用不同 Python 版本的情况。比如一个老项目依赖 Python 3.7,而新项目用上了 Python 3.11。直接替换系统默认版本容易造成冲突。解决这个问题的关键是使用 Python 版本管理工具,让多个版本共存并按需切换。 使用 pyenv(推荐 macOS…

    2025年12月14日
    000
  • Python异步操作的链式调用:实现简洁的await级联

    本文探讨了在Python中如何实现异步函数的链式调用,特别是当一个异步操作的输出作为下一个异步操作的输入时。我们将对比传统的逐行await方式与更简洁的单行级联await表达式,并分析其优缺点,旨在提供一种清晰、高效的异步编程实践。 在异步编程中,我们经常会遇到需要连续执行多个异步操作的场景,其中后…

    2025年12月14日
    000
  • Python中基于相似度对字典条目进行分组:图论与最大团算法

    针对字典条目间的冗余相似性比较问题,本教程介绍了一种基于图论和最大团算法的优雅解决方案。通过为每个独特的相似度值构建一个图,并将字典键作为节点,相似条目间的边作为连接,我们可以利用networkx库高效地识别出具有相同相似度的最大分组(即最大团),从而将具有相同相似性分数的条目进行有效聚合,避免重复…

    2025年12月14日
    000
  • GTK2 Glade XML 文件到 GTK3 的迁移与转换指南

    本文旨在解决将GTK2.24 Glade XML用户界面定义迁移到GTK3兼容格式的挑战,尤其是在现代Glade版本不稳定时。我们重点介绍并详细阐述了官方推荐工具gtk-builder-convert的使用方法,帮助开发者高效、准确地完成UI文件升级,确保基于Python的应用程序能在GTK3环境下…

    2025年12月14日
    000
  • 解决VS Code Jupyter中ipykernel缺失问题:一份详尽的教程

    本文旨在解决在VS Code中使用Jupyter Notebook时常见的ipykernel包缺失错误。我们将深入探讨该问题的成因,并提供一系列诊断、安装及环境配置的专业解决方案,包括正确安装ipykernel、理解并利用Python虚拟环境,以及在VS Code中正确选择Jupyter内核,确保您…

    2025年12月14日
    000
  • 解决Jupyter Notebook中ipykernel缺失错误:一份综合指南

    在使用Jupyter Notebook或VS Code运行Python代码时,常会遇到“requires the ipykernel package”错误。这通常是由于Jupyter内核所选用的Python环境未安装ipykernel库,或选择了错误的Python解释器导致。本教程将详细指导如何正确…

    2025年12月14日
    000
  • python怎么修改全局变量_python全局变量修改方法

    答案:修改Python全局变量需区分可变与不可变类型,不可变类型在函数内修改必须用global关键字声明,而可变类型如列表、字典只需直接修改内容无需global;若对可变类型重新赋值则仍需global。为避免副作用和维护困难,推荐使用模块级变量、类封装或函数参数返回值等方式管理状态,提升代码可读性和…

    2025年12月14日
    000
  • 使用 Python 脚本执行带参数的 psql.exe 命令

    本文介绍了如何使用 Python 的 subprocess 模块来执行 psql.exe 命令,并向其传递连接字符串和 SQL 文件路径等参数。通过示例代码和注意事项,帮助读者解决在使用 Python 脚本调用 psql.exe 时可能遇到的问题,确保数据库备份恢复等操作能够顺利进行。 在 Pyth…

    2025年12月14日
    000
  • python怎么删除一个文件或目录_python文件与目录删除操作

    Python删除文件用os.remove(),删除空目录用os.rmdir(),非空目录用shutil.rmtree();需注意路径错误、权限不足、文件占用等问题,并建议结合try-except处理异常,使用pathlib或send2trash等模块提升安全性和用户体验。 Python要删除文件或目…

    2025年12月14日
    000
  • Python脚本中执行psql.exe并处理I/O重定向

    本教程探讨如何在Python脚本中正确执行带有参数和I/O重定向(如 问题背景与挑战 在python脚本中执行外部命令行工具时,尤其当命令包含i/o重定向(如从文件读取输入 psql.exe postgresql://user:pass@host:port/ < backup.sql 用户可能…

    2025年12月14日
    000
  • Python怎么编写一个装饰器_Python装饰器原理与实战开发

    Python装饰器核心是函数作为一等公民和闭包机制,通过@语法在不修改原函数代码的情况下为其添加新功能,如日志、权限控制、缓存等,提升代码复用性和可维护性。 Python装饰器,说白了,就是一种特殊函数,它能接收一个函数作为输入,然后给这个函数增加一些额外功能,最终返回一个全新的函数。它就像给你的老…

    2025年12月14日
    000
  • Python中NumPy计算加速:如何利用多进程避免数据拷贝瓶颈

    本文深入探讨了Python中利用多进程加速NumPy密集型计算时遇到的性能瓶颈。常见的process_map方法在处理大型NumPy数组时,由于频繁的数据拷贝导致效率低下甚至慢于单线程。教程将揭示这一问题根源,并提供一个高效的解决方案:利用multiprocessing.Manager实现数据共享,…

    2025年12月14日
    000
  • 使用 Pandas 高效关联多文件数据并提取特定信息

    本教程详细介绍了如何利用 Python 的 Pandas 库,高效地处理来自多个文本文件的关联数据。通过将文件内容加载到 DataFrame 中,并运用 merge 操作进行数据整合,实现 IP 地址、MAC 地址和端口信息的精确匹配与提取,最终生成结构化的输出结果,避免了传统文件处理的复杂性。 场…

    2025年12月14日
    000
  • Pytesseract在特定IDE中无法找到Tesseract的解决方案

    本文旨在解决Pytesseract在部分IDE(如PyCharm)中出现TesseractNotFoundError,而在其他IDE(如VS Code)中正常工作的问题。即使Tesseract OCR引擎已正确安装并存在于系统PATH中,此问题仍可能发生。核心解决方案是通过显式设置pytessera…

    2025年12月14日
    000
  • Python变量类型判断:isinstance() 的正确用法

    本文旨在解决Python中,尤其是在Django等框架下,判断变量所属模型或类型时常遇到的困惑。通过对比 type() is 运算符与 isinstance() 函数,我们将深入解析为何前者常导致判断失误,并明确指出 isinstance() 才是进行类型检查的规范且推荐方式,它能更准确地处理继承关…

    2025年12月14日
    000

发表回复

登录后才能评论
关注微信