使用Mirai框架搭建QQ机器人

个人搭建的博客:https://www.w4ke.cn/2021/09/14/Untitled/,欢迎大家来访问!

框架准备

前言

服务器操作系统: CentOS 8
ubuntu系统好像会出问题,不推荐使用ubuntu,搭建了三次全部失败,故此放弃。
服务器python版本:3.8.2

安装OpenJDK

yum install java-11-openjdk.x86_64 -y

这里就安装这个版本

安装MCL

Release
下载完之后直接cd进对应目录

sh mcl

使用Mirai框架搭建QQ机器人_第1张图片
可以登陆,完事,接下来配置python

下载python

使用wget下载Python-3.8.2包

wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz
xz -d Python-3.8.2.tar.xz
tar xvf Python-3.8.2.tar

Python-3.8.2安装到指定目录
编译安装时不要使用“make && make install”
一定要分两步,先make(编译),然后再 make install(编译安装)。
非root用户需使用sudo

1.创建安装目录

mkdir /usr/local/python3/

2.安装相应的依赖包

yum -y install zlib* zlib-devel
yum install -y openssl-devel

3.进入Python-3.8.2目录

cd Python-3.8.2

4.配置(指定安装目录,带上ssl使得python可以访问https)

./configure --prefix=/usr/local/python3 --with-ssl

5.编译

make

6.编译安装

make install

更换系统默认Python版本

备份默认python,注意不要删掉,删掉后会导致严重问题比如yum坏了。

mv /usr/bin/python /usr/bin/python.bak
mv /usr/bin/pip /usr/bin/pip.bak
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python

安装pip

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py

注意:用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本,如果是 Python3 则执行以下命令:

sudo python3 get-pip.py

安装对应python库

pip install graia-application-mirai==0.19.2

再放一些我自己要用的库(下次安装省得复制粘贴)

pip install requests python-dateutil datetime Pillow pathlib  cryptography pyOpenSSL certifi

安装过程到此就结束啦!接下来就是开发阶段,参考文档:
传送门

使用Python进行开发

由于 Graia Framework 是通过 mirai-api-http 插件写的SDK, 所以我们需要先安装这个插件.

安装

release里面下载一个, 然后放到 mcl 文件夹目录下的 plugins 文件夹内.

sh mcl

启动mcl.

配置

启动后会生成 config/net.mamoe.mirai-api-http/setting.yml 文件, 有关选项如下说明:

## 该配置为全局配置,对所有Session有效

# 可选,默认值为0.0.0.0
host: '0.0.0.0'

# 可选,默认值为8080
port: 8080

# 可选,默认由插件第一次启动时随机生成,建议手动指定
authKey: 12345678

# 可选,缓存大小,默认4096.缓存过小会导致引用回复与撤回消息失败
cacheSize: 4096

# 可选,是否开启websocket,默认关闭,建议通过Session范围的配置设置
enableWebsocket: true	# Graia Framework 作者在文档中建议打开

# 可选,配置CORS跨域,默认为*,即允许所有域名
cors:
  - '*'

## 消息上报
report:
# 功能总开关
  enable: false
  # 群消息上报
  groupMessage:
    report: false
  # 好友消息上报
  friendMessage:
    report: false
  # 临时消息上报
  tempMessage:
    report: false
  # 事件上报
  eventMessage:
    report: false
  # 上报URL
  destinations: []
  # 上报时的额外Header
  extraHeaders: {}

## 心跳
heartbeat:
  # 功能总开关
  enable: false
  # 启动延迟
  delay: 1000
  # 心跳间隔
  period: 15000
  # 心跳上报URL
  destinations: []
  # 上报时的额外信息
  extraBody: {}
  # 上报时的额外头
  extraHeaders: {}

输入一个authKey, 以及 Graia Framework 作者在文档中建议 enableWebsocket = true. 我们就完成配置了.

Hello World!

from graia.broadcast import Broadcast
from graia.application import GraiaMiraiApplication, Session
from graia.application.message.chain import MessageChain
import asyncio

from graia.application.message.elements.internal import Plain
from graia.application.friend import Friend

loop = asyncio.get_event_loop()

bcc = Broadcast(loop=loop)
app = GraiaMiraiApplication(
    broadcast=bcc,
    connect_info=Session(
        host="http://localhost:8080", # 填入 httpapi 服务运行的地址
        authKey="graia-mirai-api-http-authkey", # 填入 authKey
        account=1234567890, # 你的机器人的 qq 号
        websocket=True # Graia 已经可以根据所配置的消息接收的方式来保证消息接收部分的正常运作.
    )
)

@bcc.receiver("FriendMessage")
async def friend_message_listener(app: GraiaMiraiApplication, friend: Friend):
    await app.sendFriendMessage(friend, MessageChain.create([
        Plain("Hello, World!")
    ]))

app.launch_blocking()

Hello World 完成!

你可能感兴趣的:(python,python,Mirai,机器人)