Create demo serenity/poise integration
This commit is contained in:
parent
381c2b282d
commit
244e66cfa3
4 changed files with 425 additions and 6 deletions
27
src/main.rs
27
src/main.rs
|
@ -2,7 +2,9 @@
|
|||
extern crate rocket;
|
||||
|
||||
use chrono::{Duration, Utc};
|
||||
use poise::serenity_prelude::{GatewayIntents, Client, Http};
|
||||
use core::panic;
|
||||
use std::ops::Deref;
|
||||
use derive_more::From;
|
||||
use reqwest::StatusCode;
|
||||
use rocket::form::Form;
|
||||
|
@ -10,7 +12,7 @@ use rocket::fs::{relative, FileServer};
|
|||
use rocket::http::{Cookie, CookieJar};
|
||||
use rocket::request::FromRequest;
|
||||
use rocket::response::{content::RawHtml, Redirect};
|
||||
use rocket::{request, Request};
|
||||
use rocket::{request, Request, State};
|
||||
use rocket_dyn_templates::{context, Template};
|
||||
use sass_rocket_fairing::SassFairing;
|
||||
use serde::ser::SerializeStruct;
|
||||
|
@ -173,6 +175,20 @@ fn logout(cookies: &CookieJar<'_>, referer: Referer) -> Redirect {
|
|||
Redirect::to(redirect_url)
|
||||
}
|
||||
|
||||
#[get("/testing")]
|
||||
async fn testing(cookies: &CookieJar<'_>, http: &State<Http>) -> String {
|
||||
// Get logged in user's join date in 字ちゃん server
|
||||
format!("{:?}", http.get_guild(814700630958276649).await
|
||||
.expect("Failed to get testing guild")
|
||||
.member(http.deref(), User::get(cookies).await
|
||||
.expect("Failed to get logged in user data")
|
||||
.expect("No logged in user")
|
||||
.id
|
||||
).await
|
||||
.expect("Failed to fetch user in server")
|
||||
.joined_at)
|
||||
}
|
||||
|
||||
#[derive(Default, Deserialize)]
|
||||
struct User {
|
||||
#[serde(deserialize_with = "deserialize_id")]
|
||||
|
@ -308,15 +324,20 @@ impl User {
|
|||
}
|
||||
|
||||
#[launch]
|
||||
fn rocket() -> _ {
|
||||
async fn rocket() -> _ {
|
||||
dotenv::dotenv().expect("Failed to load .env file");
|
||||
|
||||
let token = env::var("DISCORD_TOKEN").expect("Expected a token in the environment");
|
||||
let http = Http::new(&token);
|
||||
|
||||
let config = rocket::Config::figment()
|
||||
.merge(("port", 1313))
|
||||
.merge(("secret_key", env::var("SECRET").expect("Must have SECRET defined in .env for private cookie persistence")));
|
||||
rocket::custom(config)
|
||||
.manage(http)
|
||||
.mount(
|
||||
"/",
|
||||
routes![get_challenge, login, post_login, success, logout],
|
||||
routes![get_challenge, login, post_login, success, logout, testing],
|
||||
)
|
||||
.mount("/css", FileServer::from(relative!("styles/css")))
|
||||
.attach(Template::fairing())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue