package info.alinadace.sakuramiki.service.mfa import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper import info.alinadace.sakuramiki.annotation.BotFunction import info.alinadace.sakuramiki.service.Service import info.alinadace.sakuramiki.service.mfa.domain.MFA import info.alinadace.sakuramiki.service.mfa.mapper.MFAMapper import info.alinadace.sakuramiki.util.MFAUtil import io.github.kloping.qqbot.api.v2.FriendMessageEvent import io.github.kloping.qqbot.entities.ex.PlainText import jakarta.annotation.Resource /** * MFA生成服务 * @author Kane * @since 2025/1/14 14:00 */ @BotFunction(FriendMessageEvent::class) class MFAGenerateService : Service { @Resource private lateinit var mapper: MFAMapper /** * 服务入口 */ override fun entrance(event: FriendMessageEvent): Boolean { val message = event.message if (message.size != 1 && message.size != 2) { return false } if (message[0] is PlainText && message[0].toString().trim().startsWith("/mfa")){ if (message.size == 1){ val split = message[0].toString().split(" ") return split.size <= 2 } } return false } /** * 服务行为 */ override fun active(event: FriendMessageEvent) { val message = event.message if (message[0] is PlainText && message[0].toString().trim().startsWith("/mfa")){ val command = message[0].toString().split(" ") if (command.size == 1){ val mfa = mapper.selectOne( KtQueryWrapper(MFA::class.java) .eq(MFA::uid, event.friend.id) .eq(MFA::name, "default") ) if (mfa == null){ event.send("您还没有绑定默认MFA,使用 #mfa bind default 绑定默认MFA") return } event.send(MFAUtil.generate(mfa.secret, 30)) return } if (command.size == 2){ val mfa = mapper.selectOne( KtQueryWrapper(MFA::class.java) .eq(MFA::uid, event.friend.id) .eq(MFA::name, command[1]) ) if (mfa == null){ event.send("您还没有绑定${command[1]} MFA,使用 #mfa bind ${command[1]} 绑定${command[1]} MFA") return } event.send(MFAUtil.generate(mfa.secret, 30)) return } } } }