mod channels; mod reminders; mod roles; mod templates; use std::env; pub use channels::*; pub use reminders::*; use rocket::{http::CookieJar, serde::json::json, State}; pub use roles::*; use serenity::{ client::Context, model::id::{GuildId, RoleId}, }; pub use templates::*; use crate::{check_authorization, routes::JsonResult}; #[get("/api/guild/")] pub async fn get_guild_info(id: u64, cookies: &CookieJar<'_>, ctx: &State) -> JsonResult { offline!(Ok(json!({ "patreon": true, "name": "Guild" }))); check_authorization(cookies, ctx.inner(), id).await?; match GuildId::new(id).to_guild_cached(ctx.inner()) { Some(guild) => { let member_res = GuildId::new(env::var("PATREON_GUILD_ID").unwrap().parse().unwrap()) .member(&ctx.inner(), guild.owner_id) .await; let patreon = member_res.map_or(false, |member| { member .roles .contains(&RoleId::new(env::var("PATREON_ROLE_ID").unwrap().parse().unwrap())) }); Ok(json!({ "patreon": patreon, "name": guild.name })) } None => json_err!("Bot not in guild"), } }