Last active
April 20, 2023 12:37
-
-
Save PhantomKnight287/adf4eaf0c1aab02d6cc23c9d7c714dde to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /// Get Balance of your account or another user | |
| #[poise::command(slash_command, prefix_command)] | |
| pub async fn balance( | |
| ctx: Context<'_>, | |
| #[description = "Selected user"] user: Option<User>, | |
| ) -> Result<(), Error> { | |
| let u = user.as_ref().unwrap_or_else(|| ctx.author()); | |
| ctx.defer().await.expect("Cannot defer"); | |
| let client = ctx.data(); | |
| let id = u.id.0.clone().to_string(); | |
| let acc = view::record::<Account>("accounts", &id.as_str(), client); | |
| if Err::< | |
| view::ViewResponse<Account>, | |
| _, | |
| >(&acc).is_err().to_owned() | |
| { | |
| ctx.send(|d| { | |
| d.embed(|e| { | |
| e.title("Error") | |
| .description("Something went wrong").color(serenity::utils::Colour::RED) | |
| }) | |
| }).await.expect("Cannot send message"); | |
| return Ok(()); | |
| } | |
| let acco = &acc.await.unwrap(); | |
| match acco { | |
| view::ViewResponse::SuccessResponse(res) => { | |
| ctx.send(|d| { | |
| d.embed(|e| { | |
| e.title(format!("{}'s Balance", u.name)) | |
| .description(format!("**Wallet:** {}\n**Bank:** {}\n\n**Net:** {}", res.wallet, res.bank, res.wallet + res.bank)) | |
| }) | |
| }).await.expect("Cannot send message"); | |
| } | |
| view::ViewResponse::ErrorResponse(err) => { | |
| let data = Account { | |
| id: u.id.0.to_string(), | |
| wallet: 20000.0, | |
| bank: 0.0, | |
| }; | |
| let res = create::record::<Account>("accounts", &data, client).await.unwrap(); | |
| match res { | |
| create::CreateResponse::SuccessResponse(_) => { | |
| ctx.send(|d| { | |
| d.embed(|e| { | |
| e.title(format!("{}'s Balance", u.name)) | |
| .description(format!("**Wallet:** {}\n**Bank:** {}\n\n**Net:** {}", data.wallet, data.bank, data.wallet + data.bank)) | |
| }) | |
| }).await.expect("Cannot send message"); | |
| } | |
| create::CreateResponse::FailureResponse(err) => { | |
| println!("Error: {:?}", err); | |
| ctx.send(|d| { | |
| d.embed(|e| { | |
| e.title("Error") | |
| .description("Something went wrong").color(serenity::utils::Colour::RED) | |
| }) | |
| }).await.expect("Cannot send message"); | |
| } | |
| } | |
| } | |
| _ => { | |
| ctx.send(|d| { | |
| d.embed(|e| { | |
| e.title("Error") | |
| .description("Something went wrong").color(serenity::utils::Colour::RED) | |
| }) | |
| }).await.expect("Cannot send message"); | |
| } | |
| } | |
| Ok(()) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment