go-cqhttp调用接口

本文介绍了如何使用Go-cqhttp调用接口,接入权限系统来管理机器人,包括智能聊天、戳一戳和新成员的权限控制。通过调用API并实现消息分发和命令解析,实现机器人功能的增强。
摘要由CSDN通过智能技术生成

调用接口

一、 概述

1、 简介

在我们实现了权限控制功能后,那么我们就在也不用担心机器人话太多,同时,平时又没时间,电脑又不在身边,而无法控制机器人了。那么,我们实现了权限的管理就好说了。然后,又出现一个问题了,我们应该如何利用这个权限系统,来帮助我们管理机器人呢?

这个大家马上就会知晓了,我会从如何控制智能聊天,以及控制戳一戳,再接入一些功能接口。来讲述,如何使用这个权限功能。

2、 接口

其次,我们还需要了解一下,什么是接口呢?

应用程序接口(API,Application Programming Interface)是基于编程语言构建的结构,使开发人员更容易地创建复杂的功能。它们抽象了复杂的代码,并提供一些简单的接口规则直接使用。

举一个例子:想想您的房子、公寓或其他住宅的供电方式,如果您想在您的房子里用电,只要把电器的插头插入插座就可以,而不是直接把它连接到电线上——这样做非常低效,而且对于不是电工的人会是困难和危险的。

同时,可以根据这张图来理解API的功能,其就是可以给客户端来提供数据的。

我们访问一些特定的API就可以得到我们想要的数据,这有一些较为好用的API提供方:

https://fastly.jsdelivr.net/gh/liuzhongkun1/imgStore@master/20229/xg4e9zwtlq1663477079145.png

下面,我将来告诉大家,API的使用方法

二、 接入权限系统

在调用API之前,我们先来学习一下,如何给戳一戳和智能聊天接入我们的权限管理系统,私聊的权限这里就不做展示了。大家可以根据这几次的文章,开发一个私聊的权限。

1、 智能聊天

我是这样设置的,为了防止机器人回的消息过多,只有艾特机器人的消息,它才会回,当然这是基于权限的基础上了,那么,如何接入呢?

请大家看代码:

if _.get("message_type") == "group" and "[CQ:at,qq=2786631176]" in _["raw_message"]:  # 即使用in来判断其是否为艾特机器人的消息
    # 制作群聊消息
    db = current_app.config["db"]  
    session = db.session
    group = session.query(Group).filter(db.and_(Group.qqId == _["group_id"], Group.isDetect)).first() # 同时这个群要支持机器人聊天,才会进入下一步
    if group and group.group2auth.chat:  # 如果允许聊天的话,就在群内开启聊天功能,这个是基于if的权限管理系统
        asyncio.run(GroupChatMes.handle_group(_))
        
# GroupChatMes.handle_group的内容
async def handle_group(resp):
    message = resp["raw_message"].replace("[CQ:at,qq=2786631176]", "")  # 获取发送过来的消息
    gid = resp["group_id"]  # 获取发送消息的群号
    # 处理群聊信息
    if message.strip() == "":
        await send(gid, "艾特我干啥?又不发消息,一巴掌呼死你![CQ:face,id=86][CQ:face,id=12]", "group")
        else:
            # 调用接口,来获取回复,同时这里使用了异步请求
            async with httpx.AsyncClient() as client:
                params = {
   
                    "key": "free",
                    "appid": 0,
                    "msg": message,
                }
                resp = await client.get("http://api.qingyunke.com/api.php", params=params)
                _ = resp.json()
            ret = _.get("content", "获取回复失败")
            await send(gid, ret, "group")  # 发送群组消息

2、 戳一戳

戳一戳,就回复,这个功能是有点烦人的,如果是讨厌这个机器人的话,那当然就需要进行权限的控制啦!废话不多说,直接上代码

if _.get("sub_type") == "poke":
    # 如果事件类型为戳一戳
    asyncio.run(GroupAndPri.click_event(_))

# GroupAndPri.click_event的内容
async def click_event(resp):
    uid = resp["user_id"]
    tid = resp["target_id"]
    if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveKenny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值