浅语集 - golang
type: channel
link: https://www.rainss.cn/tag/golang/
items: E5sub续订机器人SQLite版

E5sub续订机器人SQLite版
type: item
date: 2020-12-31T18:58:00+00:00
description: 简介E5SubBot是一款用于E5续订的Bot软件，由于该项目使用的是MYSQL数据库，小内存服务器安装MYSQL显然不现实，唯一的选择只能是使用远程MYSQL，连接其他服务器上的数据库。基于此我对该软件（iyear/E5SubBot）进行简单的修改，替换E5SubBot中的mysql驱动github.com/go-sql-driver/mysql为github.com/mattn/go-sqlite3，并命名为E5SubBot For SQLite。同时在E5SubBot项目的基础上，使用gettext-go库将语言分离，实现语言国际化。目前E5SubBot For SQLite项目releases中提供的可执行二进制文件均由xgo工具CGO交叉编译而来。目前该项目中只提供简体中文和英文两种语言，如果需要其他语言可以修改language.go中的json文本添加新的语言对应的翻译，然后进行编译即可。若服务器内存足够建议安装docker版本，能够免去大部分繁琐的操作。部署在Docker上部署E5SubBot For SQLite# 创建用于存放数据的文件夹 mkdir /opt/e5sub # (重要)创建数据库文件 touch /opt/e5sub/e5sub.db # 下载配置文件 wget --no-check-certificate -O /opt/e5sub/config.yml https://raw.githubusercontent.com/rainerosion/E5SubBotForSQLite/master/config.yml.example # 修改配置文件中的信息 vim /opt/e5sub/config.yml # 在docker中启动运行 docker run -d -v /opt/e5sub/config.yml:/root/config.yml -v /opt/e5sub/e5sub.db:/root/e5sub.db --restart=always --name e5bot rainerosion/e5subbot-sqlite # 启动后你可以通过下面的命令查看启动情况 docker logs e5bot -f以Systemd守护进程方式部署下载必须的文件和配置并解压。wget https://github.com/rainerosion/E5SubBotForSQLite/releases/download/0.2.2/E5SubBot-linux-amd64.tar.gz # 解压文件 tar xvjf E5SubBot_linux_x64.tar.gz # 创建文件夹 mkdir /opt/e5sub # 移动文件 mv ./E5SubBot /opt/e5sub/E5SubBot # 添加执行权限 chmod a+x /opt/e5sub/E5SubBot # 编辑配置文件(文件内容请阅读部署配置) vim /opt/e5sub/config.yml编辑单元文件文件vim /etc/systemd/system/e5sub.service[Unit] Description=Telegram E5Sub Bot [Service] Type=simple WorkingDirectory=/opt/e5sub ExecStart=/opt/e5sub/E5SubBot Restart=always RestartSec=30 [Install] WantedBy=multi-user.target重载配置并启动服务# 重载配置文件 systemctl daemon-reload # 开机自启 systemctl enable e5sub # 启动服务 systemctl start e5sub自行编译可执行二进制文件下载项目源代码git clone https://github.com/rainerosion/E5SubBotForSQLite.git编译（需要安装golang环境）# Linux CGO_ENABLED=1 go build # 若以上命令在windows报错请使用下面的方式编译 go env -w CGO_ENABLED=1 go build配置文件在同目录下创建config.yml，编码为UTF-8。其中dbfile和lang是SQLite版本中新增的配置项。lang只在v0.2.2中有效。配置模板:bot_token: YOUR_BOT_TOKEN socks5: 127.0.0.1:1080 notice: "第一行\n第二行" admin: 66666,77777,88888 errlimit: 5 cron: "1 */3 * * *" bind…