跳到主要内容

草稿 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