generated from project-mirai/mirai-console-plugin-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
199 additions
and
257 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
91 changes: 0 additions & 91 deletions
91
src/main/java/org/example/mirai/plugin/JavaPluginMain.java
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package ltd.guimc.mirai.groupverify | ||
|
||
import ltd.guimc.mirai.groupverify.listener.MemberListener | ||
import net.mamoe.mirai.console.permission.Permission | ||
import net.mamoe.mirai.console.permission.PermissionId | ||
import net.mamoe.mirai.console.permission.PermissionService | ||
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescription | ||
import net.mamoe.mirai.console.plugin.jvm.KotlinPlugin | ||
import net.mamoe.mirai.event.events.MemberJoinEvent | ||
import net.mamoe.mirai.event.globalEventChannel | ||
|
||
object PluginMain : KotlinPlugin( | ||
JvmPluginDescription( | ||
id = "ltd.guimc.mirai.groupverify", | ||
name = "Mirai Group Verify", | ||
version = "0.1.0" | ||
) { | ||
author("BakaBotTeam") | ||
} | ||
) { | ||
lateinit var rootPerm: Permission | ||
lateinit var enablePerm: Permission | ||
|
||
override fun onEnable() { | ||
logger.info("Mirai Group Verify 正在加载的路上了喵~") | ||
registerPerms() | ||
registerEvents() | ||
logger.info("Mirai Group Verify 加载好啦喵~") | ||
} | ||
|
||
override fun onDisable() { | ||
logger.info("Mirai Group Verify 正在关闭呢...") | ||
logger.info("Mirai Group Verify 已关闭了喵") | ||
} | ||
|
||
private fun registerPerms() = PermissionService.INSTANCE.run { | ||
rootPerm = register(PermissionId("ltd.guimc.mirai.groupverify", "*"), "Root Permission") | ||
enablePerm = register(PermissionId("ltd.guimc.mirai.groupverify", "enable"), "启用插件 (群)") | ||
} | ||
|
||
private fun registerEvents() = this.globalEventChannel().run { | ||
subscribeAlways<MemberJoinEvent> { event -> MemberListener.onEvent(event) } | ||
} | ||
} |
12 changes: 12 additions & 0 deletions
12
src/main/kotlin/ltd/guimc/mirai/groupverify/config/Config.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package ltd.guimc.mirai.groupverify.config | ||
|
||
import net.mamoe.mirai.console.data.AutoSavePluginConfig | ||
import net.mamoe.mirai.console.data.value | ||
|
||
object Config : AutoSavePluginConfig("config") { | ||
var backendUrl by value("http://example.com:5566/verify") | ||
|
||
var secret by value("xxx") | ||
|
||
var appid by value("xxx_xxx_xxxxxxxxxxxx") | ||
} |
69 changes: 69 additions & 0 deletions
69
src/main/kotlin/ltd/guimc/mirai/groupverify/listener/MemberListener.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
package ltd.guimc.mirai.groupverify.listener | ||
|
||
import kotlinx.coroutines.DelicateCoroutinesApi | ||
import kotlinx.coroutines.GlobalScope | ||
import kotlinx.coroutines.launch | ||
import ltd.guimc.mirai.groupverify.PluginMain | ||
import ltd.guimc.mirai.groupverify.config.Config | ||
import ltd.guimc.mirai.groupverify.utils.APIUtils | ||
import net.mamoe.mirai.console.permission.PermissionService.Companion.hasPermission | ||
import net.mamoe.mirai.console.permission.PermitteeId.Companion.permitteeId | ||
import net.mamoe.mirai.contact.Member | ||
import net.mamoe.mirai.contact.MemberPermission | ||
import net.mamoe.mirai.contact.NormalMember | ||
import net.mamoe.mirai.contact.checkBotPermission | ||
import net.mamoe.mirai.event.events.MemberJoinEvent | ||
import net.mamoe.mirai.message.data.At | ||
import net.mamoe.mirai.message.data.PlainText | ||
import java.util.* | ||
|
||
object MemberListener { | ||
suspend fun onEvent(event: MemberJoinEvent) { | ||
if (event.group.permitteeId.hasPermission(PluginMain.enablePerm)) { | ||
event.group.checkBotPermission(MemberPermission.ADMINISTRATOR) { "权限不足" } | ||
event.member.mute(2592000) // 30 Days | ||
|
||
val session = APIUtils.newSession(event.member) | ||
event.group.sendMessage( | ||
At(event.member)+ | ||
PlainText(" 你好呀! 进入本群,你需要先完成以下的人机验证!\n" + | ||
"请点击下面的链接来开始验证\n\n" + | ||
"${Config.backendUrl}?session=$session") | ||
) | ||
statusListenerRegister(event.member, session) | ||
} | ||
} | ||
|
||
@OptIn(DelicateCoroutinesApi::class) | ||
private fun statusListenerRegister(member: Member, session: String) { | ||
Timer().schedule( | ||
object : TimerTask() { | ||
override fun run() { | ||
GlobalScope.launch { | ||
if (statusTimerTask(member, session)) cancel() | ||
} | ||
} | ||
}, 2, 2 | ||
) | ||
} | ||
|
||
private suspend fun statusTimerTask(member: Member, session: String): Boolean { | ||
val status = APIUtils.getStatus(session) | ||
if (status == 1) { | ||
member.group.sendMessage( | ||
At(member)+ | ||
PlainText(" 你已经完成了验证 现在可以正常发言了!") | ||
) | ||
(member as NormalMember).unmute() | ||
return true | ||
} else if (status == 2) { | ||
member.group.sendMessage( | ||
At(member)+ | ||
PlainText(" 你的验证超时 请重新进群") | ||
) | ||
(member as NormalMember).kick("人机验证超时") | ||
return true | ||
} | ||
return false | ||
} | ||
} |
Oops, something went wrong.