Skip to content

Instantly share code, notes, and snippets.

@PhantomKnight287
Last active April 20, 2023 12:37
Show Gist options
  • Select an option

  • Save PhantomKnight287/adf4eaf0c1aab02d6cc23c9d7c714dde to your computer and use it in GitHub Desktop.

Select an option

Save PhantomKnight287/adf4eaf0c1aab02d6cc23c9d7c714dde to your computer and use it in GitHub Desktop.
/// 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