文章目录
- 一、查看conda版本
- 二、查看系统版本
- 三、配置go-cqhttp
- 1.请切换至同一网络下扫码
- 2.打包Docker镜像
- 四、创建NoneBot环境
- 安装脚手架
一、查看conda版本
二、查看系统版本
uname -a
arch
getconf LONG_BIT
三、配置go-cqhttp
下载go-cqhttp
这里有不同版本的cqhttp,并且对每个版本都有介绍。但是大家可以看到有arm与adm
不同的版本,这两个啥关系呢?
严格来说,AMD和ARM没有任何关系
。AMD是桌面级处理器和桌面级GPU的生产厂商,而ARM是移动级处理器的生产厂商。AMD是目前业内唯一一个可以提供高性能CPU、高性能独立显卡GPU芯片、主板芯片组三大组件的半导体公司,AMD提出3A平台的新标志,在笔记本领域有“AMD VISION”标志的就表示该电脑采用3A构建方案(CPU、GPU、主板芯片组均由AMD制造提供)。ARM 主要涉及 IP 的设计和许可,而非生产和销售实际的半导体芯片。ARM向合作伙伴网络(包括世界领先的半导体公司和系统公司)授予 IP 许可证。这些合作伙伴可利用 ARM 的 IP 设计创造和生产片上系统设计,但需要向 ARM 支付原始 IP 的许可费用并为每块生产的芯片或晶片交纳版税。
这里我在官网上下载了俩(一个用在linux上一个用在windows上)
1.请切换至同一网络下扫码
在云端服务器进行上号的时候,会出现扫码登录,如果手机扫码登录之后出现这种情况有两种快速解决方案(1.将收集ip切至云服务器ip所在地 2.利用windows系统生成的device.json和session.token覆盖云端的这两个文件,因为这两个文件是QQ密钥信息)然后就可以登录成功了。
2.打包Docker镜像
到此为止咱的linux系统上就可以跑起来一个cqhttp了,那么为啥咱要将其打包进Docker镜像中呢?众所周知Docker随着近几年云原生的火爆也展露了头角
我们将程序打包进Docker容器内更加便于维护,更加便于迁移,当然打包需要同学有一定的Docker基础,感兴趣的小伙伴继续往下看。
第一步:将上述文件整理好之后,做到在本级目录能够运行go-cqhttp可执行文件,安装配置好Docker,我这里是买的腾讯云的服务器,自带了Docker,大家自己装一个,网上应该有教程。
第二步:编写Dockerfile镜像打包文件,这里的文件如下:
按步就班的做就好了,这里的意思就是将本级目录下用到的文件拷贝到小主机alpine内。
FROM alpine:latest
RUN mkdir "/app"
WORKDIR "/app"
COPY go-cqhttp /app/go-cqhttp
COPY device.json /app/device.json
COPY config.yml /app/config.yml
COPY session.token /app/session.token
COPY LICENSE /app/LICENSE
#ENTRYPOINT ["/user-srv"]
CMD ["/app/go-cqhttp"]
第三步:打包镜像
我这里起的镜像名字为cqhttps,如果最后结果像截图中展示的那样,就是打包成功了。
docker build -t cqhttps .
第四步:起一个Docker容器:
如图可以看到成功将go-cqhttp运行了起来。
docker run cqhttps
四、创建NoneBot环境
安装脚手架
pip install nb-cli
nb
接下来的步骤就与windows上搭建Nonebot2环境没太大差异了。
大工告成!成功创建项目后项目应包含以下文件
进入项目,创建一个插件
cd twoPyBot
from nonebot.adapters import Bot, Event
from nonebot.plugin import on_message#自定义回复词典
reply_dic = {'您吃了吗': '没吃呢~','早上好' : '早上好~','晚安' : '做个好梦',"你是谁":"我叫小Q","你的主人是谁":"秘密不告诉你。","你多大了":"秘密哦","介绍一下自己吧":"我叫小Q"
}#回复部分
# 检测到用户信息
reply = on_message(priority=100)
@reply.handle()
async def reply_handle(bot: Bot, event: Event):# 获取用户发送的信息user_msg = str(event.get_message()).strip()# 在字典内找键值对,找不到的话就回复后面那句话。reply_msg=reply_dic.get(user_msg,"")# 符合条件回复if reply_msg!="":await reply.finish(reply_msg) #进行回复并结束该事件
运行项目
nb run
至此大工告成!