223333 / EVEBot

QQ Bot for EVE Online / EVE Online QQ机器人

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

EVEBot

✨ EVE Online QQ机器人 ✨

license

机器人不要用主QQ号!机器人不要用主QQ号!机器人不要用主QQ号!
有随时被封号的风险

我并不会 Python ,赶鸭子上架才写的这个 Bot ,所以看了代码不要高血压,并在这里感谢所有提供帮助和指点的人!

感谢开源框架 NoneBot2go-cqhttp ,没有你们就没有这个 Bot 。

目录

功能

### 基本命令
# 显示帮助
.help / .帮助
# 查攻略(攻略文件需提前编写)
.a / .gl / .攻略 <关键字>
# 列出所有 .攻略 命令可用的关键字
.list
# 列出所有 .攻略 命令可用的关键字
.攻略 list
# 列出匹配关键字的所有游戏内物品
.search / .搜索 <关键字>
# 吉他物价查询
.jita / .jt / .吉他 <物品名>
.jita / .jt / .吉他 <物品名>*<数量>
# 查物品价格走势图
.his / .history / .历史 <物品名>
# 查询物品所属物品组中的所有物品价格
.suit <物品名>
# 得到匹配关键字物品名的中英文翻译
.tr / .tran / .翻译 <关键字>
# 从zkillboard网获得人物信息
.kb / .zkb <name>
# 翻译中文星域/星座/星系名到英文
.map / .地图 <星域/星座/星系名>

### 管理员命令
# 绑定物品的别名,比如绑定MTU到移动式牵引装置,方便查价
.bind / .绑定 <别名>,<物品名>
# 解绑别名
.unbind / .解绑 <别名>
# 设置最低损失ISK,以方便km播报过滤价值过低的km
.limit / .限制 <数字>
# 热加载攻略文件(EVEBot\src\plugins\cmd\cmd.json),文件更改时重新加载,所属命令(.攻略 <关键字>)
.load / .加载
# 禁用/启用该成员的所有机器人指令
.ban / .unban <QQ号>

以上只列出主要命令,要查询所有命令,请运行机器人并说 .help ,或浏览所有插件

所有攻略关键字都可以作为单独的命令来使用,攻略文件为 EVEBot\src\plugins\cmd\cmd.json ,请按照 json 格式编写

注意:攻略文件中的命令不要和已有命令冲突,否则会导致已有命令失效(可能)

命令外功能:

  • km播报
  • 每日维护后服务器上线自动提醒
  • 新人入群欢迎

Linux 部署指南

go-cqhttp

打开 go-cqhttp/config.yml

account/uin 中填入机器人QQ号,登录时会显示扫码登陆(提示:终端开大一点,防止二维码显示不全)

servers/ws-reverse/universal 中填入 ws://127.0.0.1:8808/onebot/v11/ws/

go-cqhttp 目录中执行:

chmod +x go-cqhttp

NoneBot2

安装 NoneBot2 前需要在服务器上安装 openssl 和 python3

以 CentOS 7 为例,安装 openssl 和 python3

先安装 1.1.1 版本的 openssl ,过低版本导致 python3 使用不了 ssl 模块

不要安装 3.0 以上版本

https://www.openssl.org/source/

tar -zxf openssl-1.1.1o.tar.gz
cd openssl-1.1.1o
./config --prefix=/opt/openssl-1.1.1o --openssldir=/opt/openssl-1.1.1o/openssl
make
make install

echo "/opt/openssl-1.1.1o/lib" >> /etc/ld.so.conf
ldconfig -v

在你的 Linux 发行版中安装 python3 的最新版本

https://www.python.org/downloads/

# yum安装的python3版本过低,故不使用yum安装

yum groupinstall -y "Development tools"
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install -y libffi-devel

wget https://www.python.org/ftp/python/3.10.5/Python-3.10.5.tgz
tar -zxf Python-3.10.5.tgz
cd Python-3.10.5

修改 Modules/Setup ,取消以下内容的注释:

OPENSSL=/opt/openssl-1.1.1o
_ssl _ssl.c \
    -I$(OPENSSL)/include -L$(OPENSSL)/lib \
    -lssl -lcrypto

Python-3.10.5 中运行:

./configure
make && make install

# 不要创建python3到python的软链接,因为yum软件依赖python2

安装后更新 pip3 和更换 pip3 的软件源

python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装 NoneBot2 :

# pip3是python3的包管理工具,安装python3自带pip3
pip3 install requests
pip3 install httpx
pip3 install websockets
pip3 install python-dateutil
pip3 install matplotlib
pip3 install nonebot2
pip3 install nonebot-adapter-onebot
pip3 install nonebot-adapter-cqhttp
pip3 install nonebot_plugin_apscheduler

修改 \EVEBot\EVEBot\.env.prod 中的 SUPERUSERS ,此为QQ机器人管理员账户

修改 \EVEBot\EVEBot\src\plugins\tool\__init__.py 中的监听群号和监听联盟ID

EVEBot\src\plugins\tool\icon 文件夹不存在的问题

解决方案1

icon 文件夹为:

https://developers.eveonline.com/resource

中的 Invasion_*_Renders.zip 文件

解压该文件,把 Renders 重命名为 icon

建议icon 文件夹下所有图片都修改为 128*128px ,修改方法在 Tools 目录 README.md 中,或自行 Google 修改文件尺寸的方法,注:不修改文件尺寸也没问题,但是发送的带图聊天消息可能起来很大

解决方案2

也可以不用 icon 文件夹,转而使用 ESI Image Server ,能否获取到图片与你机器人服务器和ESI服务器连接状态有关(国内网络你懂的)

启用方法:

\EVEBot\EVEBot\src\plugins\tool\__init__.py 修改:

tool.esi_image_server = True

Tools 工具目录

获取 ID.yaml 文件

目录中所需的 typeIDs.yaml

https://developers.eveonline.com/resource

sde-TRANQUILITY.zip 解压后的 \sde\fsd\typeIDs.yaml

typeIDs.yaml 放到 yaml_tool.py 同目录下,并在此目录中运行:

python3 yaml_tool.py

得到 ID.yaml 文件,把 ID.yaml 文件放到 EVEBot\src\plugins\data 目录下。

Linux 运行

建议使用 screen 软件分屏操作:

yum install -y screen
# screen 常用命令
screen -S <会话名> # 创建一个叫<会话名>的会话
# 离开会话 Ctrl+a d # 依次按 a d
screen -ls # 列出当前存在的会话
screen -r <会话ID/会话名> # 连接到<会话ID/会话名>
screen -S <会话ID/会话名> -X quit # 删除会话

go-cqhttp

screen -S cq

进入 go-cqhttp 目录:

chmod +x go-cqhttp
./go-cqhttp

Ctrl+a d 切换到主界面

关闭:screen -r cq 切换回会话后,按 Ctrl+c 可以关闭程序

NoneBot2

screen -S bot

进入 EVEBot 目录:

python3 bot.py

Ctrl+a d 切换到主界面

关闭:screen -r bot 切换回会话后,按 Ctrl+c 可以关闭程序

如果按 Ctrl+c 后没反应,可以根据画面中类似于以下的提示,Ctrl+a d 切回主界面执行 kill -9 23333 命令强行终止该进程

01-01 01:00:00 [INFO] uvicorn | Finished server process [23333]

BUG

更新版本后提示插件已存在错误

关闭机器人,在 EVEBot 目录中执行该命令后启动机器人:

find ./ -name __pycache__ | xargs rm -rf

关于历史价格查询,图片中文乱码问题

由于使用了 simhei 字体,Linux中默认没有,需要自行下载,因为各 Linux 发行版安装方法不同,所以需要自行搜索安装。

性能

启动速度慢是因为 data 插件要载入存储所有物品名的数据文件,吉他查价(.jita)和 .search 命令都依赖这个插件,如果关闭,请注释 EVEBot\bot.py 中的 nonebot.load_plugin('src.plugins.data') 并注释掉依赖于这个插件的所有插件。

关闭 NoneBot2 用时很长也与该插件的开启有关。

data 插件会占用约 390 MB 内存,其他插件占用约等于无。

About

QQ Bot for EVE Online / EVE Online QQ机器人

License:GNU General Public License v3.0


Languages

Language:Python 99.1%Language:Dockerfile 0.8%Language:Batchfile 0.1%Language:Shell 0.0%