Ask and replay plugin for Mirai-Console

Overview

EntryLib

EntryLib 是一个基于 Mirai-Console 的插件,用于实现群词条、自定义回复或更多功能。

version

GitHub issues GitHub stars GitHub downloads

目录

声明

  • 本插件仅作为学习交流等使用,请勿用于盈利,否则法律后果自负。
  • 欢迎加入原神交流群:735209171
  • 如果在使用插件过程中遇到任何问题,请发送 Issues 询问
  • 插件开发初期,有许多期待完善之处,欢迎提交代码风格相似的 PR

可用console版本

  • 0.5.2
  • 1.0
  • 2.0
  • 2.7-M1

使用方法

  1. 请在 Mirai-Console 框架下使用本插件
  2. Release 下载最新版jar
  3. 放置在 Mirai 目录的 plugins 文件夹下
  4. 下载并安装 Sqlite3 ,添加至环境变量
  5. 运行 Mirai 并登录机器人
  6. 在机器人所在群里发送打开词条开关,若获得回复已启用词条库插件!,则安装成功

基本指令列表

"学习#[词条名]#[词条内容/回复项]#[匹配方式]"

作用:学习一个新的词条,记入数据库中
例:学习#词条库#欢迎使用词条库#精确

理想回复

格式说明

  1. 请使用#分割
  2. 匹配方式为可选项,包含精确模糊正则,默认为精确
  3. 如果使用正则,请在词条名处填写正则表达式,并可在内容中用$1,$2...代表分组截获
  4. 使用\进行转义,详见额外说明

"查看#[词条名]"

作用:查看词条内容
例:查看#词条库

理想回复

"删除#[词条名]"

作用:删除词条
例:删除#词条库

理想回复

"历史#[词条名]#[页码]"

作用:查看词条修改历史
例:历史#词条库

理想回复

格式说明

  1. 页码为可选项,只可填写数字,默认为1
  2. 因为长度限制,因此一页所显示的数量有限,详见配置项

"搜索#[关键词]#[页码]"

作用:检索与关键词有关的所有词条
例:搜索#词条

理想回复

格式说明

  1. 页码为可选项,只可填写数字,默认为1

"全部#[页码]"

作用:检索所有词条
例:全部#2

理想回复

格式说明

  1. 页码为可选项,只可填写数字,默认为1
  2. 若不填写页码,也可以直接使用全部作为命令

打开/关闭词条开关

作用:开启或关闭对应群聊的插件开关
例:打开词条开关

额外说明

  1. 本插件仅适用于群聊,且每个群聊独立拥有自己的词条库
  2. 本插件支持转义,可以使用\#来避免文本被解析为分隔符,也可以使用\\来避免右斜杠被识别为转义符
  3. 本插件的指令与回复均可自定义,详见配置项
  4. 如果将回复配置为空,插件将不会发送消息
  5. 拒绝以__MAIN_TABLE、开关指令、全部指令为词条名的修改与访问,插件将会检测并作出反馈
  6. 删除命令的默认权限为管理员以上才可使用,因为不同于更新为空,一旦词条被删除,它的所有历史备份均被删除,且不会再出现在搜索结果中

配置项

配置项位于Mirai\data\EntryLib\文件夹中

global.json

本配置项提供对插件全局的控制,包含以下项目:

  1. "view-mode":0表示需要输入查看指令才可查看词条内容,修改为1表示可以直接输入词条名来查看词条内容(此时插件将不会再反馈查看指令错误信息)
  2. "default-switch":1表示所有群都默认启用本插件,修改为0表示所有群都默认禁用本插件
  3. "switch-permission":1表示只有群管等级以上的成员才有权力修改插件开关(即使用命令打开/关闭词条开关),0表示所有成员都可以修改
  4. "history-max-height":3表示对于历史指令,每页仅返回3个记录,请确保本数值为正整数
  5. "search-max-height":5表示对于搜索指令,每页仅返回5个记录,请确保本数值为正整数
  6. "reply-mode":0表示机器人将普通回复,1表示机器人回复时会@发送指令的成员,2表示机器人回复时会引用指令消息
  7. "xxx-permission":包含各类命令的执行权限,1为管理员表示只有群管等级以上的成员才可以使用,0表示所有成员都可以使用
  8. "download-image":1表示缓存接收到的图片(仅限于开关开启的群),修改为0表示不缓存。缓存图片可以保证您的词条图片不会丢失,但同时也会增加磁盘占用,若不缓存仅能保证在一个tx服务器缓存刷新周期内图片不会丢失(这个周期一般较长)

input.json

本配置项提供用户键入指令的配置
实质为键值对,键为用户输入,值为指令识别参数,请对照基本指令列表进行查看
可以增加新的键值对来提供新的指令
默认内容请查看这里

output.json

本配置项提供插件回复项的配置
实质为键值对,键为条件状况,值为实际回复项
可以修改键值对来获得不同插件回复,但请勿增加或删除任意配置项
默认内容请查看这里
下面是一些参数解释:

  1. "learn"中$1表示词条名
  2. "view"中$1表示词条名,$2表示词条内容
  3. "(history,reply)"中$1表示词条名,$2表示词条历史,$3/$4表示 页码/总页数
  4. "(history,single)"表示单条历史格式,其中$1表示版本号,$2表示版本内容,$3表示修改时间

控制台

插件在 Windows 环境下运行时,将会创建系统托盘图标
双击图标或点击菜单可以进入插件 GUI 控制台
在控制台中可以方便地进行如下操作:

  • 编辑全局配置
  • 词条库导入导出

词条库导入导出

导入导出会根据一个 json 文件进行,这个文件的格式样例可以参考这里
导出时将会生成上述格式的 json 文件
导入时需要提供上述格式的 json 文件,同时可以选择三种覆盖方式:

  1. 不覆盖相同词条
  2. 合并相同词条
  3. 覆盖相同词条

数据库结构

插件采用 sqlite 作为数据库
每一个群独立建立数据库,保存为群号.db文件
每个数据库使用__MAIN_TABLE作为主表,储存了所有词条名
每个词条单独建立TABLE_[id]表,储存该词条信息

To-Do List

开发模块:

  • Mirai通信
  • 指令模块
  • 数据库模块
  • 用户OI
  • GUI
  • 语义分析

功能模块:

  • 语音解析

插件依赖

本插件依赖于以下模块:

  • mirai-console
  • sqlite-jdbc
  • fastjson
Comments
  • [BUG]整理数据库时出错

    [BUG]整理数据库时出错

    描述问题 Describe the bug

    2022-02-08 13:58:11 I/EntryLib: 开始整理数据库123456789.db
    2022-02-08 13:58:11 E/EntryLib: 无法创建新表TABLE_24,五秒后重试!(1/5)
    2022-02-08 13:58:11 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_23 already exists)
    2022-02-08 13:58:11 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1012)
    2022-02-08 13:58:11 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1024)
    2022-02-08 13:58:11 W/stderr:   at org.sqlite.core.DB.throwex(DB.java:989)
    2022-02-08 13:58:11 W/stderr:   at org.sqlite.core.NativeDB._exec_utf8(Native Method)
    2022-02-08 13:58:11 W/stderr:   at org.sqlite.core.NativeDB._exec(NativeDB.java:94)
    2022-02-08 13:58:11 W/stderr:   at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102)
    2022-02-08 13:58:11 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:293)
    2022-02-08 13:58:11 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:490)
    2022-02-08 13:58:11 W/stderr:   at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
    2022-02-08 13:58:11 W/stderr:   at java.base/java.util.TimerThread.run(Timer.java:506)
    2022-02-08 13:58:16 E/EntryLib: 无法创建新表TABLE_24,五秒后重试!(2/5)
    2022-02-08 13:58:16 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_23 already exists)
    2022-02-08 13:58:16 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1012)
    2022-02-08 13:58:16 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1024)
    2022-02-08 13:58:16 W/stderr:   at org.sqlite.core.DB.throwex(DB.java:989)
    2022-02-08 13:58:16 W/stderr:   at org.sqlite.core.NativeDB._exec_utf8(Native Method)
    2022-02-08 13:58:16 W/stderr:   at org.sqlite.core.NativeDB._exec(NativeDB.java:94)
    2022-02-08 13:58:16 W/stderr:   at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102)
    2022-02-08 13:58:16 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:293)
    2022-02-08 13:58:16 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:490)
    2022-02-08 13:58:16 W/stderr:   at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
    2022-02-08 13:58:16 W/stderr:   at java.base/java.util.TimerThread.run(Timer.java:506)
    2022-02-08 13:58:21 E/EntryLib: 无法创建新表TABLE_24,五秒后重试!(3/5)
    2022-02-08 13:58:21 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_23 already exists)
    2022-02-08 13:58:21 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1012)
    2022-02-08 13:58:21 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1024)
    2022-02-08 13:58:21 W/stderr:   at org.sqlite.core.DB.throwex(DB.java:989)
    2022-02-08 13:58:21 W/stderr:   at org.sqlite.core.NativeDB._exec_utf8(Native Method)
    2022-02-08 13:58:21 W/stderr:   at org.sqlite.core.NativeDB._exec(NativeDB.java:94)
    2022-02-08 13:58:21 W/stderr:   at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102)
    2022-02-08 13:58:21 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:293)
    2022-02-08 13:58:21 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:490)
    2022-02-08 13:58:21 W/stderr:   at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
    2022-02-08 13:58:21 W/stderr:   at java.base/java.util.TimerThread.run(Timer.java:506)
    2022-02-08 13:58:26 E/EntryLib: 无法创建新表TABLE_24,五秒后重试!(4/5)
    2022-02-08 13:58:26 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_23 already exists)
    2022-02-08 13:58:26 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1012)
    2022-02-08 13:58:26 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1024)
    2022-02-08 13:58:26 W/stderr:   at org.sqlite.core.DB.throwex(DB.java:989)
    2022-02-08 13:58:26 W/stderr:   at org.sqlite.core.NativeDB._exec_utf8(Native Method)
    2022-02-08 13:58:26 W/stderr:   at org.sqlite.core.NativeDB._exec(NativeDB.java:94)
    2022-02-08 13:58:26 W/stderr:   at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102)
    2022-02-08 13:58:26 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:293)
    2022-02-08 13:58:26 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:490)
    2022-02-08 13:58:26 W/stderr:   at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
    2022-02-08 13:58:26 W/stderr:   at java.base/java.util.TimerThread.run(Timer.java:506)
    2022-02-08 13:58:31 E/EntryLib: 无法创建新表TABLE_24,五秒后重试!(5/5)
    2022-02-08 13:58:31 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_23 already exists)
    2022-02-08 13:58:31 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1012)
    2022-02-08 13:58:31 W/stderr:   at org.sqlite.core.DB.newSQLException(DB.java:1024)
    2022-02-08 13:58:31 W/stderr:   at org.sqlite.core.DB.throwex(DB.java:989)
    2022-02-08 13:58:31 W/stderr:   at org.sqlite.core.NativeDB._exec_utf8(Native Method)
    2022-02-08 13:58:31 W/stderr:   at org.sqlite.core.NativeDB._exec(NativeDB.java:94)
    2022-02-08 13:58:31 W/stderr:   at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102)
    2022-02-08 13:58:31 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:293)
    2022-02-08 13:58:31 W/stderr:   at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:490)
    2022-02-08 13:58:31 W/stderr:   at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
    2022-02-08 13:58:31 W/stderr:   at java.base/java.util.TimerThread.run(Timer.java:506)
    2022-02-08 13:58:36 E/EntryLib: 无法完成123456789.db数据库整理工作,即将退出!
    

    bot启动时整理数据库,如果__MAIN_TABLE中的序号不连续,就会报上面这个错

    复现步骤 To Reproduce 复现问题的步骤: 1、数据库中已有序号为1,2,3,4,10,11,12,15,18,22的数据 2、启动bot,此时bot会将数据的序号整理为连续的正整数 3、随后报错TABLE_5已存在 4、重启bot 5、随后报错TABLE_6已存在

    截图 Screenshots 这个图是出现上面日志后的数据库:image 这个图是重启后的数据库: image

    环境 Environment

    • OS: Ubuntu 20.04
    • Mirai Core Version: 2.10.0
    • Mirai Console Version: 2.10.0
    • EntryLib Version: 1.3.1
    bug 
    opened by SnowMoonSS 4
  • 希望能够增加全局词库、跨群添加词条、跨群开启词库开关功能。

    希望能够增加全局词库、跨群添加词条、跨群开启词库开关功能。

    需求描述 Descibe the feature

    全局词库

    全局词库默认对Bot所在的全部群生效,该词库只能由Bot作者进行编辑(增加or删除),并且希望不在常规群内的[全部]指令内显示,能够通过另外的指令进行显示(或是直接在本地进行修改)。

    跨群添加词条、跨群开启词库开关

    跨群添加对应的群内词条、开启词库开关默认只能由Bot作者进行操作,可以通过指令前缀增加输入QQ群号等方式开启(或许)。

    “Bot作者”的定义: emmm就是在本地数据目录内 admin.json 内输入的QQ号。`

    这是否是一个突破性变化?Is this a breaking changes?

    • [Maybe]

    附加内容 Additional context
    感谢dalao的插件,非常实用~ 希望能在百忙之中对这些功能新建文件夹(bushi)。

    enhancement 
    opened by WINE92 4
  • [BUG]词条内容(不止是词条)没超过QQ发送字数限制,但是机器人发送的消息可能不在群聊显示

    [BUG]词条内容(不止是词条)没超过QQ发送字数限制,但是机器人发送的消息可能不在群聊显示

    描述问题 Describe the bug 给词条内容添加链接之后,若触发词条中内容带链接以及中文字数超过6个字(经过测试,可能不太严谨),则机器人发送的信息无法在群聊显示,下列图片有显示这个问题不仅仅出现在触发词条上 复现步骤 To Reproduce 复现问题的步骤:

    举个例子: 学习#测试#这里是单位介绍目录,第一期:https://www.bilibili.com/video/BV1cx411n7Qy 第二期:https://www.bilibili.com/video/BV1AW411E7Xh 第三期:https://www.bilibili.com/video/BV1PW411U7HY#精确#1000

    添加进词条后,触发关键字,控制台日志显示机器人发送了消息,但是群里中并没有显示机器人发送的消息,是qq的原因还是机器人的原因? Snipaste_2021-10-24_20-43-53 Snipaste_2021-10-24_20-43-43

    期望的效果 Expected behavior 无论链接还是什么文字,在没超过用户输入字数限制前机器人都应该发得出去

    截图 Screenshots

    Snipaste_2021-10-24_20-32-33 Snipaste_2021-10-24_20-32-45 Snipaste_2021-10-24_19-41-42

    环境 Environment Running MiraiConsole v2.8.0-M1, Frontend Terminal: version 2.8.0-M1, provided by Mamoe Technologies

    Permission Service: Built In Permission Service

    Plugins: Chat Command v0.5.0, MCL Addon v1.2.2, EntryLib v1.1.1, MiraiNative v2.0.0-beta.1

    bug 
    opened by shuiping233 3
  • 直接回复答案及可选at模式

    直接回复答案及可选at模式

    需求描述 Descibe the feature
    可选在回复关键词的时候不进行复述关键词所在句子,而是直接回复答案,另外建议就是艾特也设置为可选

    这是否是一个突破性变化?Is this a breaking changes?

    • [ ] 请选中本复选框表示这是一个突破性变化

    附加内容 Additional context
    您可以在这里添加任何内容

    question 
    opened by LemonPAKA 2
  • 启动MC时遇到整理数据库错误 [SQLITE_ERROR] SQL error or missing database

    启动MC时遇到整理数据库错误 [SQLITE_ERROR] SQL error or missing database

    23:41:15 [INFO] iTXTech Mirai Console Loader version 1.2.2-60c67fb 23:41:16 [INFO] Verifying "net.mamoe:mirai-console" v2.8.0-M1 23:41:16 [INFO] Verifying "net.mamoe:mirai-console-terminal" v2.8.0-M1 23:41:16 [INFO] Verifying "net.mamoe:mirai-core-all" v2.8.0-M1 23:41:17 [INFO] Verifying "org.itxtech:mcl-addon" v1.2.2 23:41:17 [INFO] Verifying "net.mamoe:chat-command" v0.5.1 23:41:17 [WARN] Package "net.mamoe:chat-command" requires "net.mamoe:mirai-console" version 2.0-RC. Current version is 2.8.0-M1 2021-10-10 23:41:19 I/main: Starting mirai-console... 2021-10-10 23:41:19 I/main: Backend: version 2.8.0-M1, built on 2021-09-22 17:49:01. 2021-10-10 23:41:19 I/main: Frontend Terminal: version 2.8.0-M1, provided by Mamoe Technologies 2021-10-10 23:41:19 I/main: Welcome to visit https://mirai.mamoe.net/ 2021-10-10 23:41:19 I/plugin: Successfully loaded plugin AntiLightappShare v0.13.6 2021-10-10 23:41:19 I/plugin: Successfully loaded plugin Chat Command v0.5.0 2021-10-10 23:41:19 I/plugin: Successfully loaded plugin MCL Addon v1.2.2 2021-10-10 23:41:19 I/plugin: Successfully loaded plugin EntryLib v1.1.1 2021-10-10 23:41:19 I/main: Prepared built-in commands: autoLogin, help, login, permission, status, stop 2021-10-10 23:41:19 I/AntiLightappShare: 反小程序分享插件载入 2021-10-10 23:41:19 I/MCL Addon: iTXTech MCL Version: 1.2.2-60c67fb 2021-10-10 23:41:19 I/EntryLib: 配置文件目录:E:\Downloads\data\EntryLib 2021-10-10 23:41:19 I/EntryLib: 开始升级数据库版本 2021-10-10 23:41:19 I/EntryLib: 数据库xxxxxxx.db已为最新版本! 2021-10-10 23:41:20 I/EntryLib: 词条插件已加载完成! 2021-10-10 23:41:20 I/main: 4 plugin(s) enabled. 2021-10-10 23:41:20 I/Mirai: Mirai 正在使用桌面环境. 如遇到验证码将会弹出对话框. 可添加 JVM 属性 mirai.no-desktop 以关闭. 2021-10-10 23:41:20 I/Mirai: Mirai is using desktop. Captcha will be thrown by window popup. You can add mirai.no-desktop to JVM properties (-Dmirai.no-desktop) to disable it. 2021-10-10 23:41:20 I/main: Auto-login xxxxxxx SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console... 2021-10-10 23:41:21 I/Bot.xxxxxxx: Loaded account secrets from local cache. 2021-10-10 23:41:21 I/Bot.xxxxxxx: Saved account secrets to local cache for fast login. 2021-10-10 23:41:21 I/Bot.xxxxxxx: Login successful. 2021-10-10 23:41:21 V/Bot.xxxxxxx: Event: BotOnlineEvent(bot=Bot(xxxxxxx)) 2021-10-10 23:41:21 I/Bot.xxxxxxx: Bot login successful. 2021-10-10 23:41:21 I/main: mirai-console started successfully. 2021-10-10 23:41:25 I/EntryLib: 数据库整理器开始执行整理任务 2021-10-10 23:41:25 I/EntryLib: 开始整理数据库xxxxxxx.db 2021-10-10 23:41:25 E/EntryLib: 无法创建新表TABLE_2,五秒后重试!(1/5) 2021-10-10 23:41:25 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_2 already exists) 2021-10-10 23:41:25 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1012) 2021-10-10 23:41:25 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1024) 2021-10-10 23:41:25 W/stderr: at org.sqlite.core.DB.throwex(DB.java:989) 2021-10-10 23:41:25 W/stderr: at org.sqlite.core.NativeDB._exec_utf8(Native Method) 2021-10-10 23:41:25 W/stderr: at org.sqlite.core.NativeDB._exec(NativeDB.java:94) 2021-10-10 23:41:25 W/stderr: at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102) 2021-10-10 23:41:25 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:227) 2021-10-10 23:41:25 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:392) 2021-10-10 23:41:25 W/stderr: at java.base/java.util.TimerThread.mainLoop(Unknown Source) 2021-10-10 23:41:25 W/stderr: at java.base/java.util.TimerThread.run(Unknown Source) 2021-10-10 23:41:30 E/EntryLib: 无法创建新表TABLE_2,五秒后重试!(2/5) 2021-10-10 23:41:30 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_2 already exists) 2021-10-10 23:41:30 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1012) 2021-10-10 23:41:30 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1024) 2021-10-10 23:41:30 W/stderr: at org.sqlite.core.DB.throwex(DB.java:989) 2021-10-10 23:41:30 W/stderr: at org.sqlite.core.NativeDB._exec_utf8(Native Method) 2021-10-10 23:41:30 W/stderr: at org.sqlite.core.NativeDB._exec(NativeDB.java:94) 2021-10-10 23:41:30 W/stderr: at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102) 2021-10-10 23:41:30 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:227) 2021-10-10 23:41:30 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:392) 2021-10-10 23:41:30 W/stderr: at java.base/java.util.TimerThread.mainLoop(Unknown Source) 2021-10-10 23:41:30 W/stderr: at java.base/java.util.TimerThread.run(Unknown Source) 2021-10-10 23:41:35 E/EntryLib: 无法创建新表TABLE_2,五秒后重试!(3/5) 2021-10-10 23:41:35 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_2 already exists) 2021-10-10 23:41:35 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1012) 2021-10-10 23:41:35 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1024) 2021-10-10 23:41:35 W/stderr: at org.sqlite.core.DB.throwex(DB.java:989) 2021-10-10 23:41:35 W/stderr: at org.sqlite.core.NativeDB._exec_utf8(Native Method) 2021-10-10 23:41:35 W/stderr: at org.sqlite.core.NativeDB._exec(NativeDB.java:94) 2021-10-10 23:41:35 W/stderr: at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102) 2021-10-10 23:41:35 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:227) 2021-10-10 23:41:35 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:392) 2021-10-10 23:41:35 W/stderr: at java.base/java.util.TimerThread.mainLoop(Unknown Source) 2021-10-10 23:41:35 W/stderr: at java.base/java.util.TimerThread.run(Unknown Source) 2021-10-10 23:41:40 E/EntryLib: 无法创建新表TABLE_2,五秒后重试!(4/5) 2021-10-10 23:41:40 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_2 already exists) 2021-10-10 23:41:40 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1012) 2021-10-10 23:41:40 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1024) 2021-10-10 23:41:40 W/stderr: at org.sqlite.core.DB.throwex(DB.java:989) 2021-10-10 23:41:40 W/stderr: at org.sqlite.core.NativeDB._exec_utf8(Native Method) 2021-10-10 23:41:40 W/stderr: at org.sqlite.core.NativeDB._exec(NativeDB.java:94) 2021-10-10 23:41:40 W/stderr: at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102) 2021-10-10 23:41:40 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:227) 2021-10-10 23:41:40 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:392) 2021-10-10 23:41:40 W/stderr: at java.base/java.util.TimerThread.mainLoop(Unknown Source) 2021-10-10 23:41:40 W/stderr: at java.base/java.util.TimerThread.run(Unknown Source) 2021-10-10 23:41:45 E/EntryLib: 无法创建新表TABLE_2,五秒后重试!(5/5) 2021-10-10 23:41:45 W/stderr: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (table TABLE_2 already exists) 2021-10-10 23:41:45 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1012) 2021-10-10 23:41:45 W/stderr: at org.sqlite.core.DB.newSQLException(DB.java:1024) 2021-10-10 23:41:45 W/stderr: at org.sqlite.core.DB.throwex(DB.java:989) 2021-10-10 23:41:45 W/stderr: at org.sqlite.core.NativeDB._exec_utf8(Native Method) 2021-10-10 23:41:45 W/stderr: at org.sqlite.core.NativeDB._exec(NativeDB.java:94) 2021-10-10 23:41:45 W/stderr: at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:102) 2021-10-10 23:41:45 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.rearrange(DatabaseAutoArranger.java:227) 2021-10-10 23:41:45 W/stderr: at com.billyang.entrylib.Database.DatabaseAutoArranger.run(DatabaseAutoArranger.java:392) 2021-10-10 23:41:45 W/stderr: at java.base/java.util.TimerThread.mainLoop(Unknown Source) 2021-10-10 23:41:45 W/stderr: at java.base/java.util.TimerThread.run(Unknown Source) 2021-10-10 23:41:50 E/EntryLib: 无法完成xxxxx.db数据库整理工作,即将退出! 2021-10-10 23:41:50 I/EntryLib: 数据库整理器已完成所有整理任务 2021-10-10 23:41:50 I/EntryLib: 数据库整理器已清理未使用的图片缓存:总计0个图片

    opened by soaarp 2
  • 数据库的结构的一些建议

    数据库的结构的一些建议

    最近有遇到过无法创建新表的情况,所以想问一下数据库能否改成以下结构 主表__MAIN_TABLE: tid(匹配词id), title(匹配词内容), match_mode(匹配模式)

    词表_SEARCH_TABLE: tid_id(匹配词id跟结果词id拼接,用于主键), tid(匹配词id), id(结果词id), content(结果词内容), ts(时间)

    question 
    opened by unlimitwhitenight 1
  • 无图形 Linux 界面下的运行问题

    无图形 Linux 界面下的运行问题

    在无图形的 Linux 终端环境下直接使用或会产生以下错误: No X11 DISPLAY variable was set, but this program performed an operation which requires it. 希望可以增加无界面的启动方式。

    可以使用的临时修复方法:

    sudo apt-get install Xvfb
    Xvfb :90 -ac 2>/dev/null &
    export DISPLAY=:90
    
    opened by Ag-elf 1
  • fix mirai-console moves file error

    fix mirai-console moves file error

    for #17

    更改内容:

    • 升级 mirai-console 插件至 2.9.2
    • 定义 EntryLib 类静态变量 DATABASES_FOLDER 与 IMAGES_FOLDER
    • PackageLoader 不再自动初始化,以解决插件数据文件夹被占用导致 mirai-console 迁移插件数据失败

    PS:注意备份词条数据库

    opened by Z233 0
  • [Feature Request] 定时发送

    [Feature Request] 定时发送

    需求描述 Descibe the feature
    是否考虑做个定时发送消息

    这是否是一个突破性变化?Is this a breaking changes?

    • [ x] 请选中本复选框表示这是一个突破性变化

    附加内容 Additional context
    如每隔10分钟, 每周五几点几分, 每天几点几分等

    enhancement 
    opened by JohnnyWoong 0
  • [Feature Request]学习新内容时,如果不加RANDOM参数,会被重置为1——也就是随机回复

    [Feature Request]学习新内容时,如果不加RANDOM参数,会被重置为1——也就是随机回复

    不清楚作者的意图,所以不知这算不算bug

    需求描述 Descibe the feature
    如果将词条的RANDOM属性设置为了0——也就是不随机回复,在给这条消息学习新的回复时(使用学习#测试#内容这样的指令),RANDOM属性会被重置为1——也就是随机回复。至于优先级和匹配方式,我还没试过…… 希望能在学习新内容时,能够保留原来的词条属性

    这是否是一个突破性变化?Is this a breaking changes?
    NO,不过,在添加新的词条内容时,这将更加方便

    enhancement 
    opened by SnowMoonSS 0
  • [BUG]清理缓存时会把已经加入词条库的语音缓存给删掉

    [BUG]清理缓存时会把已经加入词条库的语音缓存给删掉

    描述问题 Describe the bug 使用方法一添加的语音(方法一,将要发送的语音(只能是amr格式)放入语音缓存文件夹中,然后使用包含语音文件名的 Mirai 码构造一条语音并使用命令将其加入词条库。语音文件名最好是英文与数字),每次清理的时候都会把这些语音清理掉。 2022-02-19 13:37:18 I/EntryLib: 数据库整理器已清理未使用的图片缓存:总计29个语音

    复现步骤 To Reproduce 复现问题的步骤:

    1. 通过方法一将语音文件放入语音缓存文件夹中;
    2. 添加词条库
    3. 每次自动整理都会出现这个问题

    环境 Environment

    • OS: [e.g. Windows 10]
    • Mirai Core Version: [e.g. 2.10.0]
    • Mirai Console Version: [e.g. 2.10.0]
    • EntryLib Version: [e.g. 1.3.1]
    bug 
    opened by PoiSuKi 1
Releases(1.3.2)
Owner
Bill Yang
老年ACMer,田中吹。
Bill Yang
:package: Gradle/Maven plugin to package Java applications as native Windows, Mac OS X, or GNU/Linux executables and create installers for them.

JavaPackager JavaPackager is a hybrid plugin for Maven and Gradle which provides an easy way to package Java applications in native Windows, Mac OS X

Francisco Vargas Ruiz 665 Jan 8, 2023
Maven plugin to help creating CHANGELOG by keeping one format and solving merge request conflicts problem by extraction of new CHANGELOG entries to seperate files.

keep-changelog-maven-plugin CHANGELOG.md is one of the most important files in a repository. It allows others to find out about the most important cha

Piotr Zmilczak 22 Aug 28, 2022
HopLa Burp Suite Extender plugin - Adds autocompletion support and useful payloads in Burp Suite

HopLa ?? All the power of PayloadsAllTheThings, without the overhead. This extension adds autocompletion support and useful payloads in Burp Suite to

Synacktiv 522 Dec 24, 2022
Ghidra Wasm plugin with disassembly and decompilation support

Module to load WebAssembly files into Ghidra, supporting disassembly and decompilation. This plugin borrows loader functionality from this repo: https

Garrett Gu 54 Nov 22, 2022
The best plugin to protect anarchy servers and mc servers in general against op attacks.

AdminSecure The best plugin to protect anarchy servers and mc servers in general against op attacks How does it work? When the server detects a player

PK2_Stimpy 3 Sep 2, 2021
Ghidra Plugin for Texas Instrument CC 8051 SOC's especially CC1110 and CC2510

Texas Instruments CCxxxx Ghidra CPU Plugin Ghidra Plugin for Texas Instrument CC 8051 core SOC's especially CC1110 and CC2510 This helps to name the d

null 6 Dec 22, 2022
maven plugin for making chmod +x jar files

To use it, add a plugin to your pom like <!-- You need to build an exectuable uberjar, I like Shade for that --> <plugin> <groupId>org.apache.mave

Brian McCallister 113 Dec 8, 2022
Launch4j Maven Plugin

Launch4j Maven Plugin

Lukasz Lenart 301 Dec 29, 2022
A BurpSuite plugin for BBRF

bbrf-burp-plugin What's BBRF? The Bug Bounty Reconnaissance Framework (BBRF) is intended to facilitate the workflows of security researchers across mu

Pieter 19 Jun 22, 2022
Flutter plugin to listen to the process text intent stream.

Flutter Process Text Plugin Show some ❤️ and ⭐ the repo Why use Flutter Process Text? Flutter Process Text Plugin is known for : Flutter Process Text

Divyanshu Shekhar 14 Jul 1, 2022
AspectJ Maven Plugin

AspectJ Maven Plugin Overview This plugin weaves AspectJ aspects into your classes using the AspectJ compiler ajc. Typically, aspects are used in one

null 19 Dec 9, 2022
Flutter plugin to listen to the process text intent stream.

Flutter Process Text Plugin Compatibility ✅ Android ❌ iOS (active issue: iOS support) Show some ❤️ and ⭐ the repo Why use Flutter Process Text? Flutte

Devs On Flutter 14 Jul 1, 2022
This simple Android Studio plugin includes keyboard shortcuts for many common actions.

Hotkeys This simple Android Studio plugin includes keyboard shortcuts for many common actions. Features • Build process • Contribute • License Feature

SACHIN KASARADDI 14 Apr 26, 2022
A simple but helpful fight plugin with rank support

RankFight A simple but helpful fight plugin with rank support HighLights PlceholderAPI Support %rankfight_rank% %rankfight_credit% %rankfight_shopCred

贺兰星辰 5 Nov 20, 2021
Source code of Trend's Manhunt plugin

Trend's Manhunt This is the official repository of my Manhunt plugin. Contribution You are allowed to contribute, but NOT to yoink all of my plugin co

flpae 1 Oct 19, 2022
A Flutter plugin to extract waveform data from an audio file suitable for visual rendering.

just_waveform This plugin extracts waveform data from an audio file that can be used to render waveform visualisations. Usage final progressStream = J

null 53 Dec 4, 2022
GMC-Tools - Plugin with basic tools for Minecraft server administrator

GMC-Tools - Plugin with basic tools for Minecraft server administrator. Currently we do not support configuration files and we do not recommend using this plugin on production servers.

GamesMC Studios 4 Jan 14, 2022
Googleads-mobile-flutter - A Flutter plugin for the Google Mobile Ads SDK

Google Mobile Ads for Flutter This repository contains the source code for the Google Mobile Ads Flutter plugin, which enables publishers to monetize

Google Ads 251 Jan 2, 2023
QuickShell is an Eclipse plugin to use Java JShell inside the Eclipse IDE.

QuickShell is an Eclipse plugin to use Java JShell (REPL) inside Eclipse IDE. JDK 9+ is not installed on your system? No worries, you can still use Qu

Nilesh Khaire 8 Oct 3, 2022