Code Monkey home page Code Monkey logo

kookbc's Introduction

Hi there! I'm SNWCreations.

Tips: My full user name is "Summer Night Wind". "Creations" is additional suffix. :D

Nice to meet you!

I'm a Java programmer. But I'm not professional.

I just like make Minecraft plugins. You can see them in "repositories" tab!

I like GNU project. Most of my projects use GNU project licenses authorized.

Connect with me:

snwcreations snwcreations

Languages and Tools:

git java python

Stats!

Here is my stats.

Metrics

snwcreations

 snwcreations

Ashutosh's github activity graph

kookbc's People

Contributors

deechael avatar flowpeakfish avatar huanmeng-qwq avatar snwcreations avatar xiaoace6716 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

kookbc's Issues

KookBC 在调用 com/sun/jna/platform/win32/Kernel32 发生 NoClassDefFoundError

您期望得到什么

返回 Process 的 pid

实际得到什么

NoClassDefFoundError

重现错误的步骤

更换到 KookBC 0.27.0 版本启动调用此方法就会报错
经过测试使用旧版本的 KookBC 0.26.8 并不会报错

报错日志

image

相关信息

  • KookBC 版本: 0.27.0
  • JKook API 版本: 3e89cde
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本):
  • Java 版本: 8
  • 操作系统 (及其版本): Windows 10 专业工作站版 22H2

实体对象的数据在更新时不安全

您期望得到什么

在实体的数据被更新时,任何尝试读取数据的操作将被暂停,以避免读取到的数据是旧的。

实际得到什么

根据源代码,数据更新时没有对实体对象上锁,故在更新期间的实体数据是不安全的,此时若发生读取,将得到旧数据。

重现错误的步骤

报错日志

相关信息

  • KookBC 版本: 0.26.13
  • JKook API 版本: 0.48.2
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本): None
  • Java 版本: None
  • 操作系统 (及其版本): None

指派 @SNWCreations 修复,工作在 perf/update-safely 分支进行。

Paragraph 无法初始化

您期望得到什么

使用 Paragraph

实际得到什么

报错,无法正常运行

重现错误的步骤

73               .addModule(
                        new SectionModule(
                                new Paragraph(
                                        2,
                                            goldInfo
                                        ),
                                null,
                                null

                        )
                )
[16:31:00] [Event Executor/ERROR]: Unexpected exception while we attempting to execute command from remote.
snw.jkook.command.CommandException: Something unexpected happened.
	at snw.kookbc.impl.command.CommandManagerImpl.exec(CommandManagerImpl.java:427) ~[CommandManagerImpl.class:0.26.11]
	at snw.kookbc.impl.command.CommandManagerImpl.executeCommand0(CommandManagerImpl.java:256) ~[CommandManagerImpl.class:0.26.11]
	at snw.kookbc.impl.network.ListenerImpl.executeCommand(ListenerImpl.java:209) ~[ListenerImpl.class:0.26.11]
	at snw.kookbc.impl.network.ListenerImpl.event0(ListenerImpl.java:148) ~[ListenerImpl.class:0.26.11]
	at snw.kookbc.impl.network.ListenerImpl.event(ListenerImpl.java:102) ~[ListenerImpl.class:0.26.11]
	at snw.kookbc.impl.network.ListenerImpl.lambda$executeEvent$0(ListenerImpl.java:63) ~[ListenerImpl.class:0.26.11]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.IllegalArgumentException: Section module only accepts plain-text, kmarkdown and paragraph.
	at snw.jkook.util.Validate.isTrue(Validate.java:28) ~[Validate.class:0.26.11]
	at snw.jkook.message.component.card.module.SectionModule.<init>(SectionModule.java:36) ~[SectionModule.class:0.26.11]
	at cn.miars.kookbot.command.InfoCommand.onCommand(InfoCommand.java:73) ~[InfoCommand.class:?]
	at snw.kookbc.impl.command.CommandManagerImpl.lambda$executeCommand0$4(CommandManagerImpl.java:257) ~[CommandManagerImpl.class:0.26.11]
	at snw.kookbc.impl.command.CommandManagerImpl.exec(CommandManagerImpl.java:421) ~[CommandManagerImpl.class:0.26.11]
	... 8 more

相关信息

  • KookBC 版本: latest
  • JKook API 版本: latest
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本): 卡尔酱
  • Java 版本: 8
  • 操作系统 (及其版本): MacOS latest

ContextModuleSerializer中的deserialize存在错误

您期望得到什么

ContextModuleSerializer中的deserialize能够正确反序列化

实际得到什么

MODULE_MAP获取null

重现错误的步骤

任意包含context类型的模块卡片消息

这个错误是由 33b9c62 导致的

相关信息

  • KookBC 版本: latest
  • JKook API 版本: latest
  • Java 版本: java8
  • 操作系统 (及其版本): win10

命令 root name 中存在的 Markdown 标记字符导致 /help 输出格式在 KOOK 显示混乱

您期望得到什么

命令 root name 中的 Markdown 标记字符被视为普通字符输出。

实际得到什么

如题

重现错误的步骤

  1. 随便注册一个 root name 带 Markdown 标记字符的 JKook 命令 (以 SNWCreations/MCPingBot 的 mcping:about 为例)
  2. 在 KOOK 中对机器人执行 /help
  3. 在 Android 端发现格式异常,期望显示 /mcping:about: 无简介,得到: /mcpingabout 无简介

报错日志

无异常抛出

相关信息

  • KookBC 版本: 0.26.13
  • JKook API 版本: 0.48.2
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本): MCPingBot by SNWCreations, API 0.33
  • Java 版本: 8
  • 操作系统 (及其版本): Linux

此问题暂时仅疑似在移动端出现。

找不到类,但是出现了NullPointerException

这个问题不是在我的设备上发生的,它原本由社区成员 Mores.#3552 提交。

您期望得到什么

在找不到类时直接抛出 ClassNotFoundException 。

实际得到什么

抛出了 ClassNotFoundException ,但是其最终原因是操作值为 null 的 byte[] 导致的 NullPointerException

重现错误的步骤

初步分析得:

在一个 JKook 插件中调用一个不存在于 KookBC 而插件本身又未打包的第三方库方法即可触发。

报错日志

https://img.kookapp.cn/assets/2023-03/oifoEduGiw0tq0fy.png

相关信息

  • KookBC 版本: 0.26.13
  • JKook API 版本: 0.48.2
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本): 未知
  • Java 版本: 未知
  • 操作系统 (及其版本): 未知

此异常存在于 Mixin 支持的相关代码中,故指派 @huanmeng-qwq 处理。

将常用文档放在 README

他们极其容易忽略KookBC/docs里的未在README,md里标出的内容,是否需要将这些内容也顺便写在README,md当中。

实验性功能: 对 HTTP 请求超速的处理提供多种策略

它原本由 @Lonely-LY 提出。

您理解并明白,您确认此 Issue 符合下列要求:

  1. 请求添加的功能是为了增强 KookBC 的能力,如可配置性。
  2. 请求添加的功能 不是对 JKook API 的功能扩充 ,如果是,请到 JKook 仓库 提交 Issue ,而不是在这里提交。
  3. 当您的 Issue 不满足上述要求或有其他合理原因时,您的 Issue 将被关闭。

您期望添加什么

改变 KookBC 在存在 HTTP 请求超速时的行为。如让请求线程暂停一小段时间而非抛出异常以结束请求。

设计思路

创建一个接口,命名为 Policy ,其大致声明如下:

public interface Policy {
  void overLimit(HttpAPIRoute route, long nextLimitResetTime);
}

然后提供对应的实现,有 2 种:
AbortRequestPolicy, WaitUntilResetPolicy
前者的 overLimit 方法直接抛出异常,后者使用 nextLimitResetTime 方法作为参数调用 Thread.sleep 。

KookBC 在被 Linux nohup 命令包装时无法工作

它原本由社区成员 Lonely#6788 提交。

您期望得到什么

KookBC 在无控制台模式下正常工作。

实际得到什么

KBCClient#loop 方法出现被依赖库忽略的报错,然后程序自动调用 shutdown 后结束。

重现错误的步骤

  1. 使用 Linux nohup 命令运行 KookBC (格式: nohup java -jar kookbc.jar &)
  2. 异常复现,日志会出现在当前路径的 nohup.out 文件

报错日志

[20:37:14] [Main Thread/ERROR]: Failed to read console input
java.io.IOException: Bad file descriptor
	at java.io.FileInputStream.readBytes(Native Method) ~[?:?]
	at java.io.FileInputStream.read(FileInputStream.java:276) ~[?:?]
	at java.io.BufferedInputStream.read1(BufferedInputStream.java:282) ~[?:?]
	at java.io.BufferedInputStream.read(BufferedInputStream.java:343) ~[?:?]
	at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:270) ~[?:?]
	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:313) ~[?:?]
	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:188) ~[?:?]
	at java.io.InputStreamReader.read(InputStreamReader.java:177) ~[?:?]
	at java.io.BufferedReader.fill(BufferedReader.java:162) ~[?:?]
	at java.io.BufferedReader.readLine(BufferedReader.java:329) ~[?:?]
	at java.io.BufferedReader.readLine(BufferedReader.java:396) ~[?:?]
	at net.minecrell.terminalconsole.SimpleTerminalConsole.readCommands(SimpleTerminalConsole.java:180) ~[k.jar:0.26.13]
	at net.minecrell.terminalconsole.SimpleTerminalConsole.start(SimpleTerminalConsole.java:143) ~[k.jar:0.26.13]
	at snw.kookbc.impl.KBCClient.loop(KBCClient.java:277) ~[k.jar:0.26.13]
	at snw.kookbc.Main.main1(Main.java:163) ~[k.jar:0.26.13]
	at snw.kookbc.Main.main0(Main.java:125) ~[k.jar:0.26.13]
	at snw.kookbc.Main.main(Main.java:44) ~[k.jar:0.26.13]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at snw.kookbc.LaunchMain.lambda$launch$1(LaunchMain.java:176) ~[k.jar:0.26.13]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]

相关信息

  • KookBC 版本: 0.26.13
  • JKook API 版本: 0.48.2
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本): 无
  • Java 版本: 17
  • 操作系统 (及其版本): Linux 4.18 amd64 (由 CODING 的 Cloud Studio 提供)

ImageElement 的 circle 属性不工作

您期望得到什么

ImageElement的circle
让图片变成圆形

实际得到什么

并没有效果,还是方的

重现错误的步骤

                            new ImageElement(
                                    user.getAvatarUrl(true),
                                    user.getName(),
                                    true
                            ),

相关信息

  • KookBC 版本: 最新
  • JKook API 版本: 最新
  • 您使用的 Bot 的相关信息 (如 名称、作者、版本): 卡尔酱
  • Java 版本: 8
  • 操作系统 (及其版本): macos 13

子命令失效了

您期望得到什么

子命令应该正确注册

实际得到什么

子命令直接无效了

重现错误的步骤

代码:
image

在使用新版命令系统时:
image

添加-Dkookbc.cloud=false关闭新版命令系统,正常:
image

相关信息

  • KookBC 版本: 0.27.3
  • JKook API 版本: 0.49.2

重复的类引起的LinkageError错误

您期望得到什么

正确启动

实际得到什么

无法启动

重现错误的步骤

1.插件包含重复的类

报错日志

[23:43:46] [Main Thread/ERROR]: Unexpected situation happened during the execution of main method!
 java.lang.LinkageError: loader constraint violation: when resolving method 'void snw.kookbc.impl.network.ws.Connector.<init>(snw.kookbc.impl.KBCClient)' the class loader snw.kookbc.impl.launch.LaunchClassLoader @65ab7765 of the current class, snw/kookbc/impl/network/ws/OkhttpWebSocketNetworkSystem, and the class loader 'app' for the method's defining class, snw/kookbc/impl/network/ws/Connector, have different Class objects for the type snw/kookbc/impl/KBCClient used in the signature (snw.kookbc.impl.network.ws.OkhttpWebSocketNetworkSystem is in unnamed module of loader snw.kookbc.impl.launch.LaunchClassLoader @65ab7765, parent loader 'bootstrap'; snw.kookbc.impl.network.ws.Connector is in unnamed module of loader 'app')
        at snw.kookbc.impl.network.ws.OkhttpWebSocketNetworkSystem.start(OkhttpWebSocketNetworkSystem.java:37) ~[kookbc-0.27.3.jar:0.27.3]
        at snw.kookbc.impl.KBCClient.startNetwork(KBCClient.java:367) ~[kookbc-0.27.3.jar:0.27.3]
        at snw.kookbc.impl.KBCClient.start(KBCClient.java:230) ~[kookbc-0.27.3.jar:0.27.3]
        at snw.kookbc.Main.startClient(Main.java:174) ~[kookbc-0.27.3.jar:0.27.3]
        at snw.kookbc.Main.start(Main.java:142) ~[kookbc-0.27.3.jar:0.27.3]
        at snw.kookbc.Main.main0(Main.java:63) ~[kookbc-0.27.3.jar:0.27.3]
        at snw.kookbc.Main.main(Main.java:51) ~[kookbc-0.27.3.jar:0.27.3]
        at snw.kookbc.LaunchMain.lambda$launch$2(LaunchMain.java:236) ~[kookbc-0.27.3.jar:0.27.3]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]

相关信息

  • KookBC 版本: 0.27.3
  • Java 版本: 17
  • 操作系统 (及其版本): Window 10

accessory与accessory Mode 应该是Nullable的

您期望得到什么

在SectionModule里传入的accessory与accessory Mode 应该是Nullable的

实际得到什么

但是它报错了
https://paste.ubuntu.com/p/8pmGptF4WT/

重现错误的步骤

new SectionModule(new Paragraph(3, Arrays.asList(/* some MarkdownElement...... */)), null, null))

相关信息

  • KookBC 版本:0.26.11
  • JKook API 版本:0.48.2
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本):
  • Java 版本:Java 8
  • 操作系统 (及其版本):Windows 10

禁用插件时未注销其注册的YAML序列化器

您期望得到什么

当一个插件被禁用时,应当注销其注册的YAML序列化器 (通过 ConfigurationSerialization 类注册的)

实际得到什么

代码中未注销序列化器。

重现错误的步骤

报错日志

相关信息

  • KookBC 版本: 0.27.2
  • JKook API 版本: 0.49
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本): 无
  • Java 版本: 无
  • 操作系统 (及其版本): 无

使用 Cloud 注册命令报错无法正常返回

您期望得到什么

详细的错误堆栈信息

实际得到什么

重现错误的步骤

1.使用 Cloud 注册一个指令
2.产生报错

报错日志

相关信息

  • KookBC 版本: 0.27.5
  • JKook API 版本: 0.49.2
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本):
  • Java 版本: 11
  • 操作系统 (及其版本): windows 10

0.27.3 Cloud命令调度器解析子命令无效

实际得到什么

1.Cloud命令解析器解析子命令时无效,无任何相应结果,并且出现报错

2.解析时无执行器出现空指针异常,具体错误代码片段为


可行修复办法:
} else if(commandObject.getExecutor() != null) {

错误日志

log

[21:13:08] [Event Executor/INFO]: Luminous夜光(User ID: 1404527149) issued command: /greet name
[21:13:09] [Event Executor/ERROR]: Unexpected exception while we attempting to execute command from remote.
snw.jkook.command.CommandException: Something unexpected happened.
at snw.kookbc.impl.command.cloud.CloudCommandManagerImpl.executeCommand(CloudCommandManagerImpl.java:74) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.network.ListenerImpl.executeCommand(ListenerImpl.java:222) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.network.ListenerImpl.event0(ListenerImpl.java:154) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.network.ListenerImpl.event(ListenerImpl.java:108) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.network.ListenerImpl.lambda$handle$0(ListenerImpl.java:69) ~[kookbc-0.27.3.jar:0.27.3]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: snw.jkook.command.CommandException: Something unexpected happened.
at snw.kookbc.impl.command.cloud.CloudBasedCommandManager.executeCommandNow(CloudBasedCommandManager.java:181) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.command.cloud.CloudCommandManagerImpl.executeCommand(CloudCommandManagerImpl.java:68) ~[kookbc-0.27.3.jar:0.27.3]
... 7 more
Caused by: java.lang.NullPointerException: Cannot invoke "snw.jkook.command.CommandExecutor.onCommand(snw.jkook.command.CommandSender, Object[], snw.jkook.message.Message)" because the return value of "snw.jkook.command.JKookCommand.getExecutor()" is null
at snw.kookbc.impl.command.cloud.CloudWrappedCommandExecutionHandler.execute(CloudWrappedCommandExecutionHandler.java:97) ~[kookbc-0.27.3.jar:0.27.3]
at cloud.commandframework.execution.CommandExecutionHandler.executeFuture(CommandExecutionHandler.java:95) ~[kookbc-0.27.3.jar:0.27.3]
at cloud.commandframework.execution.CommandExecutionCoordinator$SimpleCoordinator.coordinateExecution(CommandExecutionCoordinator.java:123) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.command.cloud.CloudBasedCommandManager.executeCommand(CloudBasedCommandManager.java:342) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.command.cloud.CloudBasedCommandManager.executeCommand(CloudBasedCommandManager.java:277) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.command.cloud.CloudBasedCommandManager.executeCommandNow(CloudBasedCommandManager.java:176) ~[kookbc-0.27.3.jar:0.27.3]
at snw.kookbc.impl.command.cloud.CloudCommandManagerImpl.executeCommand(CloudCommandManagerImpl.java:68) ~[kookbc-0.27.3.jar:0.27.3]
... 7 more

相关信息

  • KookBC 版本:0.27.3
  • JKook API 版本:0.49.2
  • Java 版本:OpenJDK Runtime Environment (Alibaba Dragonwell Standard Edition)-17.0.5.0.5+8-GA (build 17.0.5+8)

过长的命令简介可能会使 /help 输出超过限制

您期望得到什么

截断过长的简介,考虑分页。

实际得到什么

/help 的回复可能发送失败

相关信息

  • KookBC 版本: None
  • JKook API 版本: None
  • 您使用的 JKook 插件 的相关信息 (如 名称、作者、版本): None
  • Java 版本: None
  • 操作系统 (及其版本): None

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.