跳到主要内容

发送 API

Assiah 提供三种邮件发送方式:玩家邮件、系统邮件和群发邮件。所有方法返回 CompletableFuture

方法一览

方法返回值说明
sendMail(request: SendMailRequest)CompletableFuture<SendResult>发送玩家邮件
sendSystemMail(request: SendMailRequest)CompletableFuture<SendResult>发送系统邮件
broadcastMail(request: BroadcastMailRequest)CompletableFuture<BroadcastResult>群发邮件

SendMailRequest

字段类型必填说明
senderUUID发送者 UUID(系统邮件可使用固定 UUID)
receiverUUID接收者 UUID
titleString邮件标题
bodyString邮件正文
attachmentsList<Attachment>附件列表
expireAtLong?过期时间戳,null 表示永不过期

BroadcastMailRequest

字段类型必填说明
senderUUID发送者 UUID
titleString邮件标题
bodyString邮件正文
receiversList<UUID>接收者列表
attachmentsList<Attachment>附件列表

返回类型

SendResult

字段类型说明
successBoolean是否发送成功
mailIdString?邮件 ID(成功时返回)
messageString?错误信息(失败时返回)

BroadcastResult

字段类型说明
successBoolean是否全部发送成功
successCountInt成功发送数量
failCountInt失败数量
mailIdsList<String>成功发送的邮件 ID 列表

附件类型

ItemAttachment

物品附件,附带实际 ItemStack:

import kim.hhhhhy.assiah.api.attachment.ItemAttachment

val attachment = ItemAttachment(
item = itemStack,
amount = 1
)

TextAttachment

纯文本附件:

import kim.hhhhhy.assiah.api.attachment.TextAttachment

val attachment = TextAttachment(
text = "这是一段附件文本"
)

KetherAttachment

Kether 脚本附件,领取时执行脚本:

import kim.hhhhhy.assiah.api.attachment.KetherAttachment

val attachment = KetherAttachment(
script = "tell sender *&\"恭喜领取成功!\""
)

CurrencyAttachment

货币附件:

import kim.hhhhhy.assiah.api.attachment.CurrencyAttachment

val attachment = CurrencyAttachment(
currency = "vault",
amount = 1000.0
)

使用示例

构造器方式

import kim.hhhhhy.assiah.api.AssiahAPI
import kim.hhhhhy.assiah.api.request.SendMailRequest
import kim.hhhhhy.assiah.api.attachment.ItemAttachment

// 发送玩家邮件
val request = SendMailRequest(
sender = senderUUID,
receiver = receiverUUID,
title = "交易物品",
body = "这是你购买的物品,请查收。",
attachments = listOf(
ItemAttachment(item = diamondSword, amount = 1)
)
)

AssiahAPI.sendMail(request).thenAccept { result ->
if (result.success) {
println("邮件发送成功,ID: ${result.mailId}")
} else {
println("发送失败: ${result.message}")
}
}

DSL 方式

import kim.hhhhhy.assiah.api.AssiahAPI
import kim.hhhhhy.assiah.api.dsl.*

// 发送玩家邮件
AssiahAPI.sendMail {
sender = senderUUID
receiver = receiverUUID
title = "交易物品"
body = "这是你购买的物品,请查收。"
attachment(ItemAttachment(item = diamondSword, amount = 1))
}

// 发送系统邮件
AssiahAPI.sendSystemMail {
sender = systemUUID
receiver = playerUUID
title = "系统通知"
body = "服务器将于今晚 22:00 维护。"
}

// 群发邮件
AssiahAPI.broadcastMail {
sender = systemUUID
receivers = onlinePlayers.map { it.uniqueId }
title = "全服公告"
body = "新赛季已开启!"
attachment(CurrencyAttachment(currency = "vault", amount = 500.0))
}
提示

系统邮件与玩家邮件的区别在于:系统邮件不受黑名单限制,且在 UI 中会显示为系统来源。