3 Commits
Author SHA1 Message Date
Elias Wendland b3ada54689 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
2026-07-05 00:45:45 +02:00
ewenlau 2a2d359348 Fix typo
Build Docker Package / build (push) Successful in 7m51s
Run cargo test / Run tests (push) Successful in 4m40s
2026-07-05 00:18:37 +02:00
ewenlau 6719ebfda6 Fix typo
Build Docker Package / build (push) Successful in 6m37s
Run cargo test / Run tests (push) Successful in 3m30s
2026-07-05 00:18:19 +02:00
5 changed files with 26 additions and 6 deletions

No files matched your search

+2 -1
View File
@@ -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"] }
+1 -1
View File
@@ -6,4 +6,4 @@ Not really meant for any other server, but feel free to use it if you'd like.
The bot is really made to be used with Docker, but you can run it locally. The bot is really made to be used with Docker, but you can run it locally.
An image is available at git.ewenlau.net/ewenlau/tg-dev-srv-bot:release for the stable version and git.ewenlau.net/ewenlau/tg-dev-srv-bot:dev for the development (or testing) version. An image is available at git.ewenlau.net/ewenlau/tg-dev-srv-bot:latest for the stable version and git.ewenlau.net/ewenlau/tg-dev-srv-bot:dev for the development (or testing) version.
+1 -1
View File
@@ -21,7 +21,7 @@ services:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
# OR pull from registry # OR pull from registry
# image: git.ewenlau.net/ewenlau/tg-dev-srv-bot:release # image: git.ewenlau.net/ewenlau/tg-dev-srv-bot:latest
# image: git.ewenlau.net/ewenlau/tg-dev-srv-bot:dev # image: git.ewenlau.net/ewenlau/tg-dev-srv-bot:dev
container_name: tg-dev-srv-bot container_name: tg-dev-srv-bot
restart: always restart: always
+10 -3
View File
@@ -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
View File
@@ -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()
}) })