基于go-cqhttp与Flask搭建定制机器人项目实战示例

目录
  • 前言
  • 安装
  • 发送消息
  • 接收消息
  • 后记

前言

许久之前用 Mirai 搭建了 QQ 机器人,不过因为云服务器到期了,QQ 机器人被 迫下线,现如今,可能是意犹未尽,今天就基于 go-cqhttp 与 Flask 搭建定制机器人;

安装

官方安装教程

go-cqhttp 下载地址

1、前往 go-cqhttp 的下载地址,选择自己需要的版本,下载的话,一般下载这两个中的其中一个:

具体看自己的系统配置,可以通过 arch 指令进行查看:

博主这里是 x86_64,所以选择下载第一个,也就是 go-cqhttp_linux_amd64.tar.gz

x86_64,x64,AMD64 可看做是同一个东西;

  • x86 是 intel 开发的一种32位指令集;
  • x86_64 是一种64位的指令集,x86_64x86 指令的超集,在 x86 上可以运行的程序,在 x86_64 上也可以运行,x86_64AMD 发明的,也叫 AMD64

现在用的 intel/amd 的桌面级 CPU 基本上都是 x86_64,与之相对的 arm 等都不是 x86_64

2、创建并打开 go-cqhttp 文件夹:

cd /opt && mkdir go-cqhttp

3、然后把自己下载好的压缩包上传到此处,或者直接通过 wget 指令将压缩包下载到此处;

wget url

4、解压压缩包:

tar -zxvf go-cqhttp_linux_amd64.tar.gz

5、赋予 go-cqhttp 权限:

chmod 777 go-cqhttp

6、第一次运行,生成配置文件:

./go-cqhttp

7、修改配置文件,具体参考官方配置文档

# go-cqhttp 默认配置文件
account: # 账号相关
  uin: 1233456 # QQ账号
  password: '' # 密码为空时使用扫码登录
  encrypt: false  # 是否开启密码加密
  status: 0      # 在线状态 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态
  relogin: # 重连设置
    delay: 3   # 首次重连延迟, 单位秒
    interval: 3   # 重连间隔
    max-times: 0  # 最大重连次数, 0为无限制
  # 是否使用服务器下发的新地址进行重连
  # 注意, 此设置可能导致在海外服务器上连接情况更差
  use-sso-address: true
heartbeat:
  # 心跳频率, 单位秒
  # -1 为关闭心跳
  interval: 5
message:
  # 上报数据类型
  # 可选: string,array
  post-format: string
  # 是否忽略无效的CQ码, 如果为假将原样发送
  ignore-invalid-cqcode: false
  # 是否强制分片发送消息
  # 分片发送将会带来更快的速度
  # 但是兼容性会有些问题
  force-fragment: false
  # 是否将url分片发送
  fix-url: false
  # 下载图片等请求网络代理
  proxy-rewrite: ''
  # 是否上报自身消息
  report-self-message: false
  # 移除服务端的Reply附带的At
  remove-reply-at: false
  # 为Reply附加更多信息
  extra-reply-data: false
  # 跳过 Mime 扫描, 忽略错误数据
  skip-mime-scan: false
output:
  # 日志等级 trace,debug,info,warn,error
  log-level: warn
  # 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留.
  log-aging: 15
  # 是否在每次启动时强制创建全新的文件储存日志. 为 false 的情况下将会在上次启动时创建的日志文件续写
  log-force-new: true
  # 是否启用 DEBUG
  debug: false # 开启调试模式
# 默认中间件锚点
default-middlewares: &default
  # 访问密钥, 强烈推荐在公网的服务器设置
  access-token: ''
  # 事件过滤器文件目录
  filter: ''
  # API限速设置
  # 该设置为全局生效
  # 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配
  # 目前该限速设置为令牌桶算法, 请参考:
  # https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin
  rate-limit:
    enabled: false # 是否启用限速
    frequency: 1  # 令牌回复频率, 单位秒
    bucket: 1     # 令牌桶大小
# 连接服务列表
servers:
  # HTTP 通信设置
  - http:
      # 服务端监听地址
      host: 127.0.0.1
      # 服务端监听端口
      port: 5700
      # 反向HTTP超时时间, 单位秒
      # 最小值为5,小于5将会忽略本项设置
      timeout: 5
      middlewares:
        <<: *default # 引用默认中间件
      # 反向HTTP POST地址列表
      post:
      #- url: '' # 地址
      #  secret: ''           # 密钥
      #- url: 127.0.0.1:5701 # 地址
      #  secret: ''          # 密钥
  # 正向WS设置
  - ws:
      # 正向WS服务器监听地址
      host: 127.0.0.1
      # 正向WS服务器监听端口
      port: 6700
      middlewares:
        <<: *default # 引用默认中间件
  - ws-reverse:
      # 反向WS Universal 地址
      # 注意 设置了此项地址后下面两项将会被忽略
      universal: ws://your_websocket_universal.server
      # 反向WS API 地址
      api: ws://your_websocket_api.server
      # 反向WS Event 地址
      event: ws://your_websocket_event.server
      # 重连间隔 单位毫秒
      reconnect-interval: 3000
      middlewares:
        <<: *default # 引用默认中间件
  # pprof 性能分析服务器, 一般情况下不需要启用.
  # 如果遇到性能问题请上传报告给开发者处理
  # 注意: pprof服务不支持中间件、不支持鉴权. 请不要开放到公网
  - pprof:
      # pprof服务器监听地址
      host: 127.0.0.1
      # pprof服务器监听端口
      port: 7700
  # LambdaServer 配置
  - lambda:
      type: scf # 可用 scf,aws (aws未经过测试)
      middlewares:
        <<: *default # 引用默认中间件
  # 可添加更多
  #- ws-reverse:
  #- ws:
  #- http:
database: # 数据库相关设置
  leveldb:
    # 是否启用内置leveldb数据库
    # 启用将会增加10-20MB的内存占用和一定的磁盘空间
    # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能
    enable: true

8、再次运行 ## go-cqhttp 扫码绑定机器人;

9、另起会话 screen -S sid10t-bot,将其在后台挂起;

发送消息

access_token = ''
url = f"http://127.0.0.1:port/send_private_msg?access_token={access_token}"
msg = "Hello World! --sid10t."
data = {
    "user_id": QQ Number,
    "message": msg
}
requests.post(url, data=data, timeout=5)

接收消息

这里的话不用别人的插件,自己写 Flask 监听端口,别问为什么不用其他的框架,比如 SpringBoot 之类的,麻烦,每次更新都要重新编译打包;

先写个 app.py 构建基本的 Flask 框架,同时监听自己的 port:

from flask import Flask, request
from api import keyword
app = Flask(__name__)
@app.route('/', methods=["POST", "GET"])
def get_data():
    if request.get_json().get('message_type') == 'private':
        uid = request.get_json().get('sender').get('user_id')
        msg = request.get_json().get('raw_message')
        keyword(msg, uid)
    if request.get_json().get('message_type')=='group':
        gid = request.get_json().get('group_id')
        uid = request.get_json().get('sender').get('user_id')
        msg = request.get_json().get('raw_message')
        keyword(msg, uid, gid)
    return "OK"
if __name__ =="__main__":
    app.run(debug=True, port=port)

然后再写一个 api.py 处理收集到的信息:

def keyword(msg, uid, gid=None):
    person_send_hello(uid)
def send_private_msg(uid):
    url = f"{BASEURL}/send_private_msg?access_token={ACCESS_TOKEN}"
    data = {
        "user_id": uid,
        "message": "Hello World! --sid10t."
    }
    try:
        requests.post(url, data=data, timeout=5)
    except:
        pass

后记

以上就是 基于 go-cqhttp 与 Flask 搭建定制机器人 的所有内容了,之后可以根据自己的需求添加功能,这里就不赘述了,更多关于go cqhttp Flask搭建定制机器人的资料请关注我们其它相关文章!

(0)

相关推荐

  • go-cqhttp权限管理系统的实现代码

    目录 权限管理系统 一. 概述 二. 创建表 1. 创建 2. 生成 3. 映射 三. 增删改查 1. 群管理 1.1 增加群 1.2 删除群 1.3 展示功能 2. 权限管理 2.1 展示权限 2.2 修改权限 四. 获取命令 1. 消息分发 2. 解析命令 权限管理系统 一. 概述 在写好我们的智能聊天功能之后,大家有没有感觉很烦呢?感觉这个机器人在群里面一直被艾特,一直被戳一戳.那么,我们有没有一种方法,使得其在群里面的权限可控呢? 或许大家看到这个问题就想到了一个方法,那就是通过pyth

  • Go语言使用钉钉机器人推送消息的实现示例

    学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,我们希望再部署开始之前和部署结束后推送钉钉消息 创建一个钉钉机器人 这个比较简单 添加完后会给你一个webhook就是我们发送消息的地址 推送消息 show code! func SendDingMsg(msg string) { //请求地址模板 webHook := `https://oapi.dingtalk.com/robot/send?access_token=04c381fc31944ad290

  • go-cqhttp环境配置及安装过程

    目录 go-cqhttp安装 一. 简介 1. 介绍 二. Windows 搭建 1. 下载 2. 配置 3. 登录 4. 监听消息 三. Linux 搭建 1. 下载 2. 配置 3. 登录 4. 开放端口 5. 监听消息 go-cqhttp安装 一. 简介 1. 介绍 官方文档地址:https://docs.go-cqhttp.org/ 各种框架都只是机器人的各种实现,每个框架之间接口都不通用,编程语言也不尽相同,想要开发一个自己的机器人,换一套框架所有的代码都要推到重来,所以亟需一个规范统

  • SpringBoot搭建go-cqhttp机器人的方法实现

    目录 参考文档: 一.搭建go-cqhttp机器人 二.搭建SpringBoot环境 1.HTTP通信 2.WebScoket 通信 三.补充 百度一下搭建go-cqhttp,千篇一律都是采用python搭建的,Java搭建根本没有.导致自己在搭建的时候可折磨了,出现了许多的问题.唯一能参考就只有官方文档.文档对小白也不是太友好,所以出这篇博客弥补一下Java 的搭建版本. 搭建环境: winndows 系统 + Java + Idea 2020.2 注意:本博客写的比较简单,存在很多不完善的地

  • Golang两行代码实现发送钉钉机器人消息

    废话不多说, 先看代码 创建一个钉钉机器人, 必须使用加签方式 1. 安装 ding 模块包 go get -u github.com/wanghuiyt/ding 2. 普通群消息使用 使用你自己生成的AccessToken和Secret d := ding.Webhook{AccessToken: "8c03f...", Secret: "SECef..."} _ = d.SendMessage("这是普通的群消息") 效果: 详细教程 创建

  • 基于go-cqhttp与Flask搭建定制机器人项目实战示例

    目录 前言 安装 发送消息 接收消息 后记 前言 许久之前用 Mirai 搭建了 QQ 机器人,不过因为云服务器到期了,QQ 机器人被 迫下线,现如今,可能是意犹未尽,今天就基于 go-cqhttp 与 Flask 搭建定制机器人: 安装 官方安装教程: go-cqhttp 下载地址: 1.前往 go-cqhttp 的下载地址,选择自己需要的版本,下载的话,一般下载这两个中的其中一个: 具体看自己的系统配置,可以通过 arch 指令进行查看: 博主这里是 x86_64,所以选择下载第一个,也就是

  • 基于Python如何使用AIML搭建聊天机器人

    借助 Python 的 AIML 包,我们很容易实现人工智能聊天机器人.AIML,全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由Richard Wallace和世界各地的自由软件社区在1995年至2002年发明的. AIML 是什么? AIML由Richard Wallace发明.他设计了一个名为 A.L.I.C.E. (Artificial Linguistics Internet Comp

  • 使用Python AIML搭建聊天机器人的方法示例

    AIML全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由RichardS. Wallace 博士和Alicebot开源软件组织于1995-2000年间发明创造的.AIML是一种为了匹配模式和确定响应而进行规则定义的 XML 格式. AIML的设计目标如下: AIML应当为大众所易学易会. AIML应当使最小的概念得以编码使之基于L.I.C.E支持一种刺激-响应学科系统组件. AIML应当兼容XM

  • 半小时实现基于ChatGPT搭建微信机器人

    目录 ChatGPT刷屏了 流程 注册 运行机器人程序 思考 ChatGPT刷屏了 相信大家最近被 ChatGPT 刷屏了,其实在差不多一个月前就火过一次,不会那会好像只在程序员的圈子里面火起来了,并没有被大众认知到,不知道最近是因为什么又火起来了,而且这次搞的人尽皆知. 想着这么火的 AI 完全可以好好玩一玩呀,于是就尝试着将 ChatGPT 接入到了个人微信中,实现在微信中调戏 AI. 先看几个聊天截图 还可以拉入到一个群,进行群聊,可以看到 ChatGPT 的训练数据相当还是比较旧的,有些

  • Flask搭建虚拟环境并运行第一个flask程序

    以下操作均在 windows 环境下进行,我使用的 Python 版本是 3.7.1 一.搭建虚拟环境 1.1 使用 pipenv 搭建虚拟环境 当然也可以使用 virtualenv,但是这个虚拟环境经常安装不上,这里给大家介绍另一种虚拟环境的安装方式,我使用的 cmd 命令进行下列的操作 安装pipenv: pip install pipenv 创建项目运行的目录: mkdir app 进入该目录: cd app 安装环境依赖:pipenv install 进入虚拟环境:pipenv shel

  • Docker compose一键安装mirai搭建QQ机器人最快操作方法

    目录 登录手机QQ 安装基本的插件 编辑配置文件 http协议设置 先用官方的脚本安装下docker curl -sSL https://get.docker.com/ | sh 安装docker-compose curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compo

  • Python Flask 搭建微信小程序后台详解

    前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个人觉得的微信小程序与后台的交互有点像ajax,所以有ajax开发经验的同学开发小程序应该很容易上手,因为本文着重讲解后台程序的搭建,所以,微信小程序的前端开发将一笔带过,有兴趣学习小程序前端语言的同学可移步网易云课堂的一套快速入门课程<轻松玩转微信小程序>. 分三步讲解微信小程序与Python后台

  • itchat-python搭建微信机器人(附示例)

    itchat是python开源第三方库,用于搭建微信机器人,几十行代码就能帮你实现自动的处理所有信息.比如,添加好友,搭建自动回复机器人,还原撤销信息,分析好友男女比例,地理分布情况,爬朋友圈做数据分析- 本文只是简单实现聊天机器人,想了解更多关于itchat的用法请参照:https://itchat.readthedocs.io/zh/latest/ 安装 pip install itchat 登录 itchat.auto_login(hotReload=True) 执行后会出现一个二维码,扫

  • Python基于TCP实现会聊天的小机器人功能示例

    本文实例讲述了Python基于TCP实现会聊天的小机器人功能.分享给大家供大家参考,具体如下: 一 代码 1.服务端程序 import socket words ={'how are you?':'Fine,thank you.', 'how old are you?':'38', 'what is your name?':'Dong FuGuo', "what's your name?":'Dong FuGuo', 'where do you work?':'SDIBT', 'bye

  • python flask搭建web应用教程

    python flask搭建web应用教程 1.flask介绍 2.所需工具和环境 3.搭建flaskApp 4.具体程序编写 5.综上 1.flask介绍 flask是一款十分轻量级的python Web应用框架,也被认为是一种微框架,我最初喜欢使用是因为flask中提供的那一套使用的注解跟我当时在公司中使用java开发的系统,里面使用的restful的框架jersey的用法比较像,都十分方便,简洁,等到我熟悉使用flask框架之后,就挺喜欢这种微框架了,使用方便,配置简单,也可以进行克重扩展

随机推荐