草稿 API
Assiah 提供草稿管理功能,允许玩家保存未完成的邮件并在之后继续编辑或发送。
方法一览
| 方法 | 返回值 | 说明 |
|---|---|---|
saveDraft(request: SendMailRequest) | CompletableFuture<SendResult> | 保存草稿 |
getDraft(ownerId: UUID, draftId: String) | CompletableFuture<Mail?> | 获取单个草稿 |
queryDrafts(ownerId: UUID) | CompletableFuture<List<Mail>> | 查询所有草稿 |
deleteDraft(ownerId: UUID, draftId: String) | CompletableFuture<Boolean> | 删除草稿 |
sendDraft(ownerId: UUID, draftId: String) | CompletableFuture<SendResult> | 发送草稿 |
使用示例
保存草稿
import kim.hhhhhy.assiah.api.AssiahAPI
import kim.hhhhhy.assiah.api.request.SendMailRequest
val draft = SendMailRequest(
sender = playerUUID,
receiver = targetUUID,
title = "未完成的邮件",
body = "这封邮件还没写完..."
)
AssiahAPI.saveDraft(draft).thenAccept { result ->
if (result.success) {
println("草稿已保存,ID: ${result.mailId}")
}
}
查询草稿列表
AssiahAPI.queryDrafts(playerUUID).thenAccept { drafts ->
drafts.forEach { draft ->
println("草稿: ${draft.title} (ID: ${draft.id})")
}
}
编辑并发送草稿
// 获取草稿
AssiahAPI.getDraft(playerUUID, draftId).thenCompose { draft ->
if (draft != null) {
// 直接发送草稿
AssiahAPI.sendDraft(playerUUID, draftId)
} else {
CompletableFuture.completedFuture(null)
}
}.thenAccept { result ->
if (result?.success == true) {
println("草稿已发送")
}
}
删除草稿
AssiahAPI.deleteDraft(playerUUID, draftId).thenAccept { success ->
if (success) {
println("草稿已删除")
}
}
备注
草稿发送后会自动从草稿箱中移除。草稿不会触发 MailSendEvent,只有 MailDraftSaveEvent。发送草稿时才会触发 MailSendEvent。