From dab3448fab43c6b525d8f27ac60e7692752f0818 Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Sun, 1 Mar 2020 18:17:00 +0800 Subject: [PATCH] Add docs --- .../androidMain/kotlin/net/mamoe/mirai/Bot.kt | 2 +- .../kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt | 80 ++++++++++++++++++- .../commonMain/kotlin/net.mamoe.mirai/Bot.kt | 2 +- .../src/jvmMain/kotlin/net/mamoe/mirai/Bot.kt | 2 +- .../kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt | 80 ++++++++++++++++++- 5 files changed, 157 insertions(+), 9 deletions(-) diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/Bot.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/Bot.kt index 4bdcfa03d..69cc0cae8 100644 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/Bot.kt +++ b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/Bot.kt @@ -147,7 +147,7 @@ actual abstract class Bot actual constructor() : CoroutineScope, LowLevelBotAPIA actual abstract val network: BotNetworkHandler /** - * 挂起直到 [Bot] 下线. + * 挂起协程直到 [Bot] 下线. */ @JvmName("joinSuspend") @JvmSynthetic diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt index 3040b434a..1c1ac3ebd 100644 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt +++ b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt @@ -1,15 +1,20 @@ package net.mamoe.mirai import kotlinx.coroutines.* +import net.mamoe.mirai.contact.PermissionDeniedException +import net.mamoe.mirai.contact.recall import net.mamoe.mirai.data.AddFriendResult +import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.Image import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.MessageSource +import net.mamoe.mirai.network.LoginFailedException import net.mamoe.mirai.utils.MiraiExperimentalAPI import net.mamoe.mirai.utils.MiraiInternalAPI import java.util.concurrent.Future import java.util.concurrent.TimeUnit import java.util.concurrent.TimeoutException +import kotlin.coroutines.CoroutineContext /** * [Bot] 中为了让 Java 使用者调用更方便的 API 列表. @@ -30,42 +35,99 @@ actual abstract class BotJavaHappyAPI actual constructor() { return (this as Bot).run { future(block) } } - + /** + * 登录, 或重新登录. + * 这个函数总是关闭一切现有网路任务, 然后重新登录并重新缓存好友列表和群列表. + * + * 一般情况下不需要重新登录. Mirai 能够自动处理掉线情况. + * + * 最终调用 [net.mamoe.mirai.network.BotNetworkHandler.relogin] + * + * @throws LoginFailedException + */ @JvmName("login") fun __loginBlockingForJava__() { runBlocking { login() } } + /** + * 撤回这条消息. 可撤回自己 2 分钟内发出的消息, 和任意时间的群成员的消息. + * + * [Bot] 撤回自己的消息不需要权限. + * [Bot] 撤回群员的消息需要管理员权限. + * + * @param source 消息源. 可从 [MessageReceipt.source] 获得, 或从消息事件中的 [MessageChain] 获得. + * + * @throws PermissionDeniedException 当 [Bot] 无权限操作时 + * + * @see Bot.recall (扩展函数) 接受参数 [MessageChain] + */ @JvmName("recall") fun __recallBlockingForJava__(source: MessageSource) { runBlocking { recall(source) } } + /** + * 撤回这条消息. + * 根据 [message] 内的 [MessageSource] 进行相关判断. + * + * [Bot] 撤回自己的消息不需要权限. + * [Bot] 撤回群员的消息需要管理员权限. + * + * @throws PermissionDeniedException 当 [Bot] 无权限操作时 + * @see Bot.recall + */ @JvmName("recall") - fun __recallBlockingForJava__(source: MessageChain) { - runBlocking { recall(source) } + fun __recallBlockingForJava__(message: MessageChain) { + runBlocking { recall(message) } } + /** + * 在一段时间后撤回这条消息. + * 将根据 [MessageSource.groupId] 判断消息是群消息还是好友消息. + * + * @param millis 延迟的时间, 单位为毫秒 + * @see recall + */ @JvmName("recallIn") fun __recallIn_MemberForJava__(source: MessageSource, millis: Long) { runBlocking { recallIn(source, millis) } } + /** + * 在一段时间后撤回这条消息. + * + * @param millis 延迟的时间, 单位为毫秒 + * @param coroutineContext 额外的 [CoroutineContext] + * @see recall + */ @JvmName("recallIn") fun __recallIn_MemberForJava__(source: MessageChain, millis: Long) { runBlocking { recallIn(source, millis) } } + /** + * 获取图片下载链接 + */ @JvmName("queryImageUrl") fun __queryImageUrlBlockingForJava__(image: Image): String { return runBlocking { queryImageUrl(image) } } + /** + * 阻塞当前线程直到 [Bot] 下线. + */ @JvmName("join") fun __joinBlockingForJava__() { runBlocking { join() } } + /** + * 添加一个好友 + * + * @param message 若需要验证请求时的验证消息. + * @param remark 好友备注 + */ @JvmOverloads @JvmName("addFriend") fun __addFriendBlockingForJava__( @@ -77,21 +139,33 @@ actual abstract class BotJavaHappyAPI actual constructor() { return runBlocking { addFriend(id, message, remark) } } + /** + * 异步调用 [__loginBlockingForJava__] + */ @JvmName("loginAsync") fun __loginAsyncForJava__(): Future<Unit> { return future { login() } } + /** + * 异步调用 [__recallBlockingForJava__] + */ @JvmName("recallAsync") fun __recallAsyncForJava__(source: MessageSource): Future<Unit> { return future { recall(source) } } + /** + * 异步调用 [__recallBlockingForJava__] + */ @JvmName("recallAsync") fun __recallAsyncForJava__(source: MessageChain): Future<Unit> { return future { recall(source) } } + /** + * 异步调用 [__queryImageUrlBlockingForJava__] + */ @JvmName("queryImageUrlAsync") fun __queryImageUrlAsyncForJava__(image: Image): Future<String> { return future { queryImageUrl(image) } diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt index 391bfc6b0..bc7b95c6f 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt @@ -150,7 +150,7 @@ expect abstract class Bot() : CoroutineScope, LowLevelBotAPIAccessor { abstract val network: BotNetworkHandler /** - * 挂起直到 [Bot] 下线. + * 挂起协程直到 [Bot] 下线. */ @JvmName("joinSuspend") @JvmSynthetic diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/Bot.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/Bot.kt index 2265ff2fd..f8c267649 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/Bot.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/Bot.kt @@ -157,7 +157,7 @@ actual abstract class Bot actual constructor() : CoroutineScope, LowLevelBotAPIA actual abstract val network: BotNetworkHandler /** - * 挂起直到 [Bot] 下线. + * 挂起协程直到 [Bot] 下线. */ @JvmName("joinSuspend") @JvmSynthetic diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt index 3040b434a..1c1ac3ebd 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotJavaHappyAPI.kt @@ -1,15 +1,20 @@ package net.mamoe.mirai import kotlinx.coroutines.* +import net.mamoe.mirai.contact.PermissionDeniedException +import net.mamoe.mirai.contact.recall import net.mamoe.mirai.data.AddFriendResult +import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.Image import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.MessageSource +import net.mamoe.mirai.network.LoginFailedException import net.mamoe.mirai.utils.MiraiExperimentalAPI import net.mamoe.mirai.utils.MiraiInternalAPI import java.util.concurrent.Future import java.util.concurrent.TimeUnit import java.util.concurrent.TimeoutException +import kotlin.coroutines.CoroutineContext /** * [Bot] 中为了让 Java 使用者调用更方便的 API 列表. @@ -30,42 +35,99 @@ actual abstract class BotJavaHappyAPI actual constructor() { return (this as Bot).run { future(block) } } - + /** + * 登录, 或重新登录. + * 这个函数总是关闭一切现有网路任务, 然后重新登录并重新缓存好友列表和群列表. + * + * 一般情况下不需要重新登录. Mirai 能够自动处理掉线情况. + * + * 最终调用 [net.mamoe.mirai.network.BotNetworkHandler.relogin] + * + * @throws LoginFailedException + */ @JvmName("login") fun __loginBlockingForJava__() { runBlocking { login() } } + /** + * 撤回这条消息. 可撤回自己 2 分钟内发出的消息, 和任意时间的群成员的消息. + * + * [Bot] 撤回自己的消息不需要权限. + * [Bot] 撤回群员的消息需要管理员权限. + * + * @param source 消息源. 可从 [MessageReceipt.source] 获得, 或从消息事件中的 [MessageChain] 获得. + * + * @throws PermissionDeniedException 当 [Bot] 无权限操作时 + * + * @see Bot.recall (扩展函数) 接受参数 [MessageChain] + */ @JvmName("recall") fun __recallBlockingForJava__(source: MessageSource) { runBlocking { recall(source) } } + /** + * 撤回这条消息. + * 根据 [message] 内的 [MessageSource] 进行相关判断. + * + * [Bot] 撤回自己的消息不需要权限. + * [Bot] 撤回群员的消息需要管理员权限. + * + * @throws PermissionDeniedException 当 [Bot] 无权限操作时 + * @see Bot.recall + */ @JvmName("recall") - fun __recallBlockingForJava__(source: MessageChain) { - runBlocking { recall(source) } + fun __recallBlockingForJava__(message: MessageChain) { + runBlocking { recall(message) } } + /** + * 在一段时间后撤回这条消息. + * 将根据 [MessageSource.groupId] 判断消息是群消息还是好友消息. + * + * @param millis 延迟的时间, 单位为毫秒 + * @see recall + */ @JvmName("recallIn") fun __recallIn_MemberForJava__(source: MessageSource, millis: Long) { runBlocking { recallIn(source, millis) } } + /** + * 在一段时间后撤回这条消息. + * + * @param millis 延迟的时间, 单位为毫秒 + * @param coroutineContext 额外的 [CoroutineContext] + * @see recall + */ @JvmName("recallIn") fun __recallIn_MemberForJava__(source: MessageChain, millis: Long) { runBlocking { recallIn(source, millis) } } + /** + * 获取图片下载链接 + */ @JvmName("queryImageUrl") fun __queryImageUrlBlockingForJava__(image: Image): String { return runBlocking { queryImageUrl(image) } } + /** + * 阻塞当前线程直到 [Bot] 下线. + */ @JvmName("join") fun __joinBlockingForJava__() { runBlocking { join() } } + /** + * 添加一个好友 + * + * @param message 若需要验证请求时的验证消息. + * @param remark 好友备注 + */ @JvmOverloads @JvmName("addFriend") fun __addFriendBlockingForJava__( @@ -77,21 +139,33 @@ actual abstract class BotJavaHappyAPI actual constructor() { return runBlocking { addFriend(id, message, remark) } } + /** + * 异步调用 [__loginBlockingForJava__] + */ @JvmName("loginAsync") fun __loginAsyncForJava__(): Future<Unit> { return future { login() } } + /** + * 异步调用 [__recallBlockingForJava__] + */ @JvmName("recallAsync") fun __recallAsyncForJava__(source: MessageSource): Future<Unit> { return future { recall(source) } } + /** + * 异步调用 [__recallBlockingForJava__] + */ @JvmName("recallAsync") fun __recallAsyncForJava__(source: MessageChain): Future<Unit> { return future { recall(source) } } + /** + * 异步调用 [__queryImageUrlBlockingForJava__] + */ @JvmName("queryImageUrlAsync") fun __queryImageUrlAsyncForJava__(image: Image): Future<String> { return future { queryImageUrl(image) }