简易pixiv插件
-
注意,该插件为自用插件,不保证会一直更新。
自己啥都不懂,论坛一直在闲逛,就趁着十一搞了一个乱七八糟的插件,不过好在功能都实现了。公告(重要)
- 如果您使用的插件版本低于0.2,请删除并替换为0.2版本,以避免红链问题。红链可能会影响bot的安全认证,增大tx骑脸的风险。
- 有错误请发issue,恕由于个人时间问题,可能无法及时回复issue和论坛回复。
- 请注意,由于代码的编写时间仓促,一共也就花了一个晚上的闲时间摸,所以该代码的质量很低,仅为了实现功能而编写,代码不具有参考价值。其中包含了大量无意义的重复以及代码冗余,别说你了,我自己现在看着都高血压。故将会在未来的某天重新进行优化调整。
该插件的特点:
由于依赖了@RainChan 好用的图片api,所以,不需要多余的配置。
为此对@RainChan 表示感谢!
(话说为什么是GC酱啊,GC明明不在名字里啊,这不应该叫RC酱吗??)为什么选择这个插件?
优点:
- 简单……
- 没有配置文件
- 不需要proxy
- 不需要很高的网速
- 不需要了解任何代码
缺点:
- 无法自定义
- 无法异步
- 没有配置文件
- 无法修改任何配置->当然如果你想,可以去翻翻源码
(warn:在翻源码前请事先准备降压药,以及呕吐袋以备不时之需)
适合人群:
- 真·小白,对代码很陌生,只知道丢plugin和启动
- 懒,不想费事配置
- 测试,拿来玩的
- 我自己=。=
如果你需要其他更丰富的功能和其他自定义,请选择其他人的插件。
论坛里这类插件应该不算少。如何安装?
- 下载jar丢进plugin,重启mirai.
- 控制台输入
permission add u* org.orisland.plugin:command.pic
或permission add u* org.orisland.plugin:command.*
回车
权限
org.orisland.plugin:*
The base permission
或,
推荐使用高级权限管理插件一键配置:
核心指令
-
/p(ic) simg 图片
搜索指定图片
请注意,simg与图片之间,拥有空格!
-
/p(ic) pid xxxxxxx
提取pid为xxxxxxx的图片
^fold请注意,xxxxxx为作品id!
/p(ic) bid
提取回复中pid为xxxxx的图片
请注意,该指令不需要任何参数,仅需要回复机器人的查询结果!
以上的两个指令结果均可以通过这种方式提取!
注意:仅限pixiv!
当然,如果你懒得删除@bot的信息,你可以先在聊天框打指令,然后再回复信息进行查询。(确保/p bid在信息的前面即可)
例如:
更新一览
- picTool-0.2.2
由于pixiv.cat
更新了域名,所以也同步改了。
去除了不必要的依赖,缩小了jar。
2021年11月10日13:20:26 - picTool-0.2.1
为了保护机器人,加入R18限制,所有R18图片均会被禁止发送,以文字代替,但是链接依然存在,请手动提取。
此操作为硬处理,不可修改,未来会重写该功能以便有更好的灵活性。
若不想限制R18请使用picTool-0.2
此版本为长期版本,由于本人近期学业压力过大,故此插件目前到此为止,后续有时间再改。
2021年10月03日19:29:27 - picTool-0.2
减少了不必要的json信息,减少搜索错误概率。
去除了不必要的信息输出,现在控制台不会出现大段的json数据了。
增加了尝试骗过上帝的撤回功能并添加了两条指令。
(/)p showBack 展示当前撤回的秒数,大于120则为不撤回。
(/p)p setBack <sec> sec处填你想撤回的秒数即可,只能填写>0的数字。
避免红链。
2021年10月03日14:39:08 - picTool-0.1
2021年10月01日17:48:01
-
picTool-0.2
减少了不必要的json信息,减少搜索错误概率。
去除了不必要的信息输出,现在控制台不会出现大段的json数据了。
增加了尝试骗过上帝的撤回功能并添加了两条指令。
如果你不希望其他人使用以下两个指令,请不要使用之前提到的*
权限,或者不在群内使用该指令避免其他人知道该命令。
该命令全局生效,暂时没有考虑分群功能。-
(/)p showBack 展示当前撤回的秒数,大于120则为不撤回。
-
(/p)p setBack <sec> sec处填你想撤回的秒数即可,只能填写>0的数字。
修正了/p pic的链接,现在不会出现红链了。
如果您之前下载了该插件,请替换新版插件。下载
2021年10月03日12:41:45 -
-
picTool-0.3
- 为了保护机器人,加入R18限制,所有R18图片均会被禁止发送,以文字代替,但是链接依然存在,请手动提取。
- 此操作为硬处理,不可修改,未来会重写该功能以便有更好的灵活性。
- 若不想限制R18请使用picTool-0.2
此版本为长期版本,由于本人近期学业压力过大,故此插件目前到此为止,后续有时间再改。
下载
演示:
-
佬,能分享下源代码不,用java的刚入坑的新手表示根本不会用java编写插件(汗)
-
-
@orisland 不不不,孩子现在连个hello World的程序都写不出来了。
思路是这样的:- 在qq群里面输入“测试”,不带“/”
- 机器人返回“Hello Wolrd”
目前卡在了import 文件头那一边和如何用java编写从群众判断信息并反馈,还有jar文件包前面....貌似是叫Jvm的一类东西那吧,纯新手,求大佬指导。
-
@不吃燚龘 你应该在你的本地bot中安装
chat-command
插件,否则就需要用其他的方式进行内容判断。 -
@orisland 已经安装,但目前在于不好描述,我们还是我的帖子那块详细的解释吧
-
picTool-0.2.2
- 由于
pixiv.cat
更新了域名,所以也同步改了。 - 去除了不必要的依赖,缩小了jar。
下载
- 由于
-
爆红了,大佬:
2021-11-16 21:57:25 W/Pic: Exception in executing command[mirai:source:[8565],[1666296491]]/p simg [mirai:image:{894178FB-148A-8443-123B-D1232516144C}.jpg]
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.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:112)
at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1$invokeSuspend$$inlined$runBIO$1.invoke(CoroutineUtils.kt:164)
at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:46)
at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1)
at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:38)
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: javax.net.ssl.SSLException: Software caused connection abort: recv failed
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:127)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:369)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:312)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:307)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:144)
at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1369)
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1278)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:401)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.kt:367)
at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.kt:325)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.kt:197)
at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:249)
at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:108)
at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:76)
at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:245)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:100)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:82)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:100)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:100)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:100)
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:197)
at okhttp3.internal.connection.RealCall.execute(RealCall.kt:148)
at Tool.HttpClient.apiGetByJson(HttpClient.java:99)
at org.orisland.Mycommand.simg(Mycommand.java:207)
... 19 more
Suppressed: java.net.SocketException: Software caused connection abort: socket write error
at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150)
at java.base/sun.security.ssl.SSLSocketOutputRecord.encodeAlert(SSLSocketOutputRecord.java:83)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:400)
... 45 more
Suppressed: javax.net.ssl.SSLException: Software caused connection abort: recv failed
... 47 more
Suppressed: java.net.SocketException: Software caused connection abort: socket write error
at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150)
at java.base/sun.security.ssl.SSLSocketOutputRecord.encodeAlert(SSLSocketOutputRecord.java:83)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:400)
... 45 more
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.base/java.net.SocketInputStream.socketRead0(Native Method)
at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110)
... 42 more
Suppressed: javax.net.ssl.SSLException: Software caused connection abort: recv failed
... 47 more
Suppressed: java.net.SocketException: Software caused connection abort: socket write error
at java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
at java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
at java.base/java.net.SocketOutputStream.write(SocketOutputStream.java:150)
at java.base/sun.security.ssl.SSLSocketOutputRecord.encodeAlert(SSLSocketOutputRecord.java:83)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:400)
... 45 more
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.base/java.net.SocketInputStream.socketRead0(Native Method)
at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110)
... 42 more
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.base/java.net.SocketInputStream.socketRead0(Native Method)
at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:478)
at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:472)
at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110)
... 42 more -
@_casual
无法复现问题,请检查本地网络是否通畅以及是否为最新版本。 -
This post is deleted! -
权限那里怎么弄,小白一个啥也不懂
-
-
作者您好,我在试用插件时出现了问题
发送/p pid 95639429,机器人回复bot收到了提取调用!
随后控制台显示错误信息如下:
2022-01-31 12:37:22 W/Pic: Exception in executing command[mirai:source:[6565],[1042267622]]/p pid 95639429
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.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:112)
at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1$invokeSuspend$$inlined$runBIO$1.invoke(CoroutineUtils.kt:194)
at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:46)
at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1)
at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:38)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:39)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
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: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of typeorg.orisland.bean.pmodel.Tags
from Array value (tokenJsonToken.START_ARRAY
)
at [Source: (String)"{"id":"95639429","title":"nya?","illustType":0,"xRestrict":0,"restrict":0,"sl":2,"url":"https://i.pximg.net/c/250x250_80_a2/custom-thumb/img/2022/01/20/00/00/16/95639429_p0_custom1200.jpg","description":"","tags":["女 の子","オリジナル","猫耳","獣耳","へんにゃの","なちょ猫","Nachoneko","ぬいぐるみ","ぺたん座り","オリジナル10000users入り"],"userId":"3036679","userName":"甘城なつき","width":1000,"height":1376,"pageCount":2,"isBookmarkable":true,"bookmarkData":{"id":"14479629429","private":false},"alt":"#女の子 nya? - 甘城なつき的插画","titleCaptionTra"[truncated 292 chars]; line: 1, column: 214] (through reference chain: org.orisland.bean.pmodel.JsonRootBean["tags"])
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1741)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1515)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1462)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeFromArray(BeanDeserializer.java:638)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:210)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:186)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:313)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:176)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4675)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3630)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3598)
at org.orisland.Mycommand.pid(Mycommand.java:78)
... 21 more
请问如何解决 -
@a-n-k-a emmm,属于是代码内部问题,但是由于现在没有太多时间重构和debug,所以这里建议寻找其他插件。
-
你好 org.orisland.plugin:* 发现你内置了聊天命令插件 不过我已经申请过了但是你这个权限我看不懂怎么申请。。。
-
@superen 啊这,这就是正常的权限申请流程啊。。在第一页有写命令,你复制粘贴到后台就行了