GreenOnions icon indicating copy to clipboard operation
GreenOnions copied to clipboard

一个Mirai的QQ机器人, 实现了搜图, RSS订阅转发, 根据PixivID下载原图, 翻译, setu等功能

GreenOnions

关于本项目

这是一个 mirai 平台的QQ机器人, 支持OneBot(使用Sora)和Mirai-Api-Http(使用Mirai-CSharp)双协议, 实现了搜图, 翻译, setu RSS订阅转发等功能

搜图和setu功能设计思路参考自 cq-picsearcher-bot

效果预览

到mirai社区查看

QQ群

功能介绍

  • [x] 1. SauceNao 搜图
  • [x] 2. ascii2d 搜图
  • [x] 3. trace.moe 搜番
  • [x] 4. lolicon setu
  • [x] 5. 群友 QuanELF图库 美图
  • [x] 6. 有道网页翻译和GoogleTranslateFreeApi 翻译
  • [x] 7. 随机复读, 连续复读, 镜像复读图片和倒带gif(可配置触发几率)
  • [x] 8. 新人入群/退群/被踢提醒(支持定义)
  • [x] 9. RSS订阅转发
  • [x] 10. 下载Pixiv原图(通过pixiv.cat)
  • [x] 11. 使用表情涂鸦游玩的井字棋功能 (其实是自己学习OpenCVsharp过程中搞出来的, 随手搬上了bot上, 但实际由于涂鸦完还要转发, 步骤太多所以下棋体验极差, 而且仅限64位系统可用)

项目优势:

  1. 带Windows图形界面, 没有开发基础也可以傻瓜式配置
  2. 多平台兼容, .Net6能装的平台都能运行(当然非Windows就没有图形界面了)
  3. 搜图功能可配置接入腾讯云鉴黄, 可以有效避免被内鬼炸号炸群, 尤其是Ascii2D乱开车的时候
  4. 搜图功能会尝试自动下载原图发送
  5. 支持一句命令多张setu, 支持限制QQ号调用次数和频率, 支持定时撤回, 支持配置返回语等
  6. 支持配置以合并转发的方式发送消息,防止不可描述的图片炸号
  7. RSS转发功能有控件配置,可方便添加删除和设置翻译

Windows食用方法(傻瓜版):

首先, 这里有两个平台, 先选择一个顺眼的, 别两个都弄

OneBot(Cq-Http)平台:

一、环境配置:

  1. 首先确保你的系统是 Windows 10 1607 或更高版本/Windows 8.1/Windows7 Sp1 并安装了 KB3063858 ( x64 | x86 ) 和 KB2533623 补丁
  2. 下载并安装 Microsoft Visual C++ 2015-2019 Redistributable ( x64 | x86 )
  3. .Net6官网 找到.NET Desktop Runtime下载对应自己系统架构的 Installers 版本安装

二、安装机器人框架(go-cqhttp)

  1. go-cqhttp/Release 下载 go-cqhttp (注意选对系统)
  2. 双击运行 go-cqhttp.exe 点击"是", 创建启动脚本
  3. 双击运行 go-cqhttp.bat
  4. 选择 2 正向 Websocket 通信 并回车, 随后关闭 cmd 窗口
  5. 打开生成的 config.yml 文件, 修改以下内容:
    uin: QQ号
    password: QQ密码
    post-format: array
    access-token: 'Alex1911'
    address: 127.0.0.1:33111
  6. 保存并关闭 config.yml , 随后重新双击运行 go-cqhttp.bat

三、安装本项目

  1. Release 下载本项目的发行版本, 找最新的 win-x86x64arm-windows.zip 下
  2. 解压到任意目录, 运行 GreenOnions.BotManagerWindow.exe
  3. 输入机器人QQ号和 config.yml 对应的 ip(127.0.0.1)、端口 (33111) 和 access-token, 点击连接到 cq-http

大功告成

Mirai-Api-Http平台:

一、环境配置:

  1. 首先确保你的系统是 Windows 10 1607 或更高版本/Windows 8.1/Windows7 Sp1 并安装了 KB3063858 ( x64 | x86 ) 和 KB2533623 补丁
  2. 下载并安装 Microsoft Visual C++ 2015-2019 Redistributable ( x64 | x86 )
  3. .Net6官网 找到.NET Desktop Runtime下载对应自己系统架构的Installers版本安装
  4. OpenJDK官网 下载 OpenJDK 尽量选择高版本的下
  5. 将OpenJDK解压到C:\Program Files\Java文件夹下, 呈C:\Program Files\Java\jdk-xx.x路径形式(x为版本号)
  6. 打开 算机属性-高级系统设置-高级-环境变量 在下方系统变量栏中新建一项 变量"JAVA_HOME" 值"C:\Program Files\Java\jdk-xx.x" (不包括引号,x为版本号)
  7. 编辑系统变量Path, 添加一项"%JAVA_HOME%\bin"

二、安装机器人框架(mirai-console-loader)

  1. mirai-console-loader/releases 下载MCL (尽量选择不带beta的最新版, .zip结尾的那个)
  2. 通过MCL安装 mirai-api-http
  3. 在MCL上运行一次 .\mcl 以确保配置文件成功创建, 随后按Ctrl+C退出
  4. 拷贝 mirai-api-http 底下的setting.yml模板到 MCL目录\config\net.mamoe.mirai-api-http\setting.yml 文件中
  5. 打开 MCL目录\config\net.mamoe.mirai-api-http\setting.yml 文件, 修改 http 和 ws 下的 host: 127.0.0.1 port: 33111 verifyKey: Alex1911
  6. 回到MCL窗口, 重新输入一次.\mcl 再输入/login 机器人QQ号 密码 登录

三、安装本项目

  1. Release 下载本项目的发行版本, 找最新的 win-x86x64arm-windows.zip 下
  2. 解压到任意目录, 运行 GreenOnions.BotManagerWindow.exe
  3. 输入机器人QQ号和 setting.yml 对应的 ip(host)、端口 (port) 和 VerifyKey, 点击连接到 mirai-api-http

大功告成

Linux食用方法(仅提供mirai-api-http教程)

(点击查看)

Ubuntu为例:

  1. 输入 sudo apt install unzip #安装解压zip的库
  2. 输入 sudo apt install openjdk-17-jdk-headless #安装Java依赖
  3. 安装 .Net 依赖
    3.1. 输入 wget https://packages.microsoft.com/config/ubuntu/00.00/packages-microsoft-prod.deb -O packages-microsoft-prod.deb #下载 .Net 包目录(00.00替换为自己系统的版本)
    3.2. 输入 sudo dpkg -i packages-microsoft-prod.deb
    #解压包目录
    3.3. (可选)输入 rm packages-microsoft-prod.deb #删除压缩包
    3.4. 输入 sudo apt-get update; \
    sudo apt-get install -y apt-transport-https && \
    sudo apt-get update && \
    sudo apt-get install -y aspnetcore-runtime-6.0 #安装
    #其他发行版详见: 在 Linux 上安装.Net

如果你不使用图片镜像, Gif倒放, 可以跳过步骤4、5(建议直接跳过, 准备砍掉了)

  1. 安装Mono图形库:
    4.1. 输入 sudo apt install gnupg ca-certificates
    4.2. 输入 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    4.3. 输入 echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
    4.4. 输入 sudo apt update
    4.5. 输入 sudo apt install mono-complete
    #其他Linux发行版详见: Mono
  2. 安装libgdiplus图形增强库:
    5.1. 输入 sudo apt update
    5.2. 输入 sudo apt install -y libgdiplus
    5.3. 输入 cd /usr/lib
    5.4. 输入 sudo chmod 777 libgdiplus.so
    5.5. 输入 ln -s libgdiplus.so gdiplus.dll
    5.6. 输入 sudo apt update
    5.7. 输入 sudo apt install -y --no-install-recommends libgdiplus libc6-dev
  3. 安装 mirai (这里的例子为 Mirai Console Loader)
    6.1. 到 mcl/Release 里复制最新的zip包下载地址
    6.2. 输入 wget 地址 #下载mcl 例如: wget https://github.com/iTXTech/mirai-console-loader/releases/download/v2.1.0/mcl-2.1.0.zip
    6.3. 输入 unzip mcl-1.2.2.zip #解压(文件名按下载到的来写)
    6.4. (可选:如果步骤7提示 Permission denied 请回来执行一次该步骤) 输入 sudo chmod 777 mcl #设置权限再重新执行步骤7
  4. 安装 mirai-api-http 通信插件
    7.1. 输入 ./mcl --update-package net.mamoe:mirai-api-http --channel stable-v2 --type plugin #(地址可能会随着更新改变, 以 mirai-api-http 中的说明为准)
    7.2. 输入 ./mcl #首次启动 mirai 创建配置文件
    7.3. 当配置完成后, 按Ctrl+C停止运行
    7.5. 到 mirai-api-http 复制setting.yml模板
    7.4. 输入 sudo vim config/net.mamoe.mirai-api-http/setting.yml #使用Vim(或其他工具)编辑配置文件
    7.5. 粘贴复制的模板并修改 http 和 ws 下的 host: 127.0.0.1 port: 33111 verifyKey: Alex1911
    7.6. 按Esc退出编辑模式并输入 :wq! 保存配置文件
  5. 登录机器人QQ:
    8.1. 输入 ./mcl 启动 mirai
    8.2. 输入 /login QQ号 密码 #登录机器人QQ
  6. 下载并安装本项目
    9.1. 到 GreenOnions/Release #复制对应自己系统的本项目下载链接
    9.2. 输入 wget 地址 #下载本项目压缩包
    9.3. 输入 unzip linux-x64.zip #解压本项目(文件名按下载到的来写)
    9.4. 输入 cd linux-x64 #进入解压后的目录
  7. 启动本项目并连接到 mirai
    10.5. 输入 dotnet GreenOnions.BotManagerConsole.dll #启动本项目
    10.6. 输入QQ号
    10.7. 输入IP: 127.0.0.1
    10.8. 输入端口: 33111
    10.9. 输入verifyKey: Alex1911

大功告成

至于为什么叫葱葱, 一是一开始是给某初音群用的, 叫这个名字可以打压某助手, 二是早期没自己开发的时候使用 cq-picsearcher-bot 的机器人叫竹竹, 就想找个类似的名字

短期计划(TODO):

1.yande.re随机色图
2.E-Hentai关键词色图

长期计划(GUDO):

1.把System.Drawing替换为其他~~更轻量~~的跨平台图形库(准备暂时先用CV), 取消Linux系统下对Mono的依赖
2.把内嵌浏览器(CefSharp)和井字棋(OpenCVsharp)分别搬出到独立的仓库里, 改为插件式加载, 取消强制依赖(毕竟没什么人用的功能占了500MB大小我自己也是多少带点...)
3.添加一个RSS监控功能(沙雕群友自己网络有问题整天怪在我头上)
4.为Console端添加命令配置属性和属性中文注释
5.通过消息配置属性
6.部分功能使用代理(而不需要全局代理?)
7.添加一个网站管理端?