Release 0.1.1
Run cargo test / Run tests (push) Successful in 3m36s
Build Docker Package / build (push) Successful in 6m26s
Build Docker Package / build (release) Successful in 7m7s

Fix a bug, add better error handling
This commit is contained in:
Elias Wendland committed 2026-07-05 00:45:45 +02:00
1 parent 2a2d359348
commit b3ada54689
3 files changed
+24 -4

No files matched your search

+10 -3
View File
@@ -1,6 +1,10 @@
use crate::{Context, Error};
use tracing::{debug, trace, info};
use crate::shared_functions::trace_message;
use regex::Regex;
use std::sync::LazyLock;
static find_sci_notation_re: LazyLock<Regex> = LazyLock::new(|| Regex::new(r"([0-9]+(?:\.[0-9]+)?)e([+-]?[0-9]+)").unwrap());
#[derive(Debug, poise::ChoiceParameter)]
pub enum Precision {
@@ -24,10 +28,13 @@ pub async fn calc(ctx: Context<'_>,
let response_message = ctx.say(msg).await?;
let start_time = std::time::Instant::now();
trace!("Saving start time: {:?}", start_time);
let processed_expr = find_sci_notation_re.replace_all(&expression, "($1 * 10^($2))");
trace!("Processed expression: {}", processed_expr);
let value = match precision {
Some(Precision::Bits32) => exmex::eval_str::<f32>(&expression).map_err(|err| err.to_string())?.to_string(),
Some(Precision::Bits64) => exmex::eval_str::<f64>(&expression).map_err(|err| err.to_string())?.to_string(),
None => exmex::eval_str::<f64>(&expression).map_err(|err| err.to_string())?.to_string(),
Some(Precision::Bits32) => exmex::eval_str::<f32>(&processed_expr).map_err(|err| err.to_string())?.to_string(),
Some(Precision::Bits64) => exmex::eval_str::<f64>(&processed_expr).map_err(|err| err.to_string())?.to_string(),
None => exmex::eval_str::<f64>(&processed_expr).map_err(|err| err.to_string())?.to_string(),
};
let end_time = std::time::Instant::now();
trace!("Saving end time: {:?}", end_time);
+12
View File
@@ -75,6 +75,18 @@ async fn main() {
event_handler: |ctx, event, framework, user_data| {
Box::pin(event_handler::event_handler(ctx, event, framework, user_data))
},
on_error: |error| Box::pin(async move {
match error {
poise::FrameworkError::Command { error, ctx, .. } => {
error!("Error in command `{}`: {:?}", ctx.command().name, error);
}
error => {
if let Err(e) = poise::builtins::on_error(error).await {
error!("Error while handling error: {}", e);
}
}
}
}),
commands: vec![commands::ping(), commands::calc(), commands::manage_admins(), commands::manage_auto_role(), commands::version()],
..Default::default()
})