瀏覽代碼

fix group member's nick never been used

00ll00 5 年之前
父節點
當前提交
54f0650453

+ 1 - 1
src/main/kotlin/bot_luo_core/bot/BotContact.kt

@@ -9,7 +9,7 @@ interface BotContact {
     val id: Long
     var bot: Bot?
     val contactType: BotContactType
-    val contact: Contact? get() = BotLuo.getMiraiContact(this)
+    val contact: Contact?
 
     suspend fun sendMessage(msg: Message): MessageReceipt<Contact>? = contact?.sendMessage(msg)
     suspend fun sendMessage(str: String): MessageReceipt<Contact>? = contact?.sendMessage(str)

+ 5 - 2
src/main/kotlin/bot_luo_core/cli/CmdHandler.kt

@@ -36,8 +36,11 @@ object CmdHandler {
         event.intercept()
         val context = CmdContext(
             MessageReader(event.message),
-            Users.readUser(event.sender.id),
-            if (event is GroupAwareMessageEvent) Groups.readGroup(event.group.id) else Groups.readGroup(0)
+            Users.readUser(event.sender.id).apply { contact = event.sender } ,
+            if (event is GroupAwareMessageEvent)
+                Groups.readGroup(event.group.id).apply { contact = event.group }
+            else
+                Groups.virtualGroup
         )
         call(context)
     }

+ 7 - 0
src/main/kotlin/bot_luo_core/data/Group.kt

@@ -4,6 +4,7 @@ import bot_luo_core.bot.BotContact
 import bot_luo_core.bot.BotContactType
 import bot_luo_core.bot.BotLuo
 import net.mamoe.mirai.Bot
+import net.mamoe.mirai.contact.Contact
 import net.mamoe.mirai.contact.Group
 import net.mamoe.mirai.contact.MemberPermission
 
@@ -19,6 +20,12 @@ class Group internal constructor(
     override val contactType = BotContactType.Group
     override val defaultData: CmdData
         get() = CmdData(0,0,0,false)//群组命令默认关闭
+    override var contact: Contact? = null
+        get() {
+            if (field == null)
+                field = BotLuo.getMiraiContact(this)
+            return field
+        }
 
     val virtual: Boolean = id==0L
 

+ 6 - 0
src/main/kotlin/bot_luo_core/data/User.kt

@@ -20,6 +20,12 @@ class User internal constructor (
 ) : CmdDataObj("data/users/$id.json"), BotContact {
     override val contactType = BotContactType.Single
     override val defaultData: CmdData get() = CmdData(0,0,0,true)//用户命令默认开启
+    override var contact: Contact? = null
+        get() {
+            if (field == null)
+            field = BotLuo.getMiraiContact(this)
+            return field
+        }
 
     val virtual: Boolean = id==0L