#twilight #discord-api #discord

twilight-cache-inmemory

Twilight生态系统基于进程内存的缓存

72次发布

0.16.0-rc.12024年2月21日
0.15.4 2023年9月10日
0.15.2 2023年4月27日
0.15.1 2023年2月26日
0.2.3 2020年11月29日

#19 in 缓存

Download history 425/week @ 2024-04-11 215/week @ 2024-04-18 268/week @ 2024-04-25 142/week @ 2024-05-02 124/week @ 2024-05-09 140/week @ 2024-05-16 138/week @ 2024-05-23 194/week @ 2024-05-30 250/week @ 2024-06-06 262/week @ 2024-06-13 241/week @ 2024-06-20 166/week @ 2024-06-27 68/week @ 2024-07-04 146/week @ 2024-07-11 198/week @ 2024-07-18 140/week @ 2024-07-25

555 每月下载量
7 个存储库中使用 (6 直接)

ISC 许可证

1.5MB
37K SLoC

twilight-cache-inmemory

codecov badge discord badge github badge license badge rust badge

twilight-cache-inmemorytwilight-rs 生态系统中的进程内存缓存。它负责处理事件和缓存诸如公会、频道、用户和语音状态等事物。

统计信息

统计信息可以作为确定缓存大小或确定缓存中是否存在预期资源量的重要调试工具。可以通过 InMemoryCache::stats 获取关于缓存中资源量的统计信息。

特性

默认情况下没有启用任何特性。

permission-calculator

启用 permission-calculator 特性标志将引入对 PermissionCalculator 的支持;通过 InMemoryCache::permissions 提供了通过它计算权限的API。包括在根公会级别和公会频道中计算成员权限的支持。

请参阅 permission 模块以获取更多文档。

示例

使用网关接收的事件更新缓存

use std::{env, error::Error};
use twilight_cache_inmemory::DefaultInMemoryCache;
use twilight_gateway::{EventTypeFlags, Intents, Shard, ShardId, StreamExt as _};

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    // Initialize the tracing subscriber.
    tracing_subscriber::fmt::init();

    let token = env::var("DISCORD_TOKEN")?;
    let mut shard = Shard::new(ShardId::ONE, token, Intents::GUILD_MESSAGES);

    // Create a cache, caching up to 10 messages per channel:
    let cache = DefaultInMemoryCache::builder().message_cache_size(10).build();

    while let Some(item) = shard.next_event(EventTypeFlags::all()).await {
        let Ok(event) = item else {
            tracing::warn!(source = ?item.unwrap_err(), "error receiving event");

            continue;
        };

        // Update the cache with the event.
        cache.update(&event);
    }

    Ok(())
}

许可证

所有第一方存储库都采用 ISC 许可证

依赖项

~2.2–8MB
~64K SLoC