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
。
内部实际可能传递的信息并不固定,它可能会随着版本的更新不断完善或修改,因此无法在此处一一列举。