Public Access
Release 0.1.1
Fix a bug, add better error handling
This commit is contained in:
1 parent
2a2d359348
commit
b3ada54689
3 files changed
+24
-4
No files matched your search
+2
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tg-dev-srv-bot"
|
name = "tg-dev-srv-bot"
|
||||||
version = "0.1.0"
|
version = "0.1.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
license = "GPL-3.0-or-later"
|
license = "GPL-3.0-or-later"
|
||||||
description = "Bot for the TeenGovernment Development Server"
|
description = "Bot for the TeenGovernment Development Server"
|
||||||
@@ -13,6 +13,7 @@ homepage = "https://git.ewenlau.net/ewenlau/tg-dev-srv-bot"
|
|||||||
dotenv = "0.15.0"
|
dotenv = "0.15.0"
|
||||||
exmex = "0.21.0"
|
exmex = "0.21.0"
|
||||||
poise = "0.6.2"
|
poise = "0.6.2"
|
||||||
|
regex = "1.12.4"
|
||||||
rug = "1.30.0"
|
rug = "1.30.0"
|
||||||
serenity = "0.12.5"
|
serenity = "0.12.5"
|
||||||
sqlx = { version = "0.9.0", features = ["postgres", "runtime-tokio", "macros"] }
|
sqlx = { version = "0.9.0", features = ["postgres", "runtime-tokio", "macros"] }
|
||||||
|
|||||||
+10
-3
@@ -1,6 +1,10 @@
|
|||||||
use crate::{Context, Error};
|
use crate::{Context, Error};
|
||||||
use tracing::{debug, trace, info};
|
use tracing::{debug, trace, info};
|
||||||
use crate::shared_functions::trace_message;
|
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)]
|
#[derive(Debug, poise::ChoiceParameter)]
|
||||||
pub enum Precision {
|
pub enum Precision {
|
||||||
@@ -24,10 +28,13 @@ pub async fn calc(ctx: Context<'_>,
|
|||||||
let response_message = ctx.say(msg).await?;
|
let response_message = ctx.say(msg).await?;
|
||||||
let start_time = std::time::Instant::now();
|
let start_time = std::time::Instant::now();
|
||||||
trace!("Saving start time: {:?}", start_time);
|
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 {
|
let value = match precision {
|
||||||
Some(Precision::Bits32) => exmex::eval_str::<f32>(&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>(&expression).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>(&expression).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();
|
let end_time = std::time::Instant::now();
|
||||||
trace!("Saving end time: {:?}", end_time);
|
trace!("Saving end time: {:?}", end_time);
|
||||||
|
|||||||
+12
@@ -75,6 +75,18 @@ async fn main() {
|
|||||||
event_handler: |ctx, event, framework, user_data| {
|
event_handler: |ctx, event, framework, user_data| {
|
||||||
Box::pin(event_handler::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()],
|
commands: vec![commands::ping(), commands::calc(), commands::manage_admins(), commands::manage_auto_role(), commands::version()],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in new issue
Block a user