mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-23 10:20:14 +08:00
Change sendMessage(MessageChain)
to sendMessage(Message)
This commit is contained in:
parent
7820b43f6a
commit
53fdcd41f7
@ -9,19 +9,9 @@
|
||||
|
||||
package net.mamoe.mirai.qqandroid
|
||||
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.request.*
|
||||
import io.ktor.client.request.forms.MultiPartFormDataContent
|
||||
import io.ktor.client.request.forms.formData
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import kotlinx.io.core.Closeable
|
||||
import kotlinx.serialization.MissingFieldException
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.JsonConfiguration
|
||||
import kotlinx.serialization.json.int
|
||||
import kotlinx.serialization.json.long
|
||||
import net.mamoe.mirai.LowLevelAPI
|
||||
import net.mamoe.mirai.contact.*
|
||||
import net.mamoe.mirai.data.*
|
||||
@ -30,10 +20,7 @@ import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.MessageSource
|
||||
import net.mamoe.mirai.message.data.OfflineFriendImage
|
||||
import net.mamoe.mirai.message.data.OfflineGroupImage
|
||||
import net.mamoe.mirai.message.data.*
|
||||
import net.mamoe.mirai.qqandroid.message.MessageSourceFromSendGroup
|
||||
import net.mamoe.mirai.qqandroid.network.highway.HighwayHelper
|
||||
import net.mamoe.mirai.qqandroid.network.highway.postImage
|
||||
@ -45,7 +32,6 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.LongConn
|
||||
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvc
|
||||
import net.mamoe.mirai.qqandroid.utils.toIpV4AddressString
|
||||
import net.mamoe.mirai.utils.*
|
||||
import net.mamoe.mirai.utils.io.encodeToString
|
||||
import net.mamoe.mirai.utils.io.toUHexString
|
||||
import kotlin.contracts.ExperimentalContracts
|
||||
import kotlin.contracts.contract
|
||||
@ -69,8 +55,9 @@ internal class QQImpl(
|
||||
override val nick: String
|
||||
get() = friendInfo.nick
|
||||
|
||||
override suspend fun sendMessage(message: MessageChain): MessageReceipt<QQ> {
|
||||
val event = FriendMessageSendEvent(this, message).broadcast()
|
||||
@Suppress("DuplicatedCode")
|
||||
override suspend fun sendMessage(message: Message): MessageReceipt<QQ> {
|
||||
val event = FriendMessageSendEvent(this, message.asMessageChain()).broadcast()
|
||||
if (event.isCancelled) {
|
||||
throw EventCancelledException("cancelled by FriendMessageSendEvent")
|
||||
}
|
||||
@ -89,6 +76,11 @@ internal class QQImpl(
|
||||
return MessageReceipt(source, this, null)
|
||||
}
|
||||
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
override suspend fun sendMessage(message: MessageChain): MessageReceipt<QQ> {
|
||||
return this.sendMessage(message as Message)
|
||||
}
|
||||
|
||||
@OptIn(MiraiInternalAPI::class)
|
||||
override suspend fun uploadImage(image: ExternalImage): OfflineFriendImage = try {
|
||||
if (BeforeImageUploadEvent(this, image).broadcast().isCancelled) {
|
||||
@ -220,7 +212,32 @@ internal class MemberImpl(
|
||||
@MiraiExperimentalAPI
|
||||
override suspend fun queryRemark(): FriendNameRemark = qq.queryRemark()
|
||||
|
||||
override suspend fun sendMessage(message: MessageChain): MessageReceipt<QQ> = qq.sendMessage(message)
|
||||
@Suppress("DuplicatedCode")
|
||||
override suspend fun sendMessage(message: Message): MessageReceipt<Member> {
|
||||
val event = FriendMessageSendEvent(this, message.asMessageChain()).broadcast()
|
||||
if (event.isCancelled) {
|
||||
throw EventCancelledException("cancelled by FriendMessageSendEvent")
|
||||
}
|
||||
lateinit var source: MessageSource
|
||||
bot.network.run {
|
||||
check(
|
||||
MessageSvc.PbSendMsg.ToFriend(
|
||||
bot.client,
|
||||
id,
|
||||
event.message
|
||||
) {
|
||||
source = it
|
||||
}.sendAndExpect<MessageSvc.PbSendMsg.Response>() is MessageSvc.PbSendMsg.Response.SUCCESS
|
||||
) { "send message failed" }
|
||||
}
|
||||
return MessageReceipt(source, this, null)
|
||||
}
|
||||
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
override suspend fun sendMessage(message: MessageChain): MessageReceipt<out QQ> {
|
||||
return this.sendMessage(message as Message)
|
||||
}
|
||||
|
||||
override suspend fun uploadImage(image: ExternalImage): OfflineFriendImage = qq.uploadImage(image)
|
||||
// endregion
|
||||
|
||||
@ -386,10 +403,7 @@ internal class GroupImpl(
|
||||
groupInfo: GroupInfo,
|
||||
members: Sequence<MemberInfo>
|
||||
) : Group() {
|
||||
@Suppress("\"RemoveEmptyClassBody\"") // things will go wrong after removal, don't try
|
||||
companion object {
|
||||
|
||||
}
|
||||
companion object;
|
||||
|
||||
override val bot: QQAndroidBot by bot.unsafeWeakRef()
|
||||
val uin: Long = groupInfo.uin
|
||||
@ -595,9 +609,9 @@ internal class GroupImpl(
|
||||
return members.delegate.filteringGetOrNull { it.id == id }
|
||||
}
|
||||
|
||||
override suspend fun sendMessage(message: MessageChain): MessageReceipt<Group> {
|
||||
override suspend fun sendMessage(message: Message): MessageReceipt<Group> {
|
||||
check(!isBotMuted) { "bot is muted. Remaining seconds=$botMuteRemaining" }
|
||||
val event = GroupMessageSendEvent(this, message).broadcast()
|
||||
val event = GroupMessageSendEvent(this, message.asMessageChain()).broadcast()
|
||||
if (event.isCancelled) {
|
||||
throw EventCancelledException("cancelled by FriendMessageSendEvent")
|
||||
}
|
||||
@ -619,6 +633,12 @@ internal class GroupImpl(
|
||||
return MessageReceipt(source, this, botAsMember)
|
||||
}
|
||||
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
override suspend fun sendMessage(message: MessageChain): MessageReceipt<Group> {
|
||||
return this.sendMessage(message as Message)
|
||||
}
|
||||
|
||||
|
||||
override suspend fun uploadImage(image: ExternalImage): OfflineGroupImage = try {
|
||||
if (BeforeImageUploadEvent(this, image).broadcast().isCancelled) {
|
||||
throw EventCancelledException("cancelled by BeforeImageUploadEvent.ToGroup")
|
||||
|
@ -18,6 +18,7 @@ import net.mamoe.mirai.event.events.ImageUploadEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.OfflineImage
|
||||
import net.mamoe.mirai.message.data.id
|
||||
@ -64,6 +65,10 @@ actual abstract class Contact : CoroutineScope, ContactJavaHappyAPI() {
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
actual abstract suspend fun sendMessage(message: Message): MessageReceipt<out Contact>
|
||||
|
||||
@JvmSynthetic
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
actual abstract suspend fun sendMessage(message: MessageChain): MessageReceipt<out Contact>
|
||||
|
||||
/**
|
||||
|
@ -58,12 +58,14 @@ actual abstract class ContactJavaHappyAPI {
|
||||
*/
|
||||
@Throws(EventCancelledException::class, IllegalStateException::class)
|
||||
@JvmName("sendMessage")
|
||||
open fun __sendMessageBlockingForJava__(message: Message): MessageReceipt<Contact> {
|
||||
return runBlocking { sendMessage(message) }
|
||||
open fun __sendMessageBlockingForJava__(message: Message): MessageReceipt<out Contact> {
|
||||
return runBlocking {
|
||||
sendMessage(message)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmName("sendMessage")
|
||||
open fun __sendMessageBlockingForJava__(message: String): MessageReceipt<Contact> {
|
||||
open fun __sendMessageBlockingForJava__(message: String): MessageReceipt<out Contact> {
|
||||
return runBlocking { sendMessage(message) }
|
||||
}
|
||||
|
||||
@ -137,7 +139,7 @@ actual abstract class ContactJavaHappyAPI {
|
||||
* @see Contact.sendMessage
|
||||
*/
|
||||
@JvmName("sendMessageAsync")
|
||||
open fun __sendMessageAsyncForJava__(message: Message): Future<MessageReceipt<Contact>> {
|
||||
open fun __sendMessageAsyncForJava__(message: Message): Future<MessageReceipt<out Contact>> {
|
||||
return future { sendMessage(message) }
|
||||
}
|
||||
|
||||
@ -146,7 +148,7 @@ actual abstract class ContactJavaHappyAPI {
|
||||
* @see Contact.sendMessage
|
||||
*/
|
||||
@JvmName("sendMessageAsync")
|
||||
open fun __sendMessageAsyncForJava__(message: String): Future<MessageReceipt<Contact>> {
|
||||
open fun __sendMessageAsyncForJava__(message: String): Future<MessageReceipt<out Contact>> {
|
||||
return future { sendMessage(message) }
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,7 @@ import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.OfflineGroupImage
|
||||
import net.mamoe.mirai.utils.ExternalImage
|
||||
@ -179,6 +180,10 @@ actual abstract class Group : Contact(), CoroutineScope {
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
actual abstract override suspend fun sendMessage(message: Message): MessageReceipt<Group>
|
||||
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
@JvmSynthetic
|
||||
actual abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<Group>
|
||||
|
||||
/**
|
||||
|
@ -14,6 +14,10 @@ package net.mamoe.mirai.contact
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.JavaHappyAPI
|
||||
import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||
import net.mamoe.mirai.utils.WeakRefProperty
|
||||
|
||||
@ -101,6 +105,21 @@ actual abstract class Member : MemberJavaHappyAPI() {
|
||||
@JvmSynthetic
|
||||
actual abstract suspend fun unmute()
|
||||
|
||||
/**
|
||||
* 向这个对象发送消息.
|
||||
*
|
||||
* @see FriendMessageSendEvent 发送好友信息事件, cancellable
|
||||
* @see GroupMessageSendEvent 发送群消息事件. cancellable
|
||||
*
|
||||
* @throws EventCancelledException 当发送消息事件被取消
|
||||
* @throws IllegalStateException 发送群消息时若 [Bot] 被禁言抛出
|
||||
*
|
||||
* @return 消息回执. 可进行撤回 ([MessageReceipt.recall])
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
actual abstract override suspend fun sendMessage(message: Message): MessageReceipt<Member>
|
||||
|
||||
/**
|
||||
* 踢出该成员.
|
||||
*
|
||||
|
@ -13,6 +13,7 @@ import net.mamoe.mirai.event.events.ImageUploadEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.OfflineFriendImage
|
||||
import net.mamoe.mirai.utils.ExternalImage
|
||||
@ -88,7 +89,11 @@ actual abstract class QQ : Contact(), CoroutineScope {
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
actual abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<QQ>
|
||||
actual abstract override suspend fun sendMessage(message: Message): MessageReceipt<out QQ>
|
||||
|
||||
@JvmSynthetic
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
actual abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<out QQ>
|
||||
|
||||
/**
|
||||
* 上传一个图片以备发送.
|
||||
|
@ -266,7 +266,7 @@ suspend inline fun Bot.recall(message: MessageChain) = this.recall(message[Messa
|
||||
* @param coroutineContext 额外的 [CoroutineContext]
|
||||
* @see recall
|
||||
*/
|
||||
fun Bot.recallIn(
|
||||
inline fun Bot.recallIn(
|
||||
source: MessageSource,
|
||||
millis: Long,
|
||||
coroutineContext: CoroutineContext = EmptyCoroutineContext
|
||||
@ -282,7 +282,7 @@ fun Bot.recallIn(
|
||||
* @param coroutineContext 额外的 [CoroutineContext]
|
||||
* @see recall
|
||||
*/
|
||||
fun Bot.recallIn(
|
||||
inline fun Bot.recallIn(
|
||||
message: MessageChain,
|
||||
millis: Long,
|
||||
coroutineContext: CoroutineContext = EmptyCoroutineContext
|
||||
|
@ -7,7 +7,7 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
@file:Suppress("EXPERIMENTAL_API_USAGE")
|
||||
@file:Suppress("EXPERIMENTAL_API_USAGE", "NOTHING_TO_INLINE")
|
||||
|
||||
package net.mamoe.mirai.contact
|
||||
|
||||
@ -69,6 +69,10 @@ expect abstract class Contact() : CoroutineScope, ContactJavaHappyAPI {
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
abstract suspend fun sendMessage(message: Message): MessageReceipt<out Contact>
|
||||
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
@JvmSynthetic
|
||||
abstract suspend fun sendMessage(message: MessageChain): MessageReceipt<out Contact>
|
||||
|
||||
/**
|
||||
@ -120,7 +124,7 @@ suspend inline fun Contact.recall(source: MessageSource) = this.bot.recall(sourc
|
||||
* @see Bot.recallIn
|
||||
*/
|
||||
@MiraiExperimentalAPI
|
||||
fun Contact.recallIn(
|
||||
inline fun Contact.recallIn(
|
||||
message: MessageChain,
|
||||
millis: Long,
|
||||
coroutineContext: CoroutineContext = EmptyCoroutineContext
|
||||
@ -129,7 +133,7 @@ fun Contact.recallIn(
|
||||
/**
|
||||
* @see Bot.recallIn
|
||||
*/
|
||||
fun Contact.recallIn(
|
||||
inline fun Contact.recallIn(
|
||||
source: MessageSource,
|
||||
millis: Long,
|
||||
coroutineContext: CoroutineContext = EmptyCoroutineContext
|
||||
@ -139,11 +143,5 @@ fun Contact.recallIn(
|
||||
* @see Contact.sendMessage
|
||||
*/
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
suspend inline fun <C : Contact> C.sendMessage(message: Message): MessageReceipt<C> =
|
||||
sendMessage(message.asMessageChain()) as? MessageReceipt<C> ?: error("Internal class cast mistake")
|
||||
|
||||
/**
|
||||
* @see Contact.sendMessage
|
||||
*/
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
suspend inline fun <C : Contact> C.sendMessage(plain: String): MessageReceipt<C> = sendMessage(plain.toMessage())
|
||||
suspend inline fun <C : Contact> C.sendMessage(plain: String): MessageReceipt<C> =
|
||||
sendMessage(plain.toMessage()) as? MessageReceipt<C> ?: error("Internal class cast mistake")
|
@ -12,17 +12,13 @@
|
||||
package net.mamoe.mirai.contact
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.serialization.SerialInfo
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.data.GroupAnnouncement
|
||||
import net.mamoe.mirai.data.GroupAnnouncementList
|
||||
import net.mamoe.mirai.data.MemberInfo
|
||||
import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.OfflineGroupImage
|
||||
import net.mamoe.mirai.utils.ExternalImage
|
||||
@ -185,6 +181,10 @@ expect abstract class Group() : Contact, CoroutineScope {
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
abstract override suspend fun sendMessage(message: Message): MessageReceipt<Group>
|
||||
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
@JvmSynthetic
|
||||
abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<Group>
|
||||
|
||||
/**
|
||||
|
@ -14,6 +14,8 @@ package net.mamoe.mirai.contact
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.JavaHappyAPI
|
||||
import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||
import net.mamoe.mirai.utils.WeakRefProperty
|
||||
import kotlin.jvm.JvmName
|
||||
@ -130,6 +132,21 @@ expect abstract class Member() : MemberJavaHappyAPI {
|
||||
* @return `bot.hashCode() * 31 + id.hashCode()`
|
||||
*/
|
||||
abstract override fun hashCode(): Int
|
||||
|
||||
/**
|
||||
* 向这个对象发送消息.
|
||||
*
|
||||
* @see MessageSendEvent.FriendMessageSendEvent 发送好友信息事件, cancellable
|
||||
* @see MessageSendEvent.GroupMessageSendEvent 发送群消息事件. cancellable
|
||||
*
|
||||
* @throws EventCancelledException 当发送消息事件被取消
|
||||
* @throws IllegalStateException 发送群消息时若 [Bot] 被禁言抛出
|
||||
*
|
||||
* @return 消息回执. 可进行撤回 ([MessageReceipt.recall])
|
||||
*/
|
||||
@JvmSynthetic
|
||||
@JvmName("sendMessageSuspend")
|
||||
abstract override suspend fun sendMessage(message: Message): MessageReceipt<Member>
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7,6 +7,8 @@
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
@file:Suppress("NOTHING_TO_INLINE")
|
||||
|
||||
package net.mamoe.mirai.contact
|
||||
|
||||
import net.mamoe.mirai.Bot
|
||||
@ -34,38 +36,32 @@ enum class MemberPermission {
|
||||
/**
|
||||
* 是群主
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun MemberPermission.isOwner(): Boolean = this == MemberPermission.OWNER
|
||||
|
||||
/**
|
||||
* 是管理员
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun MemberPermission.isAdministrator(): Boolean = this == MemberPermission.ADMINISTRATOR
|
||||
|
||||
/**
|
||||
* 是管理员或群主
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun MemberPermission.isOperator(): Boolean = isAdministrator() || isOwner()
|
||||
|
||||
|
||||
/**
|
||||
* 是群主
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun Member.isOwner(): Boolean = this.permission.isOwner()
|
||||
|
||||
/**
|
||||
* 是管理员
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun Member.isAdministrator(): Boolean = this.permission.isAdministrator()
|
||||
|
||||
/**
|
||||
* 是管理员或群主
|
||||
*/
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun Member.isOperator(): Boolean = this.permission.isOperator()
|
||||
|
||||
|
||||
|
@ -22,6 +22,7 @@ import net.mamoe.mirai.event.events.ImageUploadEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.OfflineFriendImage
|
||||
import net.mamoe.mirai.utils.ExternalImage
|
||||
@ -98,7 +99,11 @@ expect abstract class QQ() : Contact, CoroutineScope {
|
||||
*/
|
||||
@JvmSynthetic
|
||||
@JvmName("sendMessageSuspend")
|
||||
abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<QQ>
|
||||
abstract override suspend fun sendMessage(message: Message): MessageReceipt<out QQ>
|
||||
|
||||
@JvmSynthetic
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<out QQ>
|
||||
|
||||
/**
|
||||
* 上传一个图片以备发送.
|
||||
|
@ -84,9 +84,6 @@ abstract class MessagePacketBase<TSender : QQ, TSubject : Contact> : Packet, Bot
|
||||
* 对于好友消息事件, 这个方法将会给好友 ([subject]) 发送消息
|
||||
* 对于群消息事件, 这个方法将会给群 ([subject]) 发送消息
|
||||
*/
|
||||
suspend inline fun reply(message: MessageChain): MessageReceipt<TSubject> =
|
||||
subject.sendMessage(message) as MessageReceipt<TSubject>
|
||||
|
||||
suspend inline fun reply(message: Message): MessageReceipt<TSubject> =
|
||||
subject.sendMessage(message.asMessageChain()) as MessageReceipt<TSubject>
|
||||
|
||||
@ -98,9 +95,6 @@ abstract class MessagePacketBase<TSender : QQ, TSubject : Contact> : Packet, Bot
|
||||
|
||||
@JvmName("reply1")
|
||||
suspend inline fun Message.reply(): MessageReceipt<TSubject> = reply(this)
|
||||
|
||||
@JvmName("reply1")
|
||||
suspend inline fun MessageChain.reply(): MessageReceipt<TSubject> = reply(this)
|
||||
// endregion
|
||||
|
||||
// region 撤回
|
||||
|
@ -12,7 +12,6 @@
|
||||
package net.mamoe.mirai.message.data
|
||||
|
||||
import net.mamoe.mirai.contact.Contact
|
||||
import net.mamoe.mirai.contact.sendMessage
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import kotlin.jvm.JvmSynthetic
|
||||
|
||||
@ -109,8 +108,9 @@ interface Message {
|
||||
operator fun plus(another: CharSequence): CombinedMessage = this.followedBy(another.toString().toMessage())
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
suspend inline fun <C : Contact> Message.sendTo(contact: C): MessageReceipt<C> {
|
||||
return contact.sendMessage(this)
|
||||
return contact.sendMessage(this) as MessageReceipt<C>
|
||||
}
|
||||
|
||||
fun Message.repeat(count: Int): MessageChain {
|
||||
|
@ -18,6 +18,7 @@ import net.mamoe.mirai.event.events.ImageUploadEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.OfflineImage
|
||||
import net.mamoe.mirai.message.data.id
|
||||
@ -63,6 +64,10 @@ actual abstract class Contact : CoroutineScope, ContactJavaHappyAPI() {
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
actual abstract suspend fun sendMessage(message: Message): MessageReceipt<out Contact>
|
||||
|
||||
@JvmSynthetic
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
actual abstract suspend fun sendMessage(message: MessageChain): MessageReceipt<out Contact>
|
||||
|
||||
/**
|
||||
|
@ -58,12 +58,12 @@ actual abstract class ContactJavaHappyAPI {
|
||||
*/
|
||||
@Throws(EventCancelledException::class, IllegalStateException::class)
|
||||
@JvmName("sendMessage")
|
||||
open fun __sendMessageBlockingForJava__(message: Message): MessageReceipt<Contact> {
|
||||
open fun __sendMessageBlockingForJava__(message: Message): MessageReceipt<out Contact> {
|
||||
return runBlocking { sendMessage(message) }
|
||||
}
|
||||
|
||||
@JvmName("sendMessage")
|
||||
open fun __sendMessageBlockingForJava__(message: String): MessageReceipt<Contact> {
|
||||
open fun __sendMessageBlockingForJava__(message: String): MessageReceipt<out Contact> {
|
||||
return runBlocking { sendMessage(message) }
|
||||
}
|
||||
|
||||
@ -137,7 +137,7 @@ actual abstract class ContactJavaHappyAPI {
|
||||
* @see Contact.sendMessage
|
||||
*/
|
||||
@JvmName("sendMessageAsync")
|
||||
open fun __sendMessageAsyncForJava__(message: Message): Future<MessageReceipt<Contact>> {
|
||||
open fun __sendMessageAsyncForJava__(message: Message): Future<MessageReceipt<out Contact>> {
|
||||
return future { sendMessage(message) }
|
||||
}
|
||||
|
||||
@ -146,7 +146,7 @@ actual abstract class ContactJavaHappyAPI {
|
||||
* @see Contact.sendMessage
|
||||
*/
|
||||
@JvmName("sendMessageAsync")
|
||||
open fun __sendMessageAsyncForJava__(message: String): Future<MessageReceipt<Contact>> {
|
||||
open fun __sendMessageAsyncForJava__(message: String): Future<MessageReceipt<out Contact>> {
|
||||
return future { sendMessage(message) }
|
||||
}
|
||||
|
||||
@ -225,7 +225,7 @@ actual abstract class MemberJavaHappyAPI : QQ() {
|
||||
*
|
||||
* 管理员可禁言成员, 群主可禁言管理员和群员.
|
||||
*
|
||||
* @param durationSeconds 持续时间. 精确到秒. 范围区间表示为 `(0s, 30days]`. 超过范围则会抛出异常.
|
||||
* @param seconds 持续时间. 精确到秒. 范围区间表示为 `(0s, 30days]`. 超过范围则会抛出异常.
|
||||
* @return 机器人无权限时返回 `false`
|
||||
*
|
||||
* @see Int.minutesToSeconds
|
||||
@ -286,7 +286,7 @@ actual abstract class MemberJavaHappyAPI : QQ() {
|
||||
*
|
||||
* 管理员可禁言成员, 群主可禁言管理员和群员.
|
||||
*
|
||||
* @param durationSeconds 持续时间. 精确到秒. 范围区间表示为 `(0s, 30days]`. 超过范围则会抛出异常.
|
||||
* @param seconds 持续时间. 精确到秒. 范围区间表示为 `(0s, 30days]`. 超过范围则会抛出异常.
|
||||
* @return 机器人无权限时返回 `false`
|
||||
*
|
||||
* @see Int.minutesToSeconds
|
||||
|
@ -11,13 +11,12 @@ package net.mamoe.mirai.contact
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.data.GroupAnnouncement
|
||||
import net.mamoe.mirai.data.GroupAnnouncementList
|
||||
import net.mamoe.mirai.data.MemberInfo
|
||||
import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.OfflineGroupImage
|
||||
import net.mamoe.mirai.utils.ExternalImage
|
||||
@ -182,6 +181,10 @@ actual abstract class Group : Contact(), CoroutineScope {
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
actual abstract override suspend fun sendMessage(message: Message): MessageReceipt<Group>
|
||||
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
@JvmSynthetic
|
||||
actual abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<Group>
|
||||
|
||||
/**
|
||||
|
@ -14,6 +14,10 @@ package net.mamoe.mirai.contact
|
||||
import net.mamoe.mirai.Bot
|
||||
import net.mamoe.mirai.JavaHappyAPI
|
||||
import net.mamoe.mirai.event.events.*
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||
import net.mamoe.mirai.utils.WeakRefProperty
|
||||
|
||||
@ -113,6 +117,21 @@ actual abstract class Member : MemberJavaHappyAPI() {
|
||||
@JvmSynthetic
|
||||
actual abstract suspend fun kick(message: String)
|
||||
|
||||
/**
|
||||
* 向这个对象发送消息.
|
||||
*
|
||||
* @see FriendMessageSendEvent 发送好友信息事件, cancellable
|
||||
* @see GroupMessageSendEvent 发送群消息事件. cancellable
|
||||
*
|
||||
* @throws EventCancelledException 当发送消息事件被取消
|
||||
* @throws IllegalStateException 发送群消息时若 [Bot] 被禁言抛出
|
||||
*
|
||||
* @return 消息回执. 可进行撤回 ([MessageReceipt.recall])
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
actual abstract override suspend fun sendMessage(message: Message): MessageReceipt<Member>
|
||||
|
||||
/**
|
||||
* 当且仅当 `[other] is [Member] && [other].id == this.id && [other].group == this.group` 时为 true
|
||||
*/
|
||||
|
@ -13,6 +13,7 @@ import net.mamoe.mirai.event.events.ImageUploadEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent
|
||||
import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent
|
||||
import net.mamoe.mirai.message.MessageReceipt
|
||||
import net.mamoe.mirai.message.data.Message
|
||||
import net.mamoe.mirai.message.data.MessageChain
|
||||
import net.mamoe.mirai.message.data.OfflineFriendImage
|
||||
import net.mamoe.mirai.utils.ExternalImage
|
||||
@ -88,7 +89,11 @@ actual abstract class QQ : Contact(), CoroutineScope {
|
||||
*/
|
||||
@JvmName("sendMessageSuspend")
|
||||
@JvmSynthetic
|
||||
actual abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<QQ>
|
||||
actual abstract override suspend fun sendMessage(message: Message): MessageReceipt<out QQ>
|
||||
|
||||
@JvmSynthetic
|
||||
@Deprecated("for binary compatibility", level = DeprecationLevel.HIDDEN)
|
||||
actual abstract override suspend fun sendMessage(message: MessageChain): MessageReceipt<out QQ>
|
||||
|
||||
/**
|
||||
* 上传一个图片以备发送.
|
||||
|
Loading…
Reference in New Issue
Block a user