mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-07 00:20:09 +08:00
Update japt
This commit is contained in:
parent
844d798f59
commit
3a5ec367cb
@ -39,7 +39,7 @@ interface Contact : CoroutineScope {
|
|||||||
suspend fun uploadImage(image: ExternalImage): ImageId
|
suspend fun uploadImage(image: ExternalImage): ImageId
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend inline fun Contact.sendMessage(message: Message) = sendMessage(message.chain())
|
suspend inline fun Contact.sendMessage(message: Message) = sendMessage(message.toChain())
|
||||||
|
|
||||||
suspend inline fun Contact.sendMessage(plain: String) = sendMessage(plain.singleChain())
|
suspend inline fun Contact.sendMessage(plain: String) = sendMessage(plain.singleChain())
|
||||||
|
|
||||||
|
@ -61,8 +61,6 @@ interface Group : Contact, CoroutineScope/*, Map<UInt, Member>*/ { // TODO: 2019
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 让机器人退出这个群. 机器人必须为非群主才能退出. 否则将会失败
|
* 让机器人退出这个群. 机器人必须为非群主才能退出. 否则将会失败
|
||||||
*
|
|
||||||
* @see QuitGroupResponse.isSuccess 判断是否成功
|
|
||||||
*/
|
*/
|
||||||
suspend fun quit(): Boolean
|
suspend fun quit(): Boolean
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@ import net.mamoe.mirai.data.ImageLink
|
|||||||
import net.mamoe.mirai.event.events.BotEvent
|
import net.mamoe.mirai.event.events.BotEvent
|
||||||
import net.mamoe.mirai.message.data.*
|
import net.mamoe.mirai.message.data.*
|
||||||
import net.mamoe.mirai.utils.*
|
import net.mamoe.mirai.utils.*
|
||||||
import net.mamoe.mirai.utils.coerceAtLeastOrFail
|
|
||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,7 +49,7 @@ abstract class MessagePacketBase<TSender : QQ, TSubject : Contact>(_bot: Bot) :
|
|||||||
*/
|
*/
|
||||||
suspend inline fun reply(message: MessageChain) = subject.sendMessage(message)
|
suspend inline fun reply(message: MessageChain) = subject.sendMessage(message)
|
||||||
|
|
||||||
suspend inline fun reply(message: Message) = subject.sendMessage(message.chain())
|
suspend inline fun reply(message: Message) = subject.sendMessage(message.toChain())
|
||||||
suspend inline fun reply(plain: String) = subject.sendMessage(plain.toMessage())
|
suspend inline fun reply(plain: String) = subject.sendMessage(plain.toMessage())
|
||||||
|
|
||||||
@JvmName("reply1")
|
@JvmName("reply1")
|
||||||
|
@ -63,7 +63,7 @@ fun MessageChain(initialCapacity: Int): MessageChain =
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造 [MessageChain]
|
* 构造 [MessageChain]
|
||||||
* 若仅提供一个参数, 请考虑使用 [Message.chain] 以优化性能
|
* 若仅提供一个参数, 请考虑使用 [Message.toChain] 以优化性能
|
||||||
*/
|
*/
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
fun MessageChain(vararg messages: Message): MessageChain =
|
fun MessageChain(vararg messages: Message): MessageChain =
|
||||||
@ -81,12 +81,12 @@ fun MessageChain(messages: Iterable<Message>): MessageChain =
|
|||||||
* 构造单元素的不可修改的 [MessageChain]. 内部类实现为 [SingleMessageChain]
|
* 构造单元素的不可修改的 [MessageChain]. 内部类实现为 [SingleMessageChain]
|
||||||
*
|
*
|
||||||
* 参数 [delegate] 不能为 [MessageChain] 的实例, 否则将会抛出异常.
|
* 参数 [delegate] 不能为 [MessageChain] 的实例, 否则将会抛出异常.
|
||||||
* 使用 [Message.chain] 将帮助提前处理这个问题.
|
* 使用 [Message.toChain] 将帮助提前处理这个问题.
|
||||||
*
|
*
|
||||||
* @param delegate 所构造的单元素 [MessageChain] 代表的 [Message]
|
* @param delegate 所构造的单元素 [MessageChain] 代表的 [Message]
|
||||||
* @throws IllegalArgumentException 当 [delegate] 为 [MessageChain] 的实例时
|
* @throws IllegalArgumentException 当 [delegate] 为 [MessageChain] 的实例时
|
||||||
*
|
*
|
||||||
* @see Message.chain receiver 模式
|
* @see Message.toChain receiver 模式
|
||||||
*/
|
*/
|
||||||
@MiraiExperimentalAPI
|
@MiraiExperimentalAPI
|
||||||
@UseExperimental(ExperimentalContracts::class)
|
@UseExperimental(ExperimentalContracts::class)
|
||||||
@ -106,17 +106,13 @@ fun SingleMessageChain(delegate: Message): MessageChain {
|
|||||||
* 否则将调用 [MessageChain] 构造一个 [MessageChainImpl]
|
* 否则将调用 [MessageChain] 构造一个 [MessageChainImpl]
|
||||||
*/
|
*/
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
inline fun Message.chain(): MessageChain = if (this is MessageChain) this else MessageChain(
|
inline fun Message.toChain(): MessageChain = if (this is MessageChain) this else MessageChain(this)
|
||||||
this
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造 [MessageChain]
|
* 构造 [MessageChain]
|
||||||
*/
|
*/
|
||||||
@Suppress("unused", "NOTHING_TO_INLINE")
|
@Suppress("unused", "NOTHING_TO_INLINE")
|
||||||
inline fun List<Message>.messageChain(): MessageChain =
|
inline fun List<Message>.toMessageChain(): MessageChain = MessageChain(this)
|
||||||
MessageChain(this)
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取第一个 [M] 类型的 [Message] 实例
|
* 获取第一个 [M] 类型的 [Message] 实例
|
||||||
@ -327,6 +323,7 @@ internal inline class MessageChainImpl constructor(
|
|||||||
*
|
*
|
||||||
* 在连接时将会把它当做一个普通 [Message] 看待, 但它不能被 [plusAssign]
|
* 在连接时将会把它当做一个普通 [Message] 看待, 但它不能被 [plusAssign]
|
||||||
*/
|
*/
|
||||||
|
@PublishedApi
|
||||||
internal inline class SingleMessageChainImpl(
|
internal inline class SingleMessageChainImpl(
|
||||||
private val delegate: Message
|
private val delegate: Message
|
||||||
) : Message, MutableList<Message>,
|
) : Message, MutableList<Message>,
|
||||||
|
@ -23,4 +23,4 @@ inline fun String.toMessage(): PlainText = PlainText(this)
|
|||||||
* @see SingleMessageChainImpl
|
* @see SingleMessageChainImpl
|
||||||
*/
|
*/
|
||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
inline fun String.singleChain(): MessageChain = this.toMessage().chain()
|
inline fun String.singleChain(): MessageChain = SingleMessageChainImpl(this.toMessage())
|
@ -1,4 +1,5 @@
|
|||||||
# Contact
|
## Contact ##
|
||||||
|
.blocking : Blocking wrap
|
||||||
.blocking : 阻塞式包装
|
net.mamoe.mirai.contact.QQ → net.mamoe.mirai.japt.BlockingContacts.createBlocking($expr$)
|
||||||
net.mamoe.mirai.contact.QQ [net.mamoe.mirai.japt.BlockingContacts] -> BlockingQQ. BlockingContacts.createBlocking($var$)
|
net.mamoe.mirai.contact.QQ [net.mamoe.mirai.japt.BlockingContacts] → net.mamoe.mirai.japt.BlockingContacts.createBlocking($expr$)
|
||||||
|
net.mamoe.mirai.timpc.network.QQImpl [net.mamoe.mirai.japt.BlockingContacts] → net.mamoe.mirai.japt.BlockingContacts.createBlocking($expr$)
|
@ -0,0 +1,4 @@
|
|||||||
|
package net.mamoe.mirai.japt;
|
||||||
|
|
||||||
|
public interface BlockingBot {
|
||||||
|
}
|
@ -1,7 +1,8 @@
|
|||||||
package net.mamoe.mirai.japt;
|
package net.mamoe.mirai.japt;
|
||||||
|
|
||||||
import net.mamoe.mirai.Bot;
|
import net.mamoe.mirai.Bot;
|
||||||
import net.mamoe.mirai.message.MessageChain;
|
import net.mamoe.mirai.message.data.Message;
|
||||||
|
import net.mamoe.mirai.message.data.MessageChain;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
@ -19,8 +20,16 @@ public interface BlockingContact {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 向这个对象发送消息.
|
* 向这个对象发送消息.
|
||||||
* <p>
|
|
||||||
* 速度太快会被服务器屏蔽(无响应). 在测试中不延迟地发送 6 条消息就会被屏蔽之后的数据包 1 秒左右.
|
|
||||||
*/
|
*/
|
||||||
void sendMessage(@NotNull MessageChain messages);
|
void sendMessage(@NotNull MessageChain messages);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 向这个对象发送消息.
|
||||||
|
*/
|
||||||
|
void sendMessage(@NotNull String message);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 向这个对象发送消息.
|
||||||
|
*/
|
||||||
|
void sendMessage(@NotNull Message message);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package net.mamoe.mirai.japt;
|
package net.mamoe.mirai.japt;
|
||||||
|
|
||||||
import net.mamoe.mirai.network.protocol.tim.packet.action.GroupInfo;
|
import net.mamoe.mirai.data.GroupInfo;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ public interface BlockingGroup extends BlockingContact {
|
|||||||
/**
|
/**
|
||||||
* 内部 ID. 内部 ID 为 [GroupId] 的映射
|
* 内部 ID. 内部 ID 为 [GroupId] 的映射
|
||||||
*/
|
*/
|
||||||
Long getInternalId();
|
long getInternalId();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 群主 (同步事件更新)
|
* 群主 (同步事件更新)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.mamoe.mirai.japt;
|
package net.mamoe.mirai.japt;
|
||||||
|
|
||||||
import net.mamoe.mirai.contact.data.Profile;
|
import net.mamoe.mirai.data.FriendNameRemark;
|
||||||
import net.mamoe.mirai.network.protocol.tim.packet.action.FriendNameRemark;
|
import net.mamoe.mirai.data.PreviousNameList;
|
||||||
import net.mamoe.mirai.network.protocol.tim.packet.action.PreviousNameList;
|
import net.mamoe.mirai.data.Profile;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
|
@ -8,16 +8,24 @@ import net.mamoe.mirai.contact.Group
|
|||||||
import net.mamoe.mirai.contact.Member
|
import net.mamoe.mirai.contact.Member
|
||||||
import net.mamoe.mirai.contact.MemberPermission
|
import net.mamoe.mirai.contact.MemberPermission
|
||||||
import net.mamoe.mirai.contact.QQ
|
import net.mamoe.mirai.contact.QQ
|
||||||
import net.mamoe.mirai.contact.data.Profile
|
import net.mamoe.mirai.data.FriendNameRemark
|
||||||
import net.mamoe.mirai.message.MessageChain
|
import net.mamoe.mirai.data.GroupInfo
|
||||||
import net.mamoe.mirai.network.protocol.tim.packet.action.FriendNameRemark
|
import net.mamoe.mirai.data.PreviousNameList
|
||||||
import net.mamoe.mirai.network.protocol.tim.packet.action.GroupInfo
|
import net.mamoe.mirai.data.Profile
|
||||||
import net.mamoe.mirai.network.protocol.tim.packet.action.PreviousNameList
|
import net.mamoe.mirai.message.data.Message
|
||||||
|
import net.mamoe.mirai.message.data.MessageChain
|
||||||
|
import net.mamoe.mirai.message.data.toChain
|
||||||
|
import net.mamoe.mirai.message.data.toMessage
|
||||||
|
import net.mamoe.mirai.utils.MiraiInternalAPI
|
||||||
|
import net.mamoe.mirai.utils.toList
|
||||||
|
|
||||||
internal class BlockingQQImpl(private val delegate: QQ) : BlockingQQ {
|
internal class BlockingQQImpl(private val delegate: QQ) : BlockingQQ {
|
||||||
override fun getBot(): Bot = delegate.bot
|
override fun getBot(): Bot = delegate.bot
|
||||||
override fun getId(): Long = delegate.id.toLong()
|
override fun getId(): Long = delegate.id
|
||||||
override fun sendMessage(messages: MessageChain) = runBlocking { delegate.sendMessage(messages) }
|
override fun sendMessage(messages: MessageChain) = runBlocking { delegate.sendMessage(messages) }
|
||||||
|
override fun sendMessage(message: String) = runBlocking { delegate.sendMessage(message.toMessage().toChain()) }
|
||||||
|
override fun sendMessage(message: Message) = runBlocking { delegate.sendMessage(message.toChain()) }
|
||||||
|
|
||||||
override fun queryProfile(): Profile = runBlocking { delegate.queryProfile() }
|
override fun queryProfile(): Profile = runBlocking { delegate.queryProfile() }
|
||||||
override fun queryPreviousNameList(): PreviousNameList = runBlocking { delegate.queryPreviousNameList() }
|
override fun queryPreviousNameList(): PreviousNameList = runBlocking { delegate.queryPreviousNameList() }
|
||||||
override fun queryRemark(): FriendNameRemark = runBlocking { delegate.queryRemark() }
|
override fun queryRemark(): FriendNameRemark = runBlocking { delegate.queryRemark() }
|
||||||
@ -25,17 +33,22 @@ internal class BlockingQQImpl(private val delegate: QQ) : BlockingQQ {
|
|||||||
|
|
||||||
internal class BlockingGroupImpl(private val delegate: Group) : BlockingGroup {
|
internal class BlockingGroupImpl(private val delegate: Group) : BlockingGroup {
|
||||||
override fun sendMessage(messages: MessageChain) = runBlocking { delegate.sendMessage(messages) }
|
override fun sendMessage(messages: MessageChain) = runBlocking { delegate.sendMessage(messages) }
|
||||||
|
override fun sendMessage(message: String) = runBlocking { delegate.sendMessage(message.toMessage().toChain()) }
|
||||||
|
override fun sendMessage(message: Message) = runBlocking { delegate.sendMessage(message.toChain()) }
|
||||||
override fun getOwner(): BlockingMember = delegate.owner.blocking()
|
override fun getOwner(): BlockingMember = delegate.owner.blocking()
|
||||||
override fun getName(): String = delegate.name
|
override fun getName(): String = delegate.name
|
||||||
override fun getId(): Long = delegate.id.toLong()
|
override fun getId(): Long = delegate.id
|
||||||
override fun updateGroupInfo(): GroupInfo = runBlocking { delegate.updateGroupInfo() }
|
override fun updateGroupInfo(): GroupInfo = runBlocking { delegate.updateGroupInfo() }
|
||||||
override fun toFullString(): String = delegate.toFullString()
|
override fun toFullString(): String = delegate.toFullString()
|
||||||
override fun getMember(id: Long): BlockingMember = delegate.getMember(id.toUInt()).blocking()
|
override fun getMember(id: Long): BlockingMember = delegate.getMember(id).blocking()
|
||||||
override fun getBot(): Bot = delegate.bot
|
override fun getBot(): Bot = delegate.bot
|
||||||
override fun getAnnouncement(): String = delegate.announcement
|
override fun getAnnouncement(): String = delegate.announcement
|
||||||
override fun getMembers(): MutableMap<Long, BlockingMember> = delegate.members.mapKeys { it.key.toLong() }.mapValues { it.value.blocking() }.toMutableMap()
|
@UseExperimental(MiraiInternalAPI::class)
|
||||||
override fun getInternalId(): Long = delegate.internalId.value.toLong()
|
override fun getMembers(): Map<Long, BlockingMember> =
|
||||||
override fun quit(): Boolean = runBlocking { delegate.quit().isSuccess }
|
delegate.members.delegate.toList().associateBy { it.id }.mapValues { it.value.blocking() }
|
||||||
|
|
||||||
|
override fun getInternalId(): Long = delegate.internalId.value
|
||||||
|
override fun quit(): Boolean = runBlocking { delegate.quit() }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class BlockingMemberImpl(private val delegate: Member) : BlockingMember {
|
internal class BlockingMemberImpl(private val delegate: Member) : BlockingMember {
|
||||||
|
Loading…
Reference in New Issue
Block a user