Add blocking bridges to events

This commit is contained in:
Him188 2020-12-16 18:33:56 +08:00
parent 5459e1c577
commit fefadad3f4
3 changed files with 22 additions and 63 deletions

View File

@ -13,8 +13,8 @@
package net.mamoe.mirai.event.events
import net.mamoe.kjbb.JvmBlockingBridge
import net.mamoe.mirai.Bot
import net.mamoe.mirai.JavaFriendlyAPI
import net.mamoe.mirai.Mirai
import net.mamoe.mirai.contact.Friend
import net.mamoe.mirai.contact.Group
@ -23,8 +23,6 @@ import net.mamoe.mirai.event.AbstractEvent
import net.mamoe.mirai.internal.network.Packet
import net.mamoe.mirai.message.action.Nudge
import net.mamoe.mirai.utils.MiraiExperimentalApi
import net.mamoe.mirai.utils.internal.runBlocking
import java.util.concurrent.atomic.AtomicBoolean
@ -89,22 +87,11 @@ public data class NewFriendRequestEvent internal constructor(
*/
public val fromGroup: Group? = if (fromGroupId == 0L) null else bot.getGroup(fromGroupId)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun accept(): Unit = Mirai.acceptNewFriendRequest(this)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun reject(blackList: Boolean = false): Unit = Mirai.rejectNewFriendRequest(this, blackList)
@JavaFriendlyAPI
@JvmName("accept")
public fun __acceptBlockingForJava__(): Unit = runBlocking { accept() }
@JavaFriendlyAPI
@JvmOverloads
@JvmName("reject")
public fun __rejectBlockingForJava__(blackList: Boolean = false): Unit =
runBlocking { reject(blackList) }
}

View File

@ -13,8 +13,8 @@
package net.mamoe.mirai.event.events
import net.mamoe.kjbb.JvmBlockingBridge
import net.mamoe.mirai.Bot
import net.mamoe.mirai.JavaFriendlyAPI
import net.mamoe.mirai.Mirai
import net.mamoe.mirai.contact.Friend
import net.mamoe.mirai.contact.Group
@ -25,9 +25,7 @@ import net.mamoe.mirai.event.BroadcastControllable
import net.mamoe.mirai.internal.network.Packet
import net.mamoe.mirai.message.action.Nudge
import net.mamoe.mirai.utils.MiraiExperimentalApi
import net.mamoe.mirai.utils.internal.runBlocking
import java.util.concurrent.atomic.AtomicBoolean
import kotlin.jvm.*
/**
* 机器人被踢出群或在其他客户端主动退出一个群. 在事件广播前 [Bot.groups] 就已删除这个群.
@ -332,21 +330,11 @@ public data class BotInvitedJoinGroupRequestEvent internal constructor(
@JvmField
internal val responded: AtomicBoolean = AtomicBoolean(false)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun accept(): Unit = Mirai.acceptInvitedJoinGroupRequest(this)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun ignore(): Unit = Mirai.ignoreInvitedJoinGroupRequest(this)
@JavaFriendlyAPI
@JvmName("accept")
public fun __acceptBlockingForJava__(): Unit =
runBlocking { Mirai.acceptInvitedJoinGroupRequest(this@BotInvitedJoinGroupRequestEvent) }
@JavaFriendlyAPI
@JvmName("ignore")
public fun __ignoreBlockingForJava__(): Unit =
runBlocking { Mirai.ignoreInvitedJoinGroupRequest(this@BotInvitedJoinGroupRequestEvent) }
}
/**
@ -380,34 +368,16 @@ public data class MemberJoinRequestEvent internal constructor(
@PublishedApi
internal val responded: AtomicBoolean = AtomicBoolean(false)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun accept(): Unit = Mirai.acceptMemberJoinRequest(this)
@JvmSynthetic
@JvmBlockingBridge
@JvmOverloads
public suspend fun reject(blackList: Boolean = false, message: String = ""): Unit =
Mirai.rejectMemberJoinRequest(this, blackList, message)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun ignore(blackList: Boolean = false): Unit = Mirai.ignoreMemberJoinRequest(this, blackList)
@JavaFriendlyAPI
@JvmName("accept")
public fun __acceptBlockingForJava__(): Unit =
runBlocking { Mirai.acceptMemberJoinRequest(this@MemberJoinRequestEvent) }
@JavaFriendlyAPI
@JvmOverloads
@JvmName("reject")
public fun __rejectBlockingForJava__(blackList: Boolean = false, message: String = ""): Unit =
runBlocking { Mirai.rejectMemberJoinRequest(this@MemberJoinRequestEvent, blackList, message) }
@JavaFriendlyAPI
@JvmOverloads
@JvmName("ignore")
public fun __ignoreBlockingForJava__(blackList: Boolean = false): Unit =
runBlocking { Mirai.ignoreMemberJoinRequest(this@MemberJoinRequestEvent, blackList) }
}
// endregion

View File

@ -13,6 +13,7 @@
package net.mamoe.mirai.event.events
import net.mamoe.kjbb.JvmBlockingBridge
import net.mamoe.mirai.Bot
import net.mamoe.mirai.contact.*
import net.mamoe.mirai.event.*
@ -592,6 +593,7 @@ public interface MessageEvent : Event, Packet, BotEvent, MessageEventExtensions<
}
/** 消息事件的扩展函数 */
@Suppress("UNCHECKED_CAST")
public interface MessageEventExtensions<out TSender : User, out TSubject : Contact> :
MessageEventPlatformExtensions<TSender, TSubject> {
@ -602,11 +604,11 @@ public interface MessageEventExtensions<out TSender : User, out TSubject : Conta
* 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息
* 对于群消息事件, 这个方法将会给群 ([subject]) 发送消息
*/
@JvmSynthetic
@JvmBlockingBridge
public suspend fun reply(message: Message): MessageReceipt<TSubject> =
subject.sendMessage(message.asMessageChain()) as MessageReceipt<TSubject>
@JvmSynthetic
@JvmBlockingBridge
public suspend fun reply(plain: String): MessageReceipt<TSubject> =
subject.sendMessage(PlainText(plain).asMessageChain()) as MessageReceipt<TSubject>
@ -633,15 +635,15 @@ public interface MessageEventExtensions<out TSender : User, out TSubject : Conta
* 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息
* 对于群消息事件, 这个方法将会给群 ([subject]) 发送消息
*/
@JvmSynthetic
@JvmBlockingBridge
public suspend fun quoteReply(message: MessageChain): MessageReceipt<TSubject> =
reply(this.message.quote() + message)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun quoteReply(message: Message): MessageReceipt<TSubject> =
reply(this.message.quote() + message)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun quoteReply(plain: String): MessageReceipt<TSubject> = reply(this.message.quote() + plain)
@JvmSynthetic
@ -670,24 +672,24 @@ public interface MessageEventPlatformExtensions<out TSender : User, out TSubject
// region 上传图片
@JvmSynthetic
@JvmBlockingBridge
public suspend fun uploadImage(image: BufferedImage): Image = subject.uploadImage(image)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun uploadImage(image: InputStream): Image = subject.uploadImage(image)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun uploadImage(image: File): Image = subject.uploadImage(image)
// endregion
// region 发送图片
@JvmSynthetic
@JvmBlockingBridge
public suspend fun sendImage(image: BufferedImage): MessageReceipt<TSubject> = subject.sendImage(image)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun sendImage(image: InputStream): MessageReceipt<TSubject> = subject.sendImage(image)
@JvmSynthetic
@JvmBlockingBridge
public suspend fun sendImage(image: File): MessageReceipt<TSubject> = subject.sendImage(image)
// endregion