本帖最后由 DreamVoid 于 2022-9-6 04:04 编辑
来自群组: Complex Studio
Whitelist4QQ —— 在QQ群内自助申请Minecraft白名单 | ||||||||||||||||||||||||||||
介绍 什么是 Whitelist4QQ? Whitelist4QQ 是一个基于 MiraiMC 的 Bukkit 插件,能够让玩家在 QQ 群内自助申请 Minecraft 白名单。 这和 QWhiteList 有什么关系?这个插件的作者参与了 W4Q 的开发吗? 最开始我想基于这款插件进行 MiraiMC 的适配,plugin.yml 的 authors 是一开始就写好的。然后我写着写着发现我没有用一行这个插件的代码,但是我还是保留了他的 ID,毕竟是这款插件给了我灵感和思路(好像没有思路)。 开始使用 服主
玩家
配置文件
效果展示
指令与权限 指令
权限
下载(正式版:
开源 更多帮助&外部链接
本插件所用所有代码均为原创,不存在借用/抄袭等行为 感谢你的阅读,你评分的人气就是我不断开发的动力 ![]() 更新日志 可移步Github查看更为完整的更新日志:https://github.com/DreamVoid/Whitelist4QQ/releases |
错误原因全部归结成一条未免有些太粗暴
建议还是分开来写比较好,万一碰上内部错误还反馈这一条 就不好弄 会对辅助追查造成不便
建议还是分开来写比较好,万一碰上内部错误还反馈这一条 就不好弄 会对辅助追查造成不便
名副其实 发表于 2021-10-22 23:51
错误原因全部归结成一条未免有些太粗暴
建议还是分开来写比较好,万一碰上内部错误还反馈这一条 就不好弄 ...
实际上,发出绑定失败消息的情况只会是 prevent-id-rebind 和 prevent-qq-rebind 被检测到
内部错误什么的除了瞎改配置文件是不会出现的,出现内部错误一般都是 MiraiMC 数据库出问题
这插件看起来不错哎
这种自助白名单不要太舒服了 先收藏一波 回头研究
早就有在考虑拿 Mirai 和 Bukkit 配合做一套自助白名单发放服务了,这正好可以用作我这边后续开发的范本


感谢分享
暂时用不上.
收藏夹吃灰
暂时用不上.
收藏夹吃灰
呃 如果有人恶意绑定咋办?比如有人退群,别人占用他的号。
KoGetu37 发表于 2021-10-28 16:27
呃 如果有人恶意绑定咋办?比如有人退群,别人占用他的号。
一个服务器至少是有管理员的
感谢分享 好人一生平安 版本好全
好耶!不错的插件!!
拿走了谢谢
很不错的插件,不过可否uuid绑定改为id绑定?
本帖最后由 DreamVoid 于 2021-11-10 00:10 编辑
下个版本会弄
Edit: 用第三方客户端回的帖子,没显示封禁状态,刚刚看了一下发现回帖的全部寄了
江祈言 发表于 2021-11-8 01:52
很不错的插件,不过可否uuid绑定改为id绑定?
下个版本会弄
Edit: 用第三方客户端回的帖子,没显示封禁状态,刚刚看了一下发现回帖的全部寄了
支持bc就好了
very goog 呀
好东西!
很好用,但是每次启动服务器都要手动登录吗,有点麻烦orz
XiaoCoaiX 发表于 2021年11月16日 中国标准时间 下午9:57:57
很好用,但是每次启动服务器都要手动登录吗,有点麻烦orz
miraimc有自动登录
小服专用,收藏了
测试了很多遍还是不行 机器人是绑定上去了
谢谢楼主很好用
比如玩家绑定错误我是需要去数据库删除还是有特别的指令呀
本帖最后由 冷い桜_ 于 2021-12-4 00:34 编辑
请问兼容1.18吗厉害
以下描述与展望(吐槽)基于我目前在用的并且已经不再支持1.18+的白名单插件得出(不难看出更多是出于私心),作为一个白嫖党我怕自己的言论显得太理直气壮,一直很羡慕会编程自己写插件的大神,在这里先请楼主大人海涵.
刚开始这个白名单插件我用的有点迷茫,我不知道如何让管理员绑定特定的ID和QQ号,后来研究了一下发现是在MiraiMC里进行后台命令的绑定,并不能让管理员直接在QQ群里进行相关的添加和删除操作(或者我眼拙没看到?).个人愚见,我感觉MiraiMC作为一个自我理解属于依赖库性质的插件,关于绑定QQ和ID的事情应该让附属插件去操作和存储相关的数据,MiraiMC的作用应该是监测玩家是否在群里以及对群里出现的特定口令进行相关的回应,这样会获得更高的自由度,互不影响.
白名单插件应该自己接管玩家QQ和ID的绑定,独立保存为一个数据文件(允许服主手动编辑增删数据)与配置文件分隔. 允许禁止玩家自助申请白名单,允许管理员设置一个QQ多个ID,允许管理员添加不需要绑定QQ的例外性白名单,白名单的添加不局限于只能在群里添加,应当加入后台命令.(例如:/wl add ID QQ)
允许机器人在玩家离群删白名单后发出自定义提醒,警示其它人不要随便退群,内容可以加入变量允许显示ID和QQ号等信息.
目前我自己遇到的困扰是我有一个曾经满员的QQ主群和一个后续补充的二群,玩家需要填写白名单经过审核筛查才会给予白名单,并且群里人数多并不希望玩家在群里自助申请白名单,否则交流群都被白名单申请刷屏了,我想让管理员和机器人在一个特定的群里,没有太多其它的外人的情况下,指定的管理员可以通过命令完成绑定和删除白名单操作,并支持其它后台命令的执行.
最后,唯恐冒昧,还请见谅!
刚开始这个白名单插件我用的有点迷茫,我不知道如何让管理员绑定特定的ID和QQ号,后来研究了一下发现是在MiraiMC里进行后台命令的绑定,并不能让管理员直接在QQ群里进行相关的添加和删除操作(或者我眼拙没看到?).个人愚见,我感觉MiraiMC作为一个自我理解属于依赖库性质的插件,关于绑定QQ和ID的事情应该让附属插件去操作和存储相关的数据,MiraiMC的作用应该是监测玩家是否在群里以及对群里出现的特定口令进行相关的回应,这样会获得更高的自由度,互不影响.
白名单插件应该自己接管玩家QQ和ID的绑定,独立保存为一个数据文件(允许服主手动编辑增删数据)与配置文件分隔. 允许禁止玩家自助申请白名单,允许管理员设置一个QQ多个ID,允许管理员添加不需要绑定QQ的例外性白名单,白名单的添加不局限于只能在群里添加,应当加入后台命令.(例如:/wl add ID QQ)
允许机器人在玩家离群删白名单后发出自定义提醒,警示其它人不要随便退群,内容可以加入变量允许显示ID和QQ号等信息.
目前我自己遇到的困扰是我有一个曾经满员的QQ主群和一个后续补充的二群,玩家需要填写白名单经过审核筛查才会给予白名单,并且群里人数多并不希望玩家在群里自助申请白名单,否则交流群都被白名单申请刷屏了,我想让管理员和机器人在一个特定的群里,没有太多其它的外人的情况下,指定的管理员可以通过命令完成绑定和删除白名单操作,并支持其它后台命令的执行.
最后,唯恐冒昧,还请见谅!
大佬真的很厉害,感谢大佬的插件
能否可选择改为id绑定并非uuid,插件很好用,uuid有点问题
谢谢楼主分享 啊 终于啊 不用一个一个加白名单了
MintManatee 发表于 2021-12-5 15:05
能否可选择改为id绑定并非uuid,插件很好用,uuid有点问题
可以,下个版本加
水煮清娃 发表于 2021-12-4 12:26
以下描述与展望(吐槽)基于我目前在用的并且已经不再支持1.18+的白名单插件得出(不难看出更多是出于私心),作 ...
感谢你的建议,我一般优先考虑正版服务器,使用miraimc的数据库就不需要额外管理,也更方便。不过你的建议我会慢慢考虑的
强悍啊大佬,
MCBBS有你更精彩
绑定错名字了咋办
1.18.1版本使用该白名单插件以及前置MiraiMC,两个插件均无法被服务器识别加载,服务器核心paper,连加载信息都没有,开服成功后台可以正常删除这两个插件【证明并没有被加载出来】,使用PlugManX加载的话会显示该文件不是有效的插件。
哇哇哇哇哇哇哇哇哇哇
群里绑定了进不去,是什么原因,再发绑定显示已绑定
你丨造丨吗 发表于 2021-12-18 14:51
绑定错名字了咋办
进数据库 直接把他qq号对应的那条数据删了 让他重新绑定就行
叶青3366 发表于 2021-11-22 14:07
比如玩家绑定错误我是需要去数据库删除还是有特别的指令呀
只有进数据库删,貌似没指令
好像只有我不懂咋加嘛
我刚把插件安上,然后绑定我的号,结果他提示已经绑定了.删除命令也没有,数据库我也找不到,请问怎么办?



MCCOMMAND 发表于 2022-1-13 19:41
我刚把插件安上,然后绑定我的号,结果他提示已经绑定了.删除命令也没有,数据库我也找不到,请问怎么办?{:7 ...
删除数据是miraimc的功能,可以在这个插件的帮助找到
好评!!!!插件对我太有用了
原来你已经写出来了嘛,那我就不写了()
寒假回来想填坑的来说
寒假回来想填坑的来说
感谢制作和分享,很需要这个插件

MCBBS有你更精彩~
玩家绑定错id怎么办,能不能自定义白名单指令,不通过原版的,通过其他的插件指令
挺实用的,感谢分享
MCBBS有你更精彩~
抱歉 打扰一下 我这边服务器安装以后一直报错,服务器核心为catserver,游戏版本1.12.2。报错内容如下
[00:04:41] [DefaultDispatcher-worker-1/INFO]: [MiraiMC] ECDH key is invalid, start to fetch ecdh public key from server.
[00:04:41] [DefaultDispatcher-worker-1/ERROR]: [MiraiMC] Failed to fetch ECDH public key from server, using default key instead
java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
at io.ktor.utils.io.bits.MemoryJvmKt.sliceSafe(MemoryJvm.kt:211) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.bits.Memory.slice-SK3TCg8(MemoryJvm.kt:47) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.charsets.CharsetJVMKt.encodeImpl(CharsetJVM.kt:356) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.charsets.EncodingKt.encodeToImpl(Encoding.kt:204) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.charsets.EncodingKt.encode(Encoding.kt:62) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.charsets.EncodingKt.encode$default(Encoding.kt:57) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.CodecsKt.encodeURLParameter(Codecs.kt:123) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt$formUrlEncodeTo$1.invoke(HttpUrlEncoded.kt:68) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt$formUrlEncodeTo$1.invoke(HttpUrlEncoded.kt:67) ~[mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.text.StringsKt__AppendableKt.appendElement(Appendable.kt:85) ~[mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.collections.CollectionsKt___CollectionsKt.joinTo(_Collections.kt:3347) ~[mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.collections.CollectionsKt___CollectionsKt.joinTo$default(_Collections.kt:3341) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt.formUrlEncodeTo(HttpUrlEncoded.kt:67) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt.formUrlEncodeTo(HttpUrlEncoded.kt:108) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt.formUrlEncodeTo(HttpUrlEncoded.kt:90) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.URLUtilsKt.appendUrlFullPath(URLUtils.kt:101) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.URLUtilsKt.getFullPath(URLUtils.kt:79) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.Url.toString(URLBuilder.kt:169) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.client.engine.okhttp.OkHttpEngineKt.convertToOkHttpRequest(OkHttpEngine.kt:183) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.client.engine.okhttp.OkHttpEngineKt.access$convertToOkHttpRequest(OkHttpEngine.kt:1) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.client.engine.okhttp.OkHttpEngine.execute(OkHttpEngine.kt:71) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.client.engine.HttpClientEngine$executeWithinCallContext$2.invokeSuspend(HttpClientEngine.kt:85) ~[mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) [mirai-core-all-2.10.0-RC2.jar:?]
[00:04:41] [nioEventLoopGroup-160-2/ERROR]: [MiraiMC] Exception in decoding packet.
java.lang.IllegalStateException: Cannot find error message, unknown login result type: 180, TLVMap = {353=[B@811fcd0}
at net.mamoe.mirai.internal.network.protocol.packet.login.WtLogin$Login.decode(WtLogin.kt:188) ~[mirai-core-all-2.10.0-RC2.jar:?]
at net.mamoe.mirai.internal.network.components.PacketCodecImpl.processBody(PacketCodec.kt:368) ~[mirai-core-all-2.10.0-RC2.jar:?]
at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler$PacketDecodePipeline$send$1.invokeSuspend(NettyNetworkHandler.kt:175) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) [mirai-core-all-2.10.0-RC2.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [AbstractEventExecutor.class:4.1.24.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) [SingleThreadEventExecutor.class:4.1.24.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463) [NioEventLoop.class:4.1.24.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) [SingleThreadEventExecutor$5.class:4.1.24.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [FastThreadLocalRunnable.class:4.1.24.Final]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
[00:04:41] [DefaultDispatcher-worker-1/INFO]: [MiraiMC] ECDH key is invalid, start to fetch ecdh public key from server.
[00:04:41] [DefaultDispatcher-worker-1/ERROR]: [MiraiMC] Failed to fetch ECDH public key from server, using default key instead
java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer;
at io.ktor.utils.io.bits.MemoryJvmKt.sliceSafe(MemoryJvm.kt:211) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.bits.Memory.slice-SK3TCg8(MemoryJvm.kt:47) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.charsets.CharsetJVMKt.encodeImpl(CharsetJVM.kt:356) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.charsets.EncodingKt.encodeToImpl(Encoding.kt:204) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.charsets.EncodingKt.encode(Encoding.kt:62) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.utils.io.charsets.EncodingKt.encode$default(Encoding.kt:57) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.CodecsKt.encodeURLParameter(Codecs.kt:123) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt$formUrlEncodeTo$1.invoke(HttpUrlEncoded.kt:68) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt$formUrlEncodeTo$1.invoke(HttpUrlEncoded.kt:67) ~[mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.text.StringsKt__AppendableKt.appendElement(Appendable.kt:85) ~[mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.collections.CollectionsKt___CollectionsKt.joinTo(_Collections.kt:3347) ~[mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.collections.CollectionsKt___CollectionsKt.joinTo$default(_Collections.kt:3341) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt.formUrlEncodeTo(HttpUrlEncoded.kt:67) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt.formUrlEncodeTo(HttpUrlEncoded.kt:108) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.HttpUrlEncodedKt.formUrlEncodeTo(HttpUrlEncoded.kt:90) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.URLUtilsKt.appendUrlFullPath(URLUtils.kt:101) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.URLUtilsKt.getFullPath(URLUtils.kt:79) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.http.Url.toString(URLBuilder.kt:169) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.client.engine.okhttp.OkHttpEngineKt.convertToOkHttpRequest(OkHttpEngine.kt:183) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.client.engine.okhttp.OkHttpEngineKt.access$convertToOkHttpRequest(OkHttpEngine.kt:1) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.client.engine.okhttp.OkHttpEngine.execute(OkHttpEngine.kt:71) ~[mirai-core-all-2.10.0-RC2.jar:?]
at io.ktor.client.engine.HttpClientEngine$executeWithinCallContext$2.invokeSuspend(HttpClientEngine.kt:85) ~[mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665) [mirai-core-all-2.10.0-RC2.jar:?]
[00:04:41] [nioEventLoopGroup-160-2/ERROR]: [MiraiMC] Exception in decoding packet.
java.lang.IllegalStateException: Cannot find error message, unknown login result type: 180, TLVMap = {353=[B@811fcd0}
at net.mamoe.mirai.internal.network.protocol.packet.login.WtLogin$Login.decode(WtLogin.kt:188) ~[mirai-core-all-2.10.0-RC2.jar:?]
at net.mamoe.mirai.internal.network.components.PacketCodecImpl.processBody(PacketCodec.kt:368) ~[mirai-core-all-2.10.0-RC2.jar:?]
at net.mamoe.mirai.internal.network.impl.netty.NettyNetworkHandler$PacketDecodePipeline$send$1.invokeSuspend(NettyNetworkHandler.kt:175) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [mirai-core-all-2.10.0-RC2.jar:?]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) [mirai-core-all-2.10.0-RC2.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [AbstractEventExecutor.class:4.1.24.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) [SingleThreadEventExecutor.class:4.1.24.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:463) [NioEventLoop.class:4.1.24.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) [SingleThreadEventExecutor$5.class:4.1.24.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [FastThreadLocalRunnable.class:4.1.24.Final]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
sdderfg 发表于 2022-1-31 00:05
抱歉 打扰一下 我这边服务器安装以后一直报错,服务器核心为catserver,游戏版本1.12.2。报错内容如下
[ ...
请前往MiraiMC的Github Issue反馈问题