zynko 0.1.0

Biblioteca oficial para bots do Zynko: API, gateway e voz.
Documentation
//! The smallest bot: answers `!ping` with `pong`.
//!
//!   ZYNKO_TOKEN=bot_... cargo run --example ping
//!
//! ZYNKO_API points it at another server (default https://zynko.org/api).

use zynko::{async_trait, Client, EventHandler, HandlerResult, Intents, Message, User};

struct Bot;

#[async_trait]
impl EventHandler for Bot {
    async fn ready(&self, ctx: Client, user: User) -> HandlerResult {
        println!(
            "{} conectado em {} servidores",
            user.display_name,
            ctx.cache().guilds.len()
        );
        Ok(())
    }

    async fn message_create(&self, _ctx: Client, msg: Message) -> HandlerResult {
        if msg.mine() {
            return Ok(());
        }
        if msg.content == "!ping" {
            msg.reply("pong").await?;
        }
        Ok(())
    }
}

#[tokio::main]
async fn main() -> zynko::Result<()> {
    let token = std::env::var("ZYNKO_TOKEN").expect("defina ZYNKO_TOKEN");
    let mut builder = Client::builder(token)
        .intents(Intents::GUILDS | Intents::MESSAGES)
        .event_handler(Bot);
    if let Ok(api) = std::env::var("ZYNKO_API") {
        builder = builder.api(api);
    }
    builder.build()?.start().await
}