TransmitCacheConfig
'传递性' 缓存。
举个简单的例子:
bot.guild().channels.collect { channel -> // 1
val guild = channel.guild() // 2
}Content copied to clipboard
如上步骤:
在一个
guild中获取所有的channel遍历所有的
channel,并在循环中再次获取channel的所属guild。
在这个过程中,步骤 2 中获取的 guild 已经确定为步骤 1 中的 guild, 因此如果不是为了 guild 信息的绝对 "实时" ,它们的查询实际上并没有必要。
传递性缓存即用于处理此种情况,当一个存在从属关系的子信息可以使用其所属的来源信息时,则直接将其传递而非再次查询。
传递性缓存不会应用于任何序列/列表本身。因此无论何时而获取到的 Collectable 类型始终都会是全新的类型。(不过其中的元素可能会携带可传递缓存)
传递性缓存涉及到 channel 、channel category 、 member 、 role, 一般来说传递的是 guild,少部分API会传递其他内容,例如 memberRole 可能会传递 channel 。
内部实际可能传递的信息并不固定,它可能会随着版本的更新不断完善或修改,因此无法在此处一一列举。