iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP+go-cqhttp实现QQ机器人
  • 53
分享到

PHP+go-cqhttp实现QQ机器人

机器人qq机器人phpgo 2023-02-23 19:02:34 53人浏览 佚名
摘要

实现思路使用 Go-cqHttp 监听QQ群聊信息,过滤掉心跳包后,使用正则判断是否触发了功能,如果触发了功能,调用第三方 api,然后将 API 返回的 JSON 数据整理后发送到群内。后期扩展理论只有有 API 即可开发功能风险项一切Q

实现思路

使用 Go-cqHttp 监听QQ群聊信息,过滤掉心跳包后,使用正则判断是否触发了功能,如果触发了功能,调用第三方 api,然后将 API 返回的 JSON 数据整理后发送到群内。

后期扩展

理论只有有 API 即可开发功能

风险项

一切QQ机器人均存在封号风险,后果自行承担

为什么使用 go-cqhttp?

因为 go-cqhttp 使用 API 方式接收或发送信息,二次开发较为简单

准备工作

  1. 一台24小时运行的服务器(需要有 Nginx + PHP 环境)

代码实现

<?php

include('Base.php');

class App extends Base
{
    // API地址
    protected $apiUrl = 'http://127.0.0.1:5700'; // go-cqhttp API地址
    protected $footerMsg = '%0a小小孩子们的blog:www.xxhzm.cn'; // 发送到群聊的广告信息
    // 对接的第三方 API 文档 api-m.com
    // 有能力可自行替换为你自己的 API

    public function __construct()
    {
        // 接收json格式字符串
        $qqMsg = json_decode(file_get_contents('php://input'), TRUE);

        if (!$qqMsg) {
            exit;
        }

        if ($qqMsg['post_type'] === 'meta_event') {
            exit;
        }

        // 判断是否用户私聊
        if ($qqMsg['message_type'] === 'private') {
            $this->sendPrivateMsg($qqMsg['user_id'], '请您在群聊中使用');
            exit;
        }

        switch ($qqMsg['raw_message']) {
            case '一言':
                $this->yiyan($qqMsg);
                break;
            case '古诗词':
                $this->poetry($qqMsg);
                break;
            case '菜单':
                $this->menu($qqMsg);
                break;
            case preg_match('/二维码生成 .*/', $qqMsg['raw_message']) === 1:
                $this->QRcode($qqMsg);
                break;
            case preg_match('/备案 .*/', $qqMsg['raw_message']) === 1:
                $this->icp($qqMsg);
                break;
            case preg_match('/whois .*/', $qqMsg['raw_message']) === 1:
                $this->whois($qqMsg);
                break;
            case preg_match('/ip .*/', $qqMsg['raw_message']) === 1:
                $this->ip($qqMsg);
                break;
        }
    }

    // 菜单
    protected function menu($qqMsg)
    {
        $this->sendGroupMsg($qqMsg['group_id'], "%0a一言%0a古诗词%0a二维码生成%0a备案%0awhois%0aip", $qqMsg['user_id']);
    }

    // 一言
    protected function yiyan($qqMsg)
    {
        $data = $this->geturl('https://v1.api-m.com/text/yiyan?type=hitokoto')['data'];
        $this->sendGroupMsg($qqMsg['group_id'], $data, $qqMsg['user_id']);
    }

    // 古诗词
    protected function poetry($qqMsg)
    {
        $data = $this->geturl('https://v1.api-m.com/text/yiyan?type=poetry')['data'];
        $this->sendGroupMsg($qqMsg['group_id'], str_replace(' ', '', $data), $qqMsg['user_id']);
    }

    // 二维码生成
    protected function QRcode($qqMsg)
    {
        $data = $this->geturl('https://v1.api-m.com/pic/QRcode?size=5&text=' . ltrim($qqMsg['raw_message'], '二维码生成 '))['data'];
        $this->sendGroupMsg($qqMsg['group_id'], '生成成功您的二维码为:%0a[CQ:image,file=' . $data . ']', $qqMsg['user_id']);
    }

    // icp备案
    protected function icp($qqMsg)
    {
        $data = $this->geturl('https://v1.api-m.com/domain/icp?domain=' . ltrim($qqMsg['raw_message'], '备案 '));

        // 判断是否请求成功
        if ($data['code'] === '-2') {
            $this->sendGroupMsg($qqMsg['group_id'], $data['msg'], $qqMsg['user_id']);
            return false;
        }

        $unitName = $data['data']['unitName'];
        $natureName = $data['data']['natureName'];
        $serviceLicence = $data['data']['serviceLicence'];
        $updateRecordTime = substr($data['data']['updateRecordTime'], 0, -9);

        $this->sendGroupMsg($qqMsg['group_id'], "查询成功%0a%0a主办单位名称:$unitName%0a主办单位性质:$natureName%0a网站备案/许可证号:$serviceLicence%0a审核时间:$updateRecordTime%0a", $qqMsg['user_id']);
    }

    // whois
    protected function whois($qqMsg)
    {
        $data = $this->geturl('https://v1.api-m.com/domain/whois?domain=' . ltrim($qqMsg['raw_message'], 'whois '));

        // 判断是否请求成功
        if ($data['code'] === '-2') {
            $this->sendGroupMsg($qqMsg['group_id'], $data['msg'], $qqMsg['user_id']);
            return false;
        }

        $DomainName = $data['data']['Domain Name']; // 域名
        $SponsoringReGIStrar = $data['data']['Sponsoring Registrar']; // 注册商
        $RegistrarURL = $data['data']['Registrar URL']; // 注册商URL
        $Registrant = $data['data']['Registrant']; // 注册人
        $RegistrantContactEmail = $data['data']['Registrant Contact Email']; // 注册邮箱
        $RegistrationTime = substr($data['data']['Registration Time'], 0, -9); // 注册时间
        $ExpirationTime = substr($data['data']['Expiration Time'], 0, -9); // 到期时间

        $this->sendGroupMsg($qqMsg['group_id'], "查询成功%0a%0a域名:$DomainName%0a注册商:$SponsoringRegistrar%0a注册商URL:$RegistrarURL%0a注册邮箱:$RegistrantContactEmail%0a注册人:$Registrant%0a注册时间:$RegistrationTime%0a到期时间:$ExpirationTime", $qqMsg['user_id']);
    }

    // ip
    protected function ip($qqMsg)
    {
        $data = $this->geturl('https://v1.api-m.com/network/ip?ip=' . ltrim($qqMsg['raw_message'], 'ip '))['data'];

        $begin = $data['begin'];
        $end = $data['end'];
        $address = $data['address'];

        $this->sendGroupMsg($qqMsg['group_id'], "查询成功%0aIP段起始:{$begin}%0aIP段结束:{$end}%0a归属地:{$address}", $qqMsg['user_id']);
    }

    // 在私聊中发送信息
    protected function sendPrivateMsg($userId, $msg)
    {
        $this->geturl($this->apiUrl . '/send_private_msg?user_id=' . $userId . '&message=' . $msg);
    }

    // 在群聊中发送信息
    protected function sendGroupMsg($groupId, $msg, $userId)
    {
        $this->geturl($this->apiUrl . '/send_group_msg?group_id=' . $groupId . '&message=' . '[CQ:at,qq=' . $userId . ']' . $msg . $this->footerMsg);
    }
}

$app = new App();

视频演示

https://www.bilibili.com/video/BV1Es4y1x7Qt/

开源地址

https://github.com/xxhzm/qqbot

--结束END--

本文标题: PHP+go-cqhttp实现QQ机器人

本文链接: https://www.lsjlt.com/news/197359.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP+go-cqhttp实现QQ机器人
    实现思路使用 go-cqhttp 监听QQ群聊信息,过滤掉心跳包后,使用正则判断是否触发了功能,如果触发了功能,调用第三方 API,然后将 API 返回的 json 数据整理后发送到群内。后期扩展理论只有有 API 即可开发功能风险项一切Q...
    99+
    2023-02-23
    机器人 qq机器人 php go
  • SpringBoot搭建go-cqhttp机器人的方法实现
    目录参考文档:一、搭建go-cqhttp机器人二、搭建SpringBoot环境1、HTTP通信2、WebScoket 通信三、补充百度一下搭建go-cqhttp,千篇一律都是采用py...
    99+
    2024-04-02
  • 新版nonebot,go-cqhttp搭建qq机器人保姆级教程
    前言 前段时间QQ进行了更新,所以导致了非手表协议扫码登陆报错的问题,不过好在大佬已经推出rc5版本的go-cqhttp,解决了这一头疼的问题 在开始之前,我需要说明一下,本文章是针对没有经验和基础的...
    99+
    2023-08-31
    golang 机器人 python nonebot 萌新源api
  • SpringBoot如何搭建go-cqhttp机器人
    这篇文章主要介绍“SpringBoot如何搭建go-cqhttp机器人”,在日常操作中,相信很多人在SpringBoot如何搭建go-cqhttp机器人问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Sprin...
    99+
    2023-06-22
  • 使用go-cqhttp搭建本地qq机器人 并实现发送信息案例(使用python)语言实现
    目录 1.go-cqhttp简介 2.案例介绍 3.下载go-cqhttp 4.配置安装 ①:下载之后我们可以将执行程序放在一个新建的文件夹中,然后双击执行该程序 直接点击确定执行  ②:然后双击执行该程序,会看到让我们选择一种通信方式,我...
    99+
    2023-09-09
    golang 机器人 开发语言
  • python QQ机器人
    通过第三方库qqbot来实现,pip install qqbot 直接安装就行脚本直接运行会弹出二维码,手机qq扫码登录即可通过#weather# city 来查询天气预报通过#study# key value 来进行学习,以json格式存...
    99+
    2023-01-31
    机器人 python QQ
  • PHP开发基于Mirai的QQ机器人(二)
    Miria 搭建 (二) 本文简介 本文讲解高效率QQ机器人框架Mirai。 本文发布于 Mirai V2 由于QQ机器人常被部署在服务器,所以我只讲解 Linux 的部署方式。 本文针对P...
    99+
    2023-09-04
    php 机器人 服务器
  • go-cqhttp智能聊天功能的实现
    目录智能聊天一、 概述二、 使用方法三、 接入程序四、 智能群聊智能聊天 一、 概述 我们将我们的qq聊天机器人的环境配置好后,其就可以开始接收消息啦!那么,我们除了可以接收特定的消...
    99+
    2024-04-02
  • go-cqhttp权限管理系统的实现代码
    目录权限管理系统一、 概述二、 创建表1、 创建2、 生成3、 映射三、 增删改查1、 群管理1.1 增加群1.2 删除群1.3 展示功能2、 权限管理2.1 展示权限2.2 修改权...
    99+
    2024-04-02
  • 怎么使用Python对接OpenAi API实现智能QQ机器人
    这篇文章主要介绍“怎么使用Python对接OpenAi API实现智能QQ机器人”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Python对接OpenAi API实现智能...
    99+
    2023-07-05
  • 怎么用Python开发QQ机器人
    这篇文章主要讲解了“怎么用Python开发QQ机器人”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python开发QQ机器人”吧! 前言 虽然该文最终是达到以pyt...
    99+
    2023-06-15
  • 使用Python对接OpenAi API实现智能QQ机器人的方法
    目录实践开始-实践篇第一实践继续-实践篇第二实践继续-实践篇第三简介尾述最近火热全文的ChatGPT,被很多人玩出了花,我们在Github上可以看到几个常见的逆向SDK包,这一篇我将...
    99+
    2023-03-21
    OpenAI ChatGPT 智能机器人
  • 超详细,教你用python语言实现QQ机器人制作教程
    目录前期准备1、机器人框架的下载和配置2、python的配置和安装具体实现1、发送信息(1)比如发送私聊信息(QQ用接收者的):(2)发送群聊信息(群号自己用一个):(3)当然不止发...
    99+
    2024-04-02
  • 如何在PHP中实现聊天机器人
    随着人工智能技术的不断发展和应用,聊天机器人正在越来越广泛地应用于各种应用场景。现在,很多网站和社交平台都会使用聊天机器人来实现自动回复等功能,这大大减轻了工作人员的工作压力,提升了用户的体验感。在本文中,我们将探讨如何在PHP中实现一个简...
    99+
    2023-05-22
    自然语言处理 PHP聊天机器人 消息推送机制
  • php如何实现qq分享
    这篇文章主要介绍php如何实现qq分享,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php实现qq分享的方法:首先创建一个PHP示例文件;然后接入QQ互联平台;最后通过“$("#zone").cl...
    99+
    2023-06-14
  • 教你使用python搭建一个QQ机器人实现叫起床服务
    目录前言具体实现1、定时发送信息2、让机器人陪女朋友聊天3、调用一些有趣的接口前言 上一篇文章介绍了怎么配置机器人框架,并且实现了一些简单的功能。 (发送私聊或者群聊信息、接收上报的...
    99+
    2024-04-02
  • 如何在QQ群中接入ChatGPT机器人
    本篇内容主要讲解“如何在QQ群中接入ChatGPT机器人”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在QQ群中接入ChatGPT机器人”吧!环境介绍基于nodejs。所需工具nodejs(...
    99+
    2023-07-05
  • 基于chatgpt开发QQ机器人原理分析
    目录一、概述1.1 技术栈1.2 项目结构二、开始部署三、启动mirai3.1 初始化mirai3.2 在mirai上登录QQ3.3 自动登录四、编写配置文件五、验证5.1 启动mi...
    99+
    2023-05-18
    chatgpt开发QQ机器人 chatgpt机器人
  • Javasocket通信模拟QQ实现多人聊天室
    目录一、socket通信基本原理二、用socket制作一个多人聊天室三、实现效果四、总结一、socket通信基本原理 socket 通信是基于TCP/IP ⽹络层上的⼀种传送⽅式,我...
    99+
    2024-04-02
  • PHP如何实现扫码登录QQ
    这篇文章主要介绍“PHP如何实现扫码登录QQ”,在日常操作中,相信很多人在PHP如何实现扫码登录QQ问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP如何实现扫码登录QQ”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作