Code Monkey home page Code Monkey logo

apexranklookup's Introduction

ApexLookUp

logo
satrs downloads license version

一个基于mirai-console的插件,可用于查询Apex英雄的

  • 地图轮换
  • 玩家信息
  • 复制器轮换
  • 猎杀门槛
  • 官方活动新闻

以及

  • 订阅玩家分数
  • 订阅地图轮换

Data Source

https://apexlegendsapi.com/
THX

如果你想自己编译......

  1. Clone源码
  2. 修改源码并保存
  3. 在项目根目录打开终端,输入./gradlew buildPlugin
  4. 等待编译完成后在./build/mirai里面拿编译完成的插件
    比如自定义指令:
object Player : SimpleCommand(
    RankLookUp, "apexid", "这里填写你想自定义的指令名"
    description = "查询玩家信息"
)

食用前准备

  • 安装chat-command插件
  • https://apexlegendsapi.com/获取APIkey填入config/pers.shennoter.apexlookup/config.yml
  • 安装字体“微软雅黑”,否则可能发生错误,也可在config.yml更改为自己想要的字体

指令

  • 本插件权限ID为 pers.shennoter.apexlookup:*
  • 详见用户手册PermissionCommand
  • 如果输了命令没反应请在控制台输入/permission add <想要给予权限的对象> pers.shennoter.apexlookup:<想要开启的指令>
  • 如给予所有对象关于此插件的所有权限,请输入/permission add * pers.shennoter.apexlookup:*
  • 订阅功能仅对QQ群有效,对私聊无效
指令(<>必填项,[]选填项) 功能
/apexhelp 帮助
/apex 查询绑定ID的信息
/apexreg 查询已绑定ID的列表
/apexbd <Origin ID> 绑定一个ID
/apexubd <Origin ID> 解绑一个ID
/apexubd all 解绑所有ID
/apexmap 查询当前地图轮换
/apexid <Origin ID> [平台] 查询玩家(空格用@@填充),平台: PC、X1、PS4、SWITCH,不填为默认配置
/apexcraft 查询复制器轮换
/apexpred 查询猎杀底分
/apexnews <index> 查询官方新闻,index为文章序号
/apexldb 查询排行榜(发一个排行榜链接,以后再更新)
/apexadd id <Origin ID> 在该群订阅某玩家分数(当有更新时自动提醒)
/apexrmv id <Origin ID> 移除该群对某玩家分数的订阅
/apexadd info 查看该群已订阅的ID
/apexadd map 在该群订阅地图轮换(当有轮换时自动提醒)
/apexrmv map 移除该群对地图轮换的订阅
/apexcache 立即清除缓存(无视过期时间)

配置文件

config/pers.shennoter.apexlookup/config.yml

配置名称 功能 缺省值
apiKey apiKey:如果没有请到 https://apexlegendsapi.com/ 获取
extendApiKey 额外apiKey,用于防止api过热,可不填
platform 默认平台:PC, X1, PS4, SWITCH(X1为XBOX) PC
mode 回复方式: pic为图片,text为文字(制造器和新闻除外) pic
picType 图片质量:PNG原图,更清晰;JPG更小,发送更快 JPG
cacheExpireTime 缓存图片过期时间(单位:天) 30
cacheAutoDel 是否自动清除过期缓存:true为是,false为否(开启mcl时自动清理) true
listener 玩家分数监听:true为启用,false为关闭 false
listenerInfoType 玩家监听提醒方式:true为分数变化+玩家信息,false为仅提醒分数变化 true
listenInterval 监听时间间隔(单位:分钟) 10
mapRotationReminder 地图轮换提醒:true为启用,false为关闭 false
maptoReminder 提醒地图:“诸王峡谷”“风暴点”“世界边缘”“奥林匹斯”,true为开启,false为关闭
font 字体 微软雅黑
ifProxy 是否使用代理:true为启用,false为关闭 false
proxyType 代理类型:HTTPSOCKS HTTP
hostName 代理地址 127.0.0.1
port 代理端口 7890

可能出现的报错

像图里这种BufferedImage、PictureMode、java.awt、graphic之类的字样的报错,一般都可以通过在mcl启动命令添加JVM参数
-Djava.awt.headless=true解决
比如linux的mirai目录有一个名字叫“mcl”的文件,用记事本打开后你会看到$JAVA_BINARY -jar mcl.jar $*,把它改成$JAVA_BINARY -Djava.awt.headless=true -jar mcl.jar $*,就可以解决这类报错了,windows同理 player

Todo

  • 解决地图监听和玩家监听线程无法正常关闭的问题(由于能力问题,可能长期搁置)

示例

  • 查询玩家
    player

  • 查询地图轮换
    map

  • 查询复制器轮换
    craft

  • 查询猎杀门槛
    predator

  • 查询官方活动新闻
    news

  • 订阅玩家分数
    playerListener

  • 订阅地图轮换
    mapReminder

apexranklookup's People

Contributors

shennoter 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  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  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

apexranklookup's Issues

可否将apex和apexid命令合并起来?

有个建议,如果调用/apexbd命令绑定后的QQ账号,可以在调用/apexid的命令时不填入id参数,机器人将自动查询已绑定的账号的信息。不需要额外学习调用命令/apex。这样对用户来说也许也比较方便

关于图片缓存可用的改进方案

图片缓存目前全部存储于/data/pers.shennoter.ranklookup目录下,图片缓存也有可能过期或者失效,因此可以新增一个可选的手动清除缓存的指令来清空/data/pers.shennoter.ranklookup目录以实现清理图片缓存以避免未来可能出现的一些缓存问题。

作者有空的话可以给每个图片记录缓存时间并在某段时间后进行自动删除

[Bug]取消地图提醒后仍会提醒

image

image

image

这个Bug复现一次太麻烦了,至少要等一个半小时,所以我没再尝试复现。
可能的复现步骤:

  1. 订阅提醒
  2. 等提醒后退出Mirai
  3. 重启Mirai并取消订阅

[BUG]查询玩家ID时候控制台报错

2022-03-07 21:09:29 W/RankLookUp: Exception in executing command [mirai:source:[28716],[-58621***]]/rank apexid ***
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113)
at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159)
at kotlin.reflect.full.KCallables.callSuspendBy(KCallables.kt:74)
at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invokeSuspend(CommandReflector.kt:305)
at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invoke(CommandReflector.kt)
at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invoke(CommandReflector.kt)
at net.mamoe.mirai.console.command.descriptor.CommandSignatureFromKFunctionImpl.call$suspendImpl(CommandSignature.kt:88)
at net.mamoe.mirai.console.command.descriptor.CommandSignatureFromKFunctionImpl.call(CommandSignature.kt)
at net.mamoe.mirai.console.internal.command.CommandManagerImplKt.executeCommandImpl(CommandManagerImpl.kt:167)
at net.mamoe.mirai.console.command.CommandManager.executeCommand(CommandManager.kt:131)
at net.mamoe.mirai.console.command.CommandManager$INSTANCE.executeCommand(CommandManager.kt)
at net.mamoe.mirai.console.command.CommandManager.executeCommand$default(CommandManager.kt:126)
at net.mamoe.mirai.console.plugins.chat.command.PluginMain.handleCommand(PluginMain.kt:86)
at net.mamoe.mirai.console.plugins.chat.command.PluginMain$onEnable$2$1.invokeSuspend(PluginMain.kt:69)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Caused by: java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1
at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source)
at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source)
at java.base/java.util.Objects.checkIndex(Unknown Source)
at java.base/java.util.ArrayList.get(Unknown Source)
at pers.shennoter.PlayerStatKt.playerStat(PlayerStat.kt:46)
at pers.shennoter.MyCommand.apexPlayerInfo(RankLookUp.kt:26)
... 26 more

新版本ApexLookUp - v1.4.0-pre的使用情况

1.在使用/apexadd id svipnb12138后使用/apexremove id svipnb12138,并没有取消对svipnb12138的监听,控制台每隔15分钟依旧显示“完成一次对svipnb12138的监听”。
2.、config.yml中mapRotationReminder: true,在群里输入/apexadd map后,确实显示“已添加对群号xxxxxxxxx的地图轮换提醒”,但是过了三个小时,群里并没有提醒

绑定账号显示API key无权限或不存在

Snipaste_2022-12-10_08-49-17
Snipaste_2022-12-10_08-49-38
2022-12-10 08:45:38 V/Bot.2819569319: [[CN]飞翔服务器-2周年周年庆活动开始!(951358735)] 飞翔到云间(3012287203) -> /apexbd Fx_owner
2022-12-10 08:46:03 V/Bot.2819569319: Group(951358735) <- api key无限限或不存在
2022-12-10 08:46:03 E/ApexLookUp: API key无权限或不存在

1.6.0尝试编译缺少gradle-wrapper.properties文件

终端显示‘ApexRankLookUp-1.6.0\gradle\wrapper\gradle-wrapper.properties' does not exist.
尝试往ApexRankLookUp-1.6.0\gradle\wrapper目录下添加1.5.3的gradle-wrapper.properties文件后编译成功
但显示的jar包名字为“ApexLookUp-1.5.5.mirai2.jar” 而非“ApexLookUp-1.6.0.mirai2.jar”
现在调用 /apexbd 命令和 /apexreg 命令 机器人没有反应,不知道是不是因为这个的缘故

[Bug]地图轮换提醒错误

问题描述

image

如图,当配置设置如上时,应该跳过风暴点的提醒,但实际上跳过的是风暴点的下一张地图的提醒(奥林匹斯)。

原因分析

MapReminder.kt中:

if(Config.mapToRemind[res.battle_royale.current.map] == true) { //如果地图在提醒列表中则开启协程计时
GlobalScope.launch {
delay(timeToRemind)//计时到轮换时间进行提醒

if判断的是当前地图是否在提醒列表中,但是条件成立后,提醒的却是“当前地图被轮换掉”而非“当前地图开始轮换”。

修改建议

if(Config.mapToRemind[res.battle_royale.current.map] == true) { //如果地图在提醒列表中则开启协程计时

中的res.battle_royale.current.map改为res.battle_royale.next.map

可以正常加载但无法查询,提示"java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit"

环境

系统版本:腾讯云Ubuntu 20.04LTS
java版本:17
MCL版本:1.2.3
插件版本:1.1.0
出错命令:/apexmap

问题描述

插件载入没问题,但是使用命令时mcl控制台会提示如下信息
E/console: java.lang.reflect.InvocationTargetException java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97) at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113) at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108) at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159) at kotlin.reflect.full.KCallables.callSuspendBy(KCallables.kt:74) at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invokeSuspend(CommandReflector.kt:305) at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invoke(CommandReflector.kt) at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invoke(CommandReflector.kt) at net.mamoe.mirai.console.command.descriptor.CommandSignatureFromKFunctionImpl.call$suspendImpl(CommandSignature.kt:88) at net.mamoe.mirai.console.command.descriptor.CommandSignatureFromKFunctionImpl.call(CommandSignature.kt) at net.mamoe.mirai.console.internal.command.CommandManagerImplKt.executeCommandImpl(CommandManagerImpl.kt:167) at net.mamoe.mirai.console.command.CommandManager.executeCommand(CommandManager.kt:131) at net.mamoe.mirai.console.command.CommandManager$INSTANCE.executeCommand(CommandManager.kt) at net.mamoe.mirai.console.terminal.ConsoleThreadKt$startupConsoleThread$3.invokeSuspend(ConsoleThread.kt:191) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) Caused by: java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit at java.desktop/sun.awt.AppContext$2.run(AppContext.java:273) at java.desktop/sun.awt.AppContext$2.run(AppContext.java:262) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at java.desktop/sun.awt.AppContext.initMainAppContext(AppContext.java:262) at java.desktop/sun.awt.AppContext$3.run(AppContext.java:315) at java.desktop/sun.awt.AppContext$3.run(AppContext.java:298) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at java.desktop/sun.awt.AppContext.getAppContext(AppContext.java:297) at java.desktop/javax.imageio.spi.IIORegistry.getDefaultInstance(IIORegistry.java:129) at java.desktop/javax.imageio.ImageIO.<clinit>(ImageIO.java:66) at pers.shennoter.MapStatKt.mapPictureMode(MapStat.kt:45) at pers.shennoter.MapStatKt.mapStat(MapStat.kt:34) at pers.shennoter.Map.apexMapInfo(RankLookUp.kt:75) ... 24 more

插件配置

ApiKey: WzhVrcA61fElDD12lSG0 mode: pic

做过的尝试

[x]重装不同java版本
[x]切换headless和普通版java软件包
[x]重装不同版本mcl
[√]百度后添加环境变量
export JAVA_TOOL_OPTIONS="-Djava.awt.headless=true"

目前状况

添加环境变量后,目前可以正常查询并发送图片

无法使用查询玩家战绩命令

java版本:17
MCL版本:2.1.0
插件版本:1.4.1
出错命令:/apexid
2022-05-28 17:45:47 W/ApexLookUp: Exception in executing command [mirai:source:[1393],[1506089929]]/apexid vangams233
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113)
at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159)
at kotlin.reflect.full.KCallables.callSuspendBy(KCallables.kt:74)
at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invokeSuspend(CommandReflector.kt:329)
at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invoke(CommandReflector.kt)
at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invoke(CommandReflector.kt)
at net.mamoe.mirai.console.command.descriptor.CommandSignatureFromKFunctionImpl.call$suspendImpl(CommandSignature.kt:88)
at net.mamoe.mirai.console.command.descriptor.CommandSignatureFromKFunctionImpl.call(CommandSignature.kt)
at net.mamoe.mirai.console.internal.command.CommandManagerImplKt.executeCommandImpl(CommandManagerImpl.kt:168)
at net.mamoe.mirai.console.command.CommandManager.executeCommand$suspendImpl(CommandManager.kt:130)
at net.mamoe.mirai.console.command.CommandManager.executeCommand(CommandManager.kt)
at net.mamoe.mirai.console.command.CommandManager$INSTANCE.executeCommand(CommandManager.kt)
at net.mamoe.mirai.console.command.CommandManager.executeCommand$default(CommandManager.kt:125)
at chat-command-0.5.1.jar//net.mamoe.mirai.console.plugins.chat.command.PluginMain.handleCommand(PluginMain.kt:86)
at chat-command-0.5.1.jar//net.mamoe.mirai.console.plugins.chat.command.PluginMain$onEnable$2$1.invokeSuspend(PluginMain.kt:69)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Caused by: javax.imageio.IIOException: Can't get input stream from URL!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1407)
at ranklookup-1.4.1.mirai.jar//pers.shennoter.ApexImageKt.ImageCache(ApexImage.kt:28)
at ranklookup-1.4.1.mirai.jar//PlayerStatKt.playerPicturMode(PlayerStat.kt:46)
at ranklookup-1.4.1.mirai.jar//PlayerStatKt.playerStat(PlayerStat.kt:34)
at ranklookup-1.4.1.mirai.jar//Player.apexPlayerInfo(Commands.kt:22)
... 27 more
Caused by: java.io.FileNotFoundException: https://api.mozambiquehe.re/assets/banners/newcastle.jpg
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1920)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250)
at java.base/java.net.URL.openStream(URL.java:1165)
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1405)
... 31 more

[Bug]查询玩家信息时出错

查询玩家时提示如下,且只有查询玩家相关功能时出错,其他功能(例如地图轮换)正常。
已经尝试删除data/文件夹下所有相关数据并删除插件重新安装,无效。
在插件刚装好(但字体配置有误)时是可以正常使用的。
mirai: 2.11.0
mirai-console: 2.11.0
chat-command: 0.5.1
插件版本: 1.5.1
报错信息:

2022-06-14 22:56:40 W/ApexLookUp: Exception in executing command `[mirai:source:[4596],[1192419039]]/apexid XXXXX`
java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
        at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113)
        at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
        at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159)
        at kotlin.reflect.full.KCallables.callSuspendBy(KCallables.kt:74)
        at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invokeSuspend(CommandReflector.kt:329)
        at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invoke(CommandReflector.kt)
        at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1.invoke(CommandReflector.kt)
        at net.mamoe.mirai.console.command.descriptor.CommandSignatureFromKFunctionImpl.call$suspendImpl(CommandSignature.kt:88)
        at net.mamoe.mirai.console.command.descriptor.CommandSignatureFromKFunctionImpl.call(CommandSignature.kt)
        at net.mamoe.mirai.console.internal.command.CommandManagerImplKt.executeCommandImpl(CommandManagerImpl.kt:168)
        at net.mamoe.mirai.console.command.CommandManager.executeCommand$suspendImpl(CommandManager.kt:130)
        at net.mamoe.mirai.console.command.CommandManager.executeCommand(CommandManager.kt)
        at net.mamoe.mirai.console.command.CommandManager$INSTANCE.executeCommand(CommandManager.kt)
        at net.mamoe.mirai.console.command.CommandManager.executeCommand$default(CommandManager.kt:125)
        at chat-command-0.5.1.jar//net.mamoe.mirai.console.plugins.chat.command.PluginMain.handleCommand(PluginMain.kt:86)
        at chat-command-0.5.1.jar//net.mamoe.mirai.console.plugins.chat.command.PluginMain$onEnable$2$1.invokeSuspend(PluginMain.kt:69)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Caused by: java.lang.NullPointerException: Cannot invoke "Global.getRank()" because the return value of "ApexResponsePlayer.getGlobal()" is null
        at ranklookup-1.5.1.mirai.jar//PlayerStatKt.playerPicturMode(PlayerStat.kt:44)
        at ranklookup-1.5.1.mirai.jar//PlayerStatKt.playerStat(PlayerStat.kt:34at ranklookup-1.5.1.mirai.jar//Player.apexPlayerInfo(Commands.kt:19)
        ... 27 more

顺便,在查询轮换地图时好像也有问题:

2022-06-14 22:34:08 W/stderr:   at com.google.gson.Gson.fromJson(Gson.java:897)
2022-06-14 22:34:08 W/stderr:   at com.google.gson.Gson.fromJson(Gson.java:846)
2022-06-14 22:34:08 W/stderr:   at com.google.gson.Gson.fromJson(Gson.java:817)
2022-06-14 22:34:08 W/stderr:   at ranklookup-1.5.1.mirai.jar//pers.shennoter.MapReminderKt$mapReminder$mapTask$1.run(MapReminder.kt:63)
2022-06-14 22:34:08 W/stderr:   at java.base/java.util.TimerThread.mainLoop(Timer.java:566)                                                                     
2022-06-14 22:34:08 W/stderr:   at java.base/java.util.TimerThread.run(Timer.java:516)                                                                          
2022-06-14 22:34:08 W/stderr: Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $                        
2022-06-14 22:34:08 W/stderr:   at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:384)                                                           
2022-06-14 22:34:08 W/stderr:   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215)               
2022-06-14 22:34:08 W/stderr:   ... 7 more 
  • 对所有返回值进行非Null检查
  • 在查询不到时更换不同平台进行查询

执行指令后发送图片过慢

不管有无挂代理发现图片模式都要花十几秒的时间才能回复,请问有什么好办法加速一下这个进程吗
主要是同时也在使用另一个塔罗牌插件,发现几乎是秒发送250kb左右的图片,也试过用jpg了,apexapi官网查询每次查询时间都不超过60ms,那这个十几秒难道就是在生成图片吗(

错误提示问题

源码逻辑应该默认只有请求过多 Error ,存在冒号时机器人给予失败回复。

使用中存在其他类型的 Error, 如对存在EA账号但是没有玩过Apex的情况,返回
{"Error": "Player exists but has never played Apex Legends"}
但机器人QQ回复仍然是“错误,短时间内请求过多,请稍后再试”。 建议修改一下回复内容,直接贴出api返回值也可。

Todo

  • 删除/apex绑定id的功能
  • 对于/apexbd/apexubd,使用正则表达式过滤参数
  • 添加解绑所有id的功能
  • 删除额外apikey,超时处理改为重试
  • 竞技场分数播报
  • 将背景图片改为jar包内置
  • 修复id带-无法识别的问题
  • 模拟开箱功能
  • 修复连续添加订阅后会提醒多次,取消订阅仍会提醒的问题

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.