个人搭建的博客:https://www.w4ke.cn/2021/09/14/Untitled/,欢迎大家来访问!
服务器操作系统: CentOS 8
ubuntu系统好像会出问题,不推荐使用ubuntu,搭建了三次全部失败,故此放弃。
服务器python版本:3.8.2
yum install java-11-openjdk.x86_64 -y
Release
下载完之后直接cd进对应目录
sh mcl
使用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,注意不要删掉,删掉后会导致严重问题比如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
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
pip install graia-application-mirai==0.19.2
再放一些我自己要用的库(下次安装省得复制粘贴)
pip install requests python-dateutil datetime Pillow pathlib cryptography pyOpenSSL certifi
安装过程到此就结束啦!接下来就是开发阶段,参考文档:
传送门
由于 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. 我们就完成配置了.
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 完成!