rdzobot 0.1.0

Modular, but monolithic Matrix bot
Documentation
// SPDX-License-Identifier: AGPL-3.0-or-later
// SPDX-FileCopyrightText: 2025 Wojtek Porczyk <woju@hackerspace.pl>

use rdzobot::Rdzobot;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let bot = Rdzobot::new().await?;

    let user_id = bot.client.user_id().expect("failed to get own user_id");
    let device_id = bot.client.device_id().expect("failed to get own device_id");

    for device in bot
        .client
        .encryption()
        .get_user_devices(user_id)
        .await
        .expect("failed to list devices")
        .devices()
    {
        println!(
            "\x1b[1m{:<10}\x1b[0m {:<1} {:<40} {:<}",
            device.device_id(),
            if device.device_id() == device_id {
                "*"
            } else {
                ""
            },
            device.display_name().unwrap_or("-"),
            if device.is_verified() {
                "\x1b[1;32mverified\x1b[0m"
            } else {
                "\x1b[1;31mnot verified\x1b[0m"
            }
        )
    }

    Ok(())
}