Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
b6c24e00
Commit
b6c24e00
authored
Mar 29, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Plan for redesigning of MessageSource
parent
6d5b3086
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
90 additions
and
15 deletions
+90
-15
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
...mmonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
+4
-2
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt
...ain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt
...in/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt
+2
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/QQImpl.kt
...onMain/kotlin/net/mamoe/mirai/qqandroid/contact/QQImpl.kt
+1
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/MessageSourceImpl.kt
...in/net/mamoe/mirai/qqandroid/message/MessageSourceImpl.kt
+3
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/messages.kt
...Main/kotlin/net/mamoe/mirai/qqandroid/message/messages.kt
+1
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/MultiMsg.kt
.../mirai/qqandroid/network/protocol/packet/chat/MultiMsg.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt
...ndroid/network/protocol/packet/chat/receive/MessageSvc.kt
+2
-2
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/Bot.kt
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/Bot.kt
+2
-0
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt
.../androidMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt
+4
-0
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/MessageReceipt.kt
...roidMain/kotlin/net/mamoe/mirai/message/MessageReceipt.kt
+7
-2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt
+11
-0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessageReceipt.kt
...mmonMain/kotlin/net.mamoe.mirai/message/MessageReceipt.kt
+15
-1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt
...nMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt
+1
-0
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageSource.kt
...Main/kotlin/net.mamoe.mirai/message/data/MessageSource.kt
+20
-2
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/QuoteReply.kt
...monMain/kotlin/net.mamoe.mirai/message/data/QuoteReply.kt
+4
-2
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/Bot.kt
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/Bot.kt
+2
-0
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt
.../src/jvmMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt
+4
-0
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/MessageReceipt.kt
.../jvmMain/kotlin/net/mamoe/mirai/message/MessageReceipt.kt
+5
-1
No files found.
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.kt
View file @
b6c24e00
...
@@ -163,6 +163,7 @@ internal abstract class QQAndroidBotBase constructor(
...
@@ -163,6 +163,7 @@ internal abstract class QQAndroidBotBase constructor(
TODO
(
"not implemented"
)
TODO
(
"not implemented"
)
}
}
@ExperimentalMessageSource
override
suspend
fun
recall
(
source
:
MessageSource
)
{
override
suspend
fun
recall
(
source
:
MessageSource
)
{
if
(
source
.
senderId
!=
uin
&&
source
.
groupId
!=
0L
)
{
if
(
source
.
senderId
!=
uin
&&
source
.
groupId
!=
0L
)
{
getGroup
(
source
.
groupId
).
checkBotPermissionOperator
()
getGroup
(
source
.
groupId
).
checkBotPermissionOperator
()
...
@@ -382,8 +383,9 @@ internal abstract class QQAndroidBotBase constructor(
...
@@ -382,8 +383,9 @@ internal abstract class QQAndroidBotBase constructor(
val
data
=
chain
.
calculateValidationDataForGroup
(
val
data
=
chain
.
calculateValidationDataForGroup
(
sequenceId
=
client
.
atomicNextMessageSequenceId
(),
sequenceId
=
client
.
atomicNextMessageSequenceId
(),
time
=
time
.
toInt
(),
time
=
time
.
toInt
(),
random
=
Random
.
nextInt
().
absoluteValue
.
toULong
().
toLong
(),
random
=
Random
.
nextInt
().
absoluteValue
.
toUInt
(),
group
groupCode
,
group
.
botAsMember
.
nameCardOrNick
)
)
val
response
=
val
response
=
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt
View file @
b6c24e00
...
@@ -278,7 +278,7 @@ internal class GroupImpl(
...
@@ -278,7 +278,7 @@ internal class GroupImpl(
check
(!
isBotMuted
)
{
"bot is muted. Remaining seconds=$botMuteRemaining"
}
check
(!
isBotMuted
)
{
"bot is muted. Remaining seconds=$botMuteRemaining"
}
val
event
=
GroupMessageSendEvent
(
this
,
message
.
asMessageChain
()).
broadcast
()
val
event
=
GroupMessageSendEvent
(
this
,
message
.
asMessageChain
()).
broadcast
()
if
(
event
.
isCancelled
)
{
if
(
event
.
isCancelled
)
{
throw
EventCancelledException
(
"cancelled by
Friend
MessageSendEvent"
)
throw
EventCancelledException
(
"cancelled by
Group
MessageSendEvent"
)
}
}
lateinit
var
source
:
MessageSourceFromSendGroup
lateinit
var
source
:
MessageSourceFromSendGroup
bot
.
network
.
run
{
bot
.
network
.
run
{
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt
View file @
b6c24e00
...
@@ -7,6 +7,8 @@
...
@@ -7,6 +7,8 @@
* https://github.com/mamoe/mirai/blob/master/LICENSE
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
*/
@
file
:
Suppress
(
"EXPERIMENTAL_API_USAGE"
)
package
net.mamoe.mirai.qqandroid.contact
package
net.mamoe.mirai.qqandroid.contact
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/QQImpl.kt
View file @
b6c24e00
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
*/
*/
@
file
:
OptIn
(
MiraiInternalAPI
::
class
,
LowLevelAPI
::
class
)
@
file
:
OptIn
(
MiraiInternalAPI
::
class
,
LowLevelAPI
::
class
)
@
file
:
Suppress
(
"EXPERIMENTAL_API_USAGE"
)
package
net.mamoe.mirai.qqandroid.contact
package
net.mamoe.mirai.qqandroid.contact
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/MessageSourceImpl.kt
View file @
b6c24e00
...
@@ -7,6 +7,8 @@
...
@@ -7,6 +7,8 @@
* https://github.com/mamoe/mirai/blob/master/LICENSE
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
*/
@
file
:
Suppress
(
"EXPERIMENTAL_API_USAGE"
,
"EXPERIMENTAL_OVERRIDE"
)
package
net.mamoe.mirai.qqandroid.message
package
net.mamoe.mirai.qqandroid.message
import
kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.CoroutineScope
...
@@ -146,7 +148,7 @@ internal abstract class MessageSourceFromSend : MessageSource {
...
@@ -146,7 +148,7 @@ internal abstract class MessageSourceFromSend : MessageSource {
}
}
private
val
elems
by
lazy
{
private
val
elems
by
lazy
{
originalMessage
.
toRichTextElems
(
groupId
!=
0L
)
originalMessage
.
toRichTextElems
(
groupId
!=
0L
,
true
)
}
}
private
fun
toJceDataImplForFriend
():
ImMsgBody
.
SourceMsg
{
private
fun
toJceDataImplForFriend
():
ImMsgBody
.
SourceMsg
{
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/messages.kt
View file @
b6c24e00
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
* https://github.com/mamoe/mirai/blob/master/LICENSE
* https://github.com/mamoe/mirai/blob/master/LICENSE
*/
*/
@
file
:
OptIn
(
MiraiExperimentalAPI
::
class
,
MiraiInternalAPI
::
class
,
LowLevelAPI
::
class
,
ExperimentalUnsignedTypes
::
class
)
@
file
:
OptIn
(
MiraiExperimentalAPI
::
class
,
MiraiInternalAPI
::
class
,
LowLevelAPI
::
class
,
ExperimentalUnsignedTypes
::
class
)
@
file
:
Suppress
(
"EXPERIMENTAL_API_USAGE"
)
package
net.mamoe.mirai.qqandroid.message
package
net.mamoe.mirai.qqandroid.message
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/MultiMsg.kt
View file @
b6c24e00
...
@@ -52,7 +52,7 @@ internal fun MessageChain.calculateValidationDataForGroup(
...
@@ -52,7 +52,7 @@ internal fun MessageChain.calculateValidationDataForGroup(
groupCode
:
Long
,
groupCode
:
Long
,
botMemberNameCard
:
String
botMemberNameCard
:
String
):
MessageValidationData
{
):
MessageValidationData
{
val
richTextElems
=
this
.
toRichTextElems
(
true
)
val
richTextElems
=
this
.
toRichTextElems
(
true
,
false
)
val
msgTransmit
=
MsgTransmit
.
PbMultiMsgTransmit
(
val
msgTransmit
=
MsgTransmit
.
PbMultiMsgTransmit
(
msg
=
listOf
(
msg
=
listOf
(
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt
View file @
b6c24e00
...
@@ -319,7 +319,7 @@ internal class MessageSvc {
...
@@ -319,7 +319,7 @@ internal class MessageSvc {
contentHead
=
MsgComm
.
ContentHead
(
pkgNum
=
1
),
contentHead
=
MsgComm
.
ContentHead
(
pkgNum
=
1
),
msgBody
=
ImMsgBody
.
MsgBody
(
msgBody
=
ImMsgBody
.
MsgBody
(
richText
=
ImMsgBody
.
RichText
(
richText
=
ImMsgBody
.
RichText
(
elems
=
message
.
toRichTextElems
(
false
)
elems
=
message
.
toRichTextElems
(
false
,
true
)
)
)
),
),
msgSeq
=
source
.
sequenceId
,
msgSeq
=
source
.
sequenceId
,
...
@@ -372,7 +372,7 @@ internal class MessageSvc {
...
@@ -372,7 +372,7 @@ internal class MessageSvc {
contentHead
=
MsgComm
.
ContentHead
(
pkgNum
=
1
),
contentHead
=
MsgComm
.
ContentHead
(
pkgNum
=
1
),
msgBody
=
ImMsgBody
.
MsgBody
(
msgBody
=
ImMsgBody
.
MsgBody
(
richText
=
ImMsgBody
.
RichText
(
richText
=
ImMsgBody
.
RichText
(
elems
=
message
.
toRichTextElems
(
true
)
elems
=
message
.
toRichTextElems
(
true
,
true
)
)
)
),
),
msgSeq
=
client
.
atomicNextMessageSequenceId
(),
msgSeq
=
client
.
atomicNextMessageSequenceId
(),
...
...
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/Bot.kt
View file @
b6c24e00
...
@@ -7,6 +7,7 @@ import kotlinx.coroutines.io.ByteReadChannel
...
@@ -7,6 +7,7 @@ import kotlinx.coroutines.io.ByteReadChannel
import
net.mamoe.mirai.contact.*
import
net.mamoe.mirai.contact.*
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.data.ExperimentalMessageSource
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageSource
import
net.mamoe.mirai.message.data.MessageSource
...
@@ -152,6 +153,7 @@ actual abstract class Bot actual constructor() : CoroutineScope, LowLevelBotAPIA
...
@@ -152,6 +153,7 @@ actual abstract class Bot actual constructor() : CoroutineScope, LowLevelBotAPIA
* @see _lowLevelRecallFriendMessage 低级 API
* @see _lowLevelRecallFriendMessage 低级 API
* @see _lowLevelRecallGroupMessage 低级 API
* @see _lowLevelRecallGroupMessage 低级 API
*/
*/
@ExperimentalMessageSource
@JvmSynthetic
@JvmSynthetic
actual
abstract
suspend
fun
recall
(
source
:
MessageSource
)
actual
abstract
suspend
fun
recall
(
source
:
MessageSource
)
...
...
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt
View file @
b6c24e00
...
@@ -5,6 +5,7 @@ import net.mamoe.mirai.contact.PermissionDeniedException
...
@@ -5,6 +5,7 @@ import net.mamoe.mirai.contact.PermissionDeniedException
import
net.mamoe.mirai.contact.recall
import
net.mamoe.mirai.contact.recall
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.data.ExperimentalMessageSource
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageSource
import
net.mamoe.mirai.message.data.MessageSource
...
@@ -61,6 +62,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
...
@@ -61,6 +62,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
*
*
* @see Bot.recall (扩展函数) 接受参数 [MessageChain]
* @see Bot.recall (扩展函数) 接受参数 [MessageChain]
*/
*/
@ExperimentalMessageSource
@JvmName
(
"recall"
)
@JvmName
(
"recall"
)
fun
__recallBlockingForJava__
(
source
:
MessageSource
)
{
fun
__recallBlockingForJava__
(
source
:
MessageSource
)
{
runBlocking
{
recall
(
source
)
}
runBlocking
{
recall
(
source
)
}
...
@@ -88,6 +90,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
...
@@ -88,6 +90,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
* @param millis 延迟的时间, 单位为毫秒
* @param millis 延迟的时间, 单位为毫秒
* @see recall
* @see recall
*/
*/
@ExperimentalMessageSource
@JvmName
(
"recallIn"
)
@JvmName
(
"recallIn"
)
fun
__recallIn_MemberForJava__
(
source
:
MessageSource
,
millis
:
Long
)
{
fun
__recallIn_MemberForJava__
(
source
:
MessageSource
,
millis
:
Long
)
{
runBlocking
{
recallIn
(
source
,
millis
)
}
runBlocking
{
recallIn
(
source
,
millis
)
}
...
@@ -148,6 +151,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
...
@@ -148,6 +151,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
/**
/**
* 异步调用 [__recallBlockingForJava__]
* 异步调用 [__recallBlockingForJava__]
*/
*/
@ExperimentalMessageSource
@JvmName
(
"recallAsync"
)
@JvmName
(
"recallAsync"
)
fun
__recallAsyncForJava__
(
source
:
MessageSource
):
Future
<
Unit
>
{
fun
__recallAsyncForJava__
(
source
:
MessageSource
):
Future
<
Unit
>
{
return
future
{
recall
(
source
)
}
return
future
{
recall
(
source
)
}
...
...
mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/MessageReceipt.kt
View file @
b6c24e00
...
@@ -29,7 +29,8 @@ import net.mamoe.mirai.utils.unsafeWeakRef
...
@@ -29,7 +29,8 @@ import net.mamoe.mirai.utils.unsafeWeakRef
*/
*/
@Suppress
(
"FunctionName"
)
@Suppress
(
"FunctionName"
)
@OptIn
(
MiraiInternalAPI
::
class
)
@OptIn
(
MiraiInternalAPI
::
class
)
actual
open
class
MessageReceipt
<
C
:
Contact
>
actual
constructor
(
actual
open
class
MessageReceipt
<
C
:
Contact
>
@OptIn
(
ExperimentalMessageSource
::
class
)
actual
constructor
(
actual
val
source
:
MessageSource
,
actual
val
source
:
MessageSource
,
target
:
C
,
target
:
C
,
private
val
botAsMember
:
Member
?
private
val
botAsMember
:
Member
?
...
@@ -56,6 +57,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
...
@@ -56,6 +57,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
* @see Bot.recall
* @see Bot.recall
* @throws IllegalStateException 当此消息已经被撤回或正计划撤回时
* @throws IllegalStateException 当此消息已经被撤回或正计划撤回时
*/
*/
@OptIn
(
ExperimentalMessageSource
::
class
)
actual
suspend
fun
recall
()
{
actual
suspend
fun
recall
()
{
@Suppress
(
"BooleanLiteralArgument"
)
@Suppress
(
"BooleanLiteralArgument"
)
if
(
_isRecalled
.
compareAndSet
(
false
,
true
))
{
if
(
_isRecalled
.
compareAndSet
(
false
,
true
))
{
...
@@ -82,7 +84,8 @@ actual open class MessageReceipt<C : Contact> actual constructor(
...
@@ -82,7 +84,8 @@ actual open class MessageReceipt<C : Contact> actual constructor(
if
(
_isRecalled
.
compareAndSet
(
false
,
true
))
{
if
(
_isRecalled
.
compareAndSet
(
false
,
true
))
{
return
when
(
val
contact
=
target
)
{
return
when
(
val
contact
=
target
)
{
is
QQ
,
is
QQ
,
is
Group
->
contact
.
bot
.
recallIn
(
source
,
millis
)
is
Group
,
->
contact
.
bot
.
recallIn
(
source
,
millis
)
else
->
error
(
"Unknown contact type"
)
else
->
error
(
"Unknown contact type"
)
}
}
}
else
error
(
"message is already or planned to be recalled"
)
}
else
error
(
"message is already or planned to be recalled"
)
...
@@ -92,6 +95,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
...
@@ -92,6 +95,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
* [确保 sequenceId可用][MessageSource.ensureSequenceIdAvailable] 然后引用这条消息.
* [确保 sequenceId可用][MessageSource.ensureSequenceIdAvailable] 然后引用这条消息.
* @see MessageChain.quote 引用一条消息
* @see MessageChain.quote 引用一条消息
*/
*/
@OptIn
(
ExperimentalMessageSource
::
class
)
actual
open
suspend
fun
quote
():
QuoteReplyToSend
{
actual
open
suspend
fun
quote
():
QuoteReplyToSend
{
this
.
source
.
ensureSequenceIdAvailable
()
this
.
source
.
ensureSequenceIdAvailable
()
@OptIn
(
LowLevelAPI
::
class
)
@OptIn
(
LowLevelAPI
::
class
)
...
@@ -105,6 +109,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
...
@@ -105,6 +109,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
*
*
* @see MessageChain.quote 引用一条消息
* @see MessageChain.quote 引用一条消息
*/
*/
@OptIn
(
ExperimentalMessageSource
::
class
)
@LowLevelAPI
@LowLevelAPI
@Suppress
(
"FunctionName"
)
@Suppress
(
"FunctionName"
)
actual
fun
_unsafeQuote
():
QuoteReplyToSend
{
actual
fun
_unsafeQuote
():
QuoteReplyToSend
{
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt
View file @
b6c24e00
...
@@ -19,6 +19,7 @@ import kotlinx.coroutines.launch
...
@@ -19,6 +19,7 @@ import kotlinx.coroutines.launch
import
net.mamoe.mirai.contact.*
import
net.mamoe.mirai.contact.*
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.data.ExperimentalMessageSource
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageSource
import
net.mamoe.mirai.message.data.MessageSource
...
@@ -33,6 +34,7 @@ import kotlin.jvm.JvmSynthetic
...
@@ -33,6 +34,7 @@ import kotlin.jvm.JvmSynthetic
/**
/**
* 登录, 返回 [this]
* 登录, 返回 [this]
*/
*/
@JvmSynthetic
suspend
inline
fun
<
B
:
Bot
>
B
.
alsoLogin
():
B
=
also
{
login
()
}
suspend
inline
fun
<
B
:
Bot
>
B
.
alsoLogin
():
B
=
also
{
login
()
}
// 任何人都能看到这个方法
// 任何人都能看到这个方法
...
@@ -167,6 +169,7 @@ expect abstract class Bot() : CoroutineScope, LowLevelBotAPIAccessor {
...
@@ -167,6 +169,7 @@ expect abstract class Bot() : CoroutineScope, LowLevelBotAPIAccessor {
* @see _lowLevelRecallFriendMessage 低级 API
* @see _lowLevelRecallFriendMessage 低级 API
* @see _lowLevelRecallGroupMessage 低级 API
* @see _lowLevelRecallGroupMessage 低级 API
*/
*/
@ExperimentalMessageSource
@JvmSynthetic
@JvmSynthetic
abstract
suspend
fun
recall
(
source
:
MessageSource
)
abstract
suspend
fun
recall
(
source
:
MessageSource
)
...
@@ -223,6 +226,7 @@ expect abstract class Bot() : CoroutineScope, LowLevelBotAPIAccessor {
...
@@ -223,6 +226,7 @@ expect abstract class Bot() : CoroutineScope, LowLevelBotAPIAccessor {
* @throws PermissionDeniedException 当 [Bot] 无权限操作时
* @throws PermissionDeniedException 当 [Bot] 无权限操作时
* @see Bot.recall
* @see Bot.recall
*/
*/
@JvmSynthetic
suspend
inline
fun
Bot
.
recall
(
message
:
MessageChain
)
=
this
.
recall
(
message
[
MessageSource
])
suspend
inline
fun
Bot
.
recall
(
message
:
MessageChain
)
=
this
.
recall
(
message
[
MessageSource
])
/**
/**
...
@@ -233,6 +237,7 @@ suspend inline fun Bot.recall(message: MessageChain) = this.recall(message[Messa
...
@@ -233,6 +237,7 @@ suspend inline fun Bot.recall(message: MessageChain) = this.recall(message[Messa
* @param coroutineContext 额外的 [CoroutineContext]
* @param coroutineContext 额外的 [CoroutineContext]
* @see recall
* @see recall
*/
*/
@JvmSynthetic
inline
fun
Bot
.
recallIn
(
inline
fun
Bot
.
recallIn
(
source
:
MessageSource
,
source
:
MessageSource
,
millis
:
Long
,
millis
:
Long
,
...
@@ -249,6 +254,7 @@ inline fun Bot.recallIn(
...
@@ -249,6 +254,7 @@ inline fun Bot.recallIn(
* @param coroutineContext 额外的 [CoroutineContext]
* @param coroutineContext 额外的 [CoroutineContext]
* @see recall
* @see recall
*/
*/
@JvmSynthetic
inline
fun
Bot
.
recallIn
(
inline
fun
Bot
.
recallIn
(
message
:
MessageChain
,
message
:
MessageChain
,
millis
:
Long
,
millis
:
Long
,
...
@@ -265,15 +271,20 @@ inline fun Bot.recallIn(
...
@@ -265,15 +271,20 @@ inline fun Bot.recallIn(
*
*
* @param cause 原因. 为 null 时视为正常关闭, 非 null 时视为异常关闭
* @param cause 原因. 为 null 时视为正常关闭, 非 null 时视为异常关闭
*/
*/
@JvmSynthetic
suspend
inline
fun
Bot
.
closeAndJoin
(
cause
:
Throwable
?
=
null
)
{
suspend
inline
fun
Bot
.
closeAndJoin
(
cause
:
Throwable
?
=
null
)
{
close
(
cause
)
close
(
cause
)
coroutineContext
[
Job
]
?.
join
()
coroutineContext
[
Job
]
?.
join
()
}
}
@JvmSynthetic
inline
fun
Bot
.
containsFriend
(
id
:
Long
):
Boolean
=
this
.
friends
.
contains
(
id
)
inline
fun
Bot
.
containsFriend
(
id
:
Long
):
Boolean
=
this
.
friends
.
contains
(
id
)
@JvmSynthetic
inline
fun
Bot
.
containsGroup
(
id
:
Long
):
Boolean
=
this
.
groups
.
contains
(
id
)
inline
fun
Bot
.
containsGroup
(
id
:
Long
):
Boolean
=
this
.
groups
.
contains
(
id
)
@JvmSynthetic
inline
fun
Bot
.
getFriendOrNull
(
id
:
Long
):
QQ
?
=
this
.
friends
.
getOrNull
(
id
)
inline
fun
Bot
.
getFriendOrNull
(
id
:
Long
):
QQ
?
=
this
.
friends
.
getOrNull
(
id
)
@JvmSynthetic
inline
fun
Bot
.
getGroupOrNull
(
id
:
Long
):
Group
?
=
this
.
groups
.
getOrNull
(
id
)
inline
fun
Bot
.
getGroupOrNull
(
id
:
Long
):
Group
?
=
this
.
groups
.
getOrNull
(
id
)
\ No newline at end of file
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessageReceipt.kt
View file @
b6c24e00
...
@@ -15,12 +15,16 @@ import net.mamoe.mirai.LowLevelAPI
...
@@ -15,12 +15,16 @@ import net.mamoe.mirai.LowLevelAPI
import
net.mamoe.mirai.contact.*
import
net.mamoe.mirai.contact.*
import
net.mamoe.mirai.message.data.*
import
net.mamoe.mirai.message.data.*
import
net.mamoe.mirai.recallIn
import
net.mamoe.mirai.recallIn
import
kotlin.jvm.JvmSynthetic
/**
/**
* 发送消息后得到的回执. 可用于撤回.
* 发送消息后得到的回执. 可用于撤回.
*
*
* 此对象持有 [Contact] 的弱引用, [Bot] 离线后将会释放引用, 届时 [target] 将无法访问.
* 此对象持有 [Contact] 的弱引用, [Bot] 离线后将会释放引用, 届时 [target] 将无法访问.
*
*
* @param source 指代发送出去的消息
* @param target 消息发送对象
*
* @see Group.sendMessage 发送群消息, 返回回执(此对象)
* @see Group.sendMessage 发送群消息, 返回回执(此对象)
* @see QQ.sendMessage 发送群消息, 返回回执(此对象)
* @see QQ.sendMessage 发送群消息, 返回回执(此对象)
*
*
...
@@ -28,11 +32,15 @@ import net.mamoe.mirai.recallIn
...
@@ -28,11 +32,15 @@ import net.mamoe.mirai.recallIn
* @see MessageReceipt.sourceSequenceId 源序列号
* @see MessageReceipt.sourceSequenceId 源序列号
* @see MessageReceipt.sourceTime 源时间
* @see MessageReceipt.sourceTime 源时间
*/
*/
expect
open
class
MessageReceipt
<
C
:
Contact
>(
expect
open
class
MessageReceipt
<
C
:
Contact
>
@OptIn
(
ExperimentalMessageSource
::
class
)
constructor
(
source
:
MessageSource
,
source
:
MessageSource
,
target
:
C
,
target
:
C
,
botAsMember
:
Member
?
botAsMember
:
Member
?
)
{
)
{
/**
* 指代发送出去的消息
*/
@ExperimentalMessageSource
val
source
:
MessageSource
val
source
:
MessageSource
/**
/**
...
@@ -90,6 +98,8 @@ expect open class MessageReceipt<C : Contact>(
...
@@ -90,6 +98,8 @@ expect open class MessageReceipt<C : Contact>(
*
*
* @see MessageSource.id
* @see MessageSource.id
*/
*/
@
get
:
JvmSynthetic
@ExperimentalMessageSource
inline
val
MessageReceipt
<*>.
sourceId
:
Long
get
()
=
this
.
source
.
id
inline
val
MessageReceipt
<*>.
sourceId
:
Long
get
()
=
this
.
source
.
id
/**
/**
...
@@ -97,6 +107,8 @@ inline val MessageReceipt<*>.sourceId: Long get() = this.source.id
...
@@ -97,6 +107,8 @@ inline val MessageReceipt<*>.sourceId: Long get() = this.source.id
*
*
* @see MessageSource.sequenceId
* @see MessageSource.sequenceId
*/
*/
@
get
:
JvmSynthetic
@ExperimentalMessageSource
inline
val
MessageReceipt
<*>.
sourceSequenceId
:
Int
get
()
=
this
.
source
.
sequenceId
inline
val
MessageReceipt
<*>.
sourceSequenceId
:
Int
get
()
=
this
.
source
.
sequenceId
/**
/**
...
@@ -104,6 +116,8 @@ inline val MessageReceipt<*>.sourceSequenceId: Int get() = this.source.sequenceI
...
@@ -104,6 +116,8 @@ inline val MessageReceipt<*>.sourceSequenceId: Int get() = this.source.sequenceI
*
*
* @see MessageSource.time
* @see MessageSource.time
*/
*/
@
get
:
JvmSynthetic
@ExperimentalMessageSource
inline
val
MessageReceipt
<*>.
sourceTime
:
Long
get
()
=
this
.
source
.
time
inline
val
MessageReceipt
<*>.
sourceTime
:
Long
get
()
=
this
.
source
.
time
suspend
inline
fun
MessageReceipt
<
out
Contact
>.
quoteReply
(
message
:
Message
)
{
suspend
inline
fun
MessageReceipt
<
out
Contact
>.
quoteReply
(
message
:
Message
)
{
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt
View file @
b6c24e00
...
@@ -127,6 +127,7 @@ inline fun <reified M : Message> MessageChain.any(): Boolean = this.any { it is
...
@@ -127,6 +127,7 @@ inline fun <reified M : Message> MessageChain.any(): Boolean = this.any { it is
/**
/**
* 获取第一个 [M] 类型的 [Message] 实例
* 获取第一个 [M] 类型的 [Message] 实例
*/
*/
@OptIn
(
ExperimentalMessageSource
::
class
)
@JvmSynthetic
@JvmSynthetic
@Suppress
(
"UNCHECKED_CAST"
)
@Suppress
(
"UNCHECKED_CAST"
)
fun
<
M
:
Message
>
MessageChain
.
firstOrNull
(
key
:
Message
.
Key
<
M
>):
M
?
=
when
(
key
)
{
fun
<
M
:
Message
>
MessageChain
.
firstOrNull
(
key
:
Message
.
Key
<
M
>):
M
?
=
when
(
key
)
{
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageSource.kt
View file @
b6c24e00
...
@@ -19,6 +19,12 @@ import kotlin.jvm.JvmMultifileClass
...
@@ -19,6 +19,12 @@ import kotlin.jvm.JvmMultifileClass
import
kotlin.jvm.JvmName
import
kotlin.jvm.JvmName
import
kotlin.jvm.JvmSynthetic
import
kotlin.jvm.JvmSynthetic
/**
* MessageSource 正计划于 0.32 或 0.33 或之后进行 API 不兼容的重写.
*/
@RequiresOptIn
(
message
=
"MessageSource 正计划于 0.32 或 0.33 或之后进行 API 不兼容的重写"
,
level
=
RequiresOptIn
.
Level
.
WARNING
)
annotation
class
ExperimentalMessageSource
/**
/**
* 消息源, 它存在于 [MessageChain] 中, 用于表示这个消息的来源.
* 消息源, 它存在于 [MessageChain] 中, 用于表示这个消息的来源.
*
*
...
@@ -29,6 +35,7 @@ import kotlin.jvm.JvmSynthetic
...
@@ -29,6 +35,7 @@ import kotlin.jvm.JvmSynthetic
* @see Bot.recall 撤回一条消息
* @see Bot.recall 撤回一条消息
* @see MessageSource.quote 引用这条消息, 创建 [MessageChain]
* @see MessageSource.quote 引用这条消息, 创建 [MessageChain]
*/
*/
@ExperimentalMessageSource
interface
MessageSource
:
Message
,
MessageMetadata
{
interface
MessageSource
:
Message
,
MessageMetadata
{
companion
object
Key
:
Message
.
Key
<
MessageSource
>
companion
object
Key
:
Message
.
Key
<
MessageSource
>
...
@@ -82,6 +89,7 @@ interface MessageSource : Message, MessageMetadata {
...
@@ -82,6 +89,7 @@ interface MessageSource : Message, MessageMetadata {
* 序列号. 若是机器人发出去的消息, 请先 [确保 sequenceId 可用][MessageSource.ensureSequenceIdAvailable]
* 序列号. 若是机器人发出去的消息, 请先 [确保 sequenceId 可用][MessageSource.ensureSequenceIdAvailable]
* @see MessageSource.id
* @see MessageSource.id
*/
*/
@ExperimentalMessageSource
@
get
:
JvmSynthetic
@
get
:
JvmSynthetic
inline
val
MessageSource
.
sequenceId
:
Int
inline
val
MessageSource
.
sequenceId
:
Int
get
()
=
(
this
.
id
shr
32
).
toInt
()
get
()
=
(
this
.
id
shr
32
).
toInt
()
...
@@ -90,6 +98,7 @@ inline val MessageSource.sequenceId: Int
...
@@ -90,6 +98,7 @@ inline val MessageSource.sequenceId: Int
* 消息随机数. 由服务器或客户端指定后不能更改. 它是消息 id 的一部分.
* 消息随机数. 由服务器或客户端指定后不能更改. 它是消息 id 的一部分.
* @see MessageSource.id
* @see MessageSource.id
*/
*/
@ExperimentalMessageSource
@
get
:
JvmSynthetic
@
get
:
JvmSynthetic
inline
val
MessageSource
.
messageRandom
:
Int
inline
val
MessageSource
.
messageRandom
:
Int
get
()
=
this
.
id
.
toInt
()
get
()
=
this
.
id
.
toInt
()
...
@@ -98,24 +107,33 @@ inline val MessageSource.messageRandom: Int
...
@@ -98,24 +107,33 @@ inline val MessageSource.messageRandom: Int
/**
/**
* 消息 id.
* 消息 id.
*
* 仅接收到的消息才可以获取这个 id.
*
* @see MessageSource.id
* @see MessageSource.id
*/
*/
@ExperimentalMessageSource
@
get
:
JvmSynthetic
@
get
:
JvmSynthetic
inline
val
MessageChain
.
id
:
Long
inline
val
MessageChain
.
id
:
Long
get
()
=
this
[
MessageSource
].
id
get
()
=
this
[
MessageSource
].
id
/**
/**
* 消息序列号, 可能来自服务器也可以发送时赋值, 不唯一.
* 消息序列号, 可能来自服务器也可以发送时赋值, 不唯一.
*
* 仅接收到的消息才可以获取这个序列号.
*
* @see MessageSource.id
* @see MessageSource.id
*/
*/
@ExperimentalMessageSource
@
get
:
JvmSynthetic
@
get
:
JvmSynthetic
inline
val
MessageChain
.
sequenceId
:
Int
inline
val
MessageChain
.
sequenceId
:
Int
get
()
=
this
[
MessageSource
].
sequenceId
get
()
=
this
.
getOrNull
(
MessageSource
)
?.
sequenceId
?:
error
(
"Only MessageChain from server has sequenceId"
)
/**
/**
* 消息随机数. 由服务器或客户端指定后不能更改. 它是消息 id 的一部分.
* 消息随机数. 由服务器或客户端指定后不能更改. 它是消息 id 的一部分.
* @see MessageSource.id
* @see MessageSource.id
*/
*/
@ExperimentalMessageSource
@
get
:
JvmSynthetic
@
get
:
JvmSynthetic
inline
val
MessageChain
.
messageRandom
:
Int
inline
val
MessageChain
.
messageRandom
:
Int
get
()
=
this
[
MessageSource
].
messageRandom
get
()
=
this
.
getOrNull
(
MessageSource
)
?.
messageRandom
?:
error
(
"Only MessageChain from server has sequenceId"
)
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/QuoteReply.kt
View file @
b6c24e00
...
@@ -29,6 +29,7 @@ import kotlin.jvm.JvmName
...
@@ -29,6 +29,7 @@ import kotlin.jvm.JvmName
* 总是使用 [quote] 来构造这个实例.
* 总是使用 [quote] 来构造这个实例.
*/
*/
open
class
QuoteReply
open
class
QuoteReply
@OptIn
(
ExperimentalMessageSource
::
class
)
@MiraiInternalAPI
constructor
(
val
source
:
MessageSource
)
:
Message
,
MessageMetadata
{
@MiraiInternalAPI
constructor
(
val
source
:
MessageSource
)
:
Message
,
MessageMetadata
{
companion
object
Key
:
Message
.
Key
<
QuoteReply
>
companion
object
Key
:
Message
.
Key
<
QuoteReply
>
...
@@ -39,7 +40,7 @@ open class QuoteReply
...
@@ -39,7 +40,7 @@ open class QuoteReply
* 用于发送的引用回复.
* 用于发送的引用回复.
* 总是使用 [quote] 来构造实例.
* 总是使用 [quote] 来构造实例.
*/
*/
@OptIn
(
MiraiInternalAPI
::
class
)
@OptIn
(
MiraiInternalAPI
::
class
,
ExperimentalMessageSource
::
class
)
sealed
class
QuoteReplyToSend
sealed
class
QuoteReplyToSend
@MiraiInternalAPI
constructor
(
source
:
MessageSource
)
:
QuoteReply
(
source
)
{
@MiraiInternalAPI
constructor
(
source
:
MessageSource
)
:
QuoteReply
(
source
)
{
class
ToGroup
(
source
:
MessageSource
,
val
sender
:
QQ
)
:
QuoteReplyToSend
(
source
)
{
class
ToGroup
(
source
:
MessageSource
,
val
sender
:
QQ
)
:
QuoteReplyToSend
(
source
)
{
...
@@ -53,7 +54,7 @@ sealed class QuoteReplyToSend
...
@@ -53,7 +54,7 @@ sealed class QuoteReplyToSend
* 引用这条消息.
* 引用这条消息.
* @see sender 消息发送人.
* @see sender 消息发送人.
*/
*/
@OptIn
(
MiraiInternalAPI
::
class
)
@OptIn
(
MiraiInternalAPI
::
class
,
ExperimentalMessageSource
::
class
)
fun
MessageChain
.
quote
(
sender
:
QQ
?):
QuoteReplyToSend
{
fun
MessageChain
.
quote
(
sender
:
QQ
?):
QuoteReplyToSend
{
this
.
firstOrNull
<
MessageSource
>()
?.
let
{
this
.
firstOrNull
<
MessageSource
>()
?.
let
{
return
it
.
quote
(
sender
)
return
it
.
quote
(
sender
)
...
@@ -65,6 +66,7 @@ fun MessageChain.quote(sender: QQ?): QuoteReplyToSend {
...
@@ -65,6 +66,7 @@ fun MessageChain.quote(sender: QQ?): QuoteReplyToSend {
* 引用这条消息.
* 引用这条消息.
* @see from 消息来源. 若是好友发送
* @see from 消息来源. 若是好友发送
*/
*/
@ExperimentalMessageSource
@OptIn
(
MiraiInternalAPI
::
class
)
@OptIn
(
MiraiInternalAPI
::
class
)
fun
MessageSource
.
quote
(
from
:
QQ
?):
QuoteReplyToSend
{
fun
MessageSource
.
quote
(
from
:
QQ
?):
QuoteReplyToSend
{
return
if
(
this
.
groupId
!=
0L
)
{
return
if
(
this
.
groupId
!=
0L
)
{
...
...
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/Bot.kt
View file @
b6c24e00
...
@@ -7,6 +7,7 @@ import kotlinx.coroutines.io.ByteReadChannel
...
@@ -7,6 +7,7 @@ import kotlinx.coroutines.io.ByteReadChannel
import
net.mamoe.mirai.contact.*
import
net.mamoe.mirai.contact.*
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.data.ExperimentalMessageSource
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageSource
import
net.mamoe.mirai.message.data.MessageSource
...
@@ -162,6 +163,7 @@ actual abstract class Bot actual constructor() : CoroutineScope, LowLevelBotAPIA
...
@@ -162,6 +163,7 @@ actual abstract class Bot actual constructor() : CoroutineScope, LowLevelBotAPIA
* @see _lowLevelRecallFriendMessage 低级 API
* @see _lowLevelRecallFriendMessage 低级 API
* @see _lowLevelRecallGroupMessage 低级 API
* @see _lowLevelRecallGroupMessage 低级 API
*/
*/
@ExperimentalMessageSource
@JvmSynthetic
@JvmSynthetic
actual
abstract
suspend
fun
recall
(
source
:
MessageSource
)
actual
abstract
suspend
fun
recall
(
source
:
MessageSource
)
...
...
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt
View file @
b6c24e00
...
@@ -5,6 +5,7 @@ import net.mamoe.mirai.contact.PermissionDeniedException
...
@@ -5,6 +5,7 @@ import net.mamoe.mirai.contact.PermissionDeniedException
import
net.mamoe.mirai.contact.recall
import
net.mamoe.mirai.contact.recall
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.data.AddFriendResult
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.MessageReceipt
import
net.mamoe.mirai.message.data.ExperimentalMessageSource
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.Image
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageChain
import
net.mamoe.mirai.message.data.MessageSource
import
net.mamoe.mirai.message.data.MessageSource
...
@@ -61,6 +62,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
...
@@ -61,6 +62,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
*
*
* @see Bot.recall (扩展函数) 接受参数 [MessageChain]
* @see Bot.recall (扩展函数) 接受参数 [MessageChain]
*/
*/
@ExperimentalMessageSource
@JvmName
(
"recall"
)
@JvmName
(
"recall"
)
fun
__recallBlockingForJava__
(
source
:
MessageSource
)
{
fun
__recallBlockingForJava__
(
source
:
MessageSource
)
{
runBlocking
{
recall
(
source
)
}
runBlocking
{
recall
(
source
)
}
...
@@ -88,6 +90,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
...
@@ -88,6 +90,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
* @param millis 延迟的时间, 单位为毫秒
* @param millis 延迟的时间, 单位为毫秒
* @see recall
* @see recall
*/
*/
@ExperimentalMessageSource
@JvmName
(
"recallIn"
)
@JvmName
(
"recallIn"
)
fun
__recallIn_MemberForJava__
(
source
:
MessageSource
,
millis
:
Long
)
{
fun
__recallIn_MemberForJava__
(
source
:
MessageSource
,
millis
:
Long
)
{
runBlocking
{
recallIn
(
source
,
millis
)
}
runBlocking
{
recallIn
(
source
,
millis
)
}
...
@@ -148,6 +151,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
...
@@ -148,6 +151,7 @@ actual abstract class BotJavaFriendlyAPI actual constructor() {
/**
/**
* 异步调用 [__recallBlockingForJava__]
* 异步调用 [__recallBlockingForJava__]
*/
*/
@ExperimentalMessageSource
@JvmName
(
"recallAsync"
)
@JvmName
(
"recallAsync"
)
fun
__recallAsyncForJava__
(
source
:
MessageSource
):
Future
<
Unit
>
{
fun
__recallAsyncForJava__
(
source
:
MessageSource
):
Future
<
Unit
>
{
return
future
{
recall
(
source
)
}
return
future
{
recall
(
source
)
}
...
...
mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/MessageReceipt.kt
View file @
b6c24e00
...
@@ -29,7 +29,8 @@ import net.mamoe.mirai.utils.unsafeWeakRef
...
@@ -29,7 +29,8 @@ import net.mamoe.mirai.utils.unsafeWeakRef
*/
*/
@Suppress
(
"FunctionName"
)
@Suppress
(
"FunctionName"
)
@OptIn
(
MiraiInternalAPI
::
class
)
@OptIn
(
MiraiInternalAPI
::
class
)
actual
open
class
MessageReceipt
<
C
:
Contact
>
actual
constructor
(
actual
open
class
MessageReceipt
<
C
:
Contact
>
@OptIn
(
ExperimentalMessageSource
::
class
)
actual
constructor
(
actual
val
source
:
MessageSource
,
actual
val
source
:
MessageSource
,
target
:
C
,
target
:
C
,
private
val
botAsMember
:
Member
?
private
val
botAsMember
:
Member
?
...
@@ -56,6 +57,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
...
@@ -56,6 +57,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
* @see Bot.recall
* @see Bot.recall
* @throws IllegalStateException 当此消息已经被撤回或正计划撤回时
* @throws IllegalStateException 当此消息已经被撤回或正计划撤回时
*/
*/
@OptIn
(
ExperimentalMessageSource
::
class
)
actual
suspend
fun
recall
()
{
actual
suspend
fun
recall
()
{
@Suppress
(
"BooleanLiteralArgument"
)
@Suppress
(
"BooleanLiteralArgument"
)
if
(
_isRecalled
.
compareAndSet
(
false
,
true
))
{
if
(
_isRecalled
.
compareAndSet
(
false
,
true
))
{
...
@@ -84,6 +86,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
...
@@ -84,6 +86,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
* [确保 sequenceId可用][MessageSource.ensureSequenceIdAvailable] 然后引用这条消息.
* [确保 sequenceId可用][MessageSource.ensureSequenceIdAvailable] 然后引用这条消息.
* @see MessageChain.quote 引用一条消息
* @see MessageChain.quote 引用一条消息
*/
*/
@OptIn
(
ExperimentalMessageSource
::
class
)
actual
open
suspend
fun
quote
():
QuoteReplyToSend
{
actual
open
suspend
fun
quote
():
QuoteReplyToSend
{
this
.
source
.
ensureSequenceIdAvailable
()
this
.
source
.
ensureSequenceIdAvailable
()
@OptIn
(
LowLevelAPI
::
class
)
@OptIn
(
LowLevelAPI
::
class
)
...
@@ -97,6 +100,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
...
@@ -97,6 +100,7 @@ actual open class MessageReceipt<C : Contact> actual constructor(
*
*
* @see MessageChain.quote 引用一条消息
* @see MessageChain.quote 引用一条消息
*/
*/
@OptIn
(
ExperimentalMessageSource
::
class
)
@LowLevelAPI
@LowLevelAPI
@Suppress
(
"FunctionName"
)
@Suppress
(
"FunctionName"
)
actual
fun
_unsafeQuote
():
QuoteReplyToSend
{
actual
fun
_unsafeQuote
():
QuoteReplyToSend
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment