【QQ机器人】简易部署教程

By e2hang at 2025-03-27 • 0人收藏 • 54人看过

一、使用条件

QQ机器人是基于QQ自身环境,部署在QQ群聊,QQ频道中,可以主动/被动回复人类的机器人。由于QQ机器人需要随叫随到,这里建议部署在服务器中。


下面是制作QQ机器人所需要的步骤:

(一)申请QQ机器人:

    进入q.qq.com,输入自己的信息,创建一个新的机器人。

        1、沙盒配置

            取决于你的使用环境,如果希望在QQ群聊中使用,请务必成为群主/管理员才可以启动沙盒环境;如希望在频道中使用请选择相应的频道。本教程主要面向在群聊中开发QQ机器人。

        2、开发设置

            这里最重要的是AppID和AppSecret,分别填入ID和Secret从而让服务器绑定此机器人。下方IP白名单则需要输入你服务器(无论本地/网络)的ip地址。

a0e7982820274f5499a0cea131601a6.png

        3、指令设置

            如需要参数传递,可以选择指令设置,当然本教程不包含指令设置,如需要请到QQ机器人官方Github的文档中查看。https://github.com/tencent-connect/botpy、https://bot.q.qq.com/wiki

(二)配置环境

        1、选择合适的语言

            QQ机器人提供了三种可用于编写机器人的语言,这里推荐使用python。

        2、服务端配置环境(本文是在windows环境下、其它系统如linux也一致)

            (1)安装python——可以使用搜索引擎,这里不再叙述

            (2)设置环境变量,去cmd中测试python,如果没有报错则安装成功

            (3)安装官方的botpy包:pip install qq-botpy

            (4)在有需要的地方使用 import botpy

        3、配置config.yaml

            example中给出了原版的config.example.yaml,若使用请把名称变为config.yaml,其中需要配置(重点)的是机器人ID以及Secret(自动分配的密码)

(三)机器人代码

image.png

# -*- coding: utf-8 -*-
import os

import botpy
from botpy import logging, BotAPI

from botpy.ext.command_util import Commands
from botpy.message import Message
from botpy.ext.cog_yaml import read

test_config = read(os.path.join(os.path.dirname(__file__), "config.yaml"))

_log = logging.get_logger()


@Commands("你好", "hello")
async def hello(api: BotAPI, message: Message, params=None):
    _log.info(params)
    # 第一种用reply发送消息
    await message.reply(content=params)
    # 第二种用api.post_message发送消息
    await api.post_message(channel_id=message.channel_id, content=params, msg_id=message.id)
    return True


@Commands("晚安")
async def good_night(api: BotAPI, message: Message, params=None):
    _log.info(params)
    # 第一种用reply发送消息
    await message.reply(content=params)
    # 第二种用api.post_message发送消息
    await api.post_message(channel_id=message.channel_id, content=params, msg_id=message.id)
    return True


class MyClient(botpy.Client):
    async def on_at_message_create(self, message: Message):
        # 注册指令handler
        handlers = [
            hello,
            good_night,
        ]
        for handler in handlers:
            if await handler(api=self.api, message=message):
                return


if __name__ == "__main__":
    # 通过预设置的类型,设置需要监听的事件通道
    # intents = botpy.Intents.none()
    # intents.public_guild_messages=True

    # 通过kwargs,设置需要监听的事件通道
    intents = botpy.Intents(public_guild_messages=True)
    client = MyClient(intents=intents)
    client.run(appid=test_config["appid"], secret=test_config["secret"])

·这是官方给出的机器人被@后所做出的反应

async def on_at_message_create(self, message: Message):
        _log.info(message.author.avatar)
        if "sleep" in message.content:
            await asyncio.sleep(10)
        _log.info(message.author.username)
        await message.reply(content=f"机器人{self.robot.name}收到你的@消息了: {message.content}")

这里给出了{message.content}以及f"",有需要的开发者可以根据相关代码开发自己需要的功能

(四)扩展功能

        1、调整botpy中client.py,api.py

            在安装目录(Python/Lib)中找到已安装的botpy文件夹,可以根据自己的需求修改api.py,client.py,具体的修改方法在文档中都有提到,api.py中也有相关的注释

        2、增加插件

            与正常的python一样,通过pip install以及安装包可以实现python的扩展功能

(五)需要关注的点

        1、注意是在QQ频道还是在QQ群聊中使用,群聊请下载demo中的_group_文件

        2、关于上传文件:需要富媒体支持,并且①不支持过大的图片上传②不支持文件(如pdf)上传

        3、建议通过命令行部署,在性能不佳的服务器上有崩溃的概率


如希望部署/部署有问题,请在评论区分享问题


附:社长的机器人

ea2c783766f19861e6536cfe46e7764.jpg

登录后方可回帖

登 录
信息栏
欢迎来到滑稽社论坛!注册会员即可发帖!

你好啊

Loading...