feat: add ~info command
This commit is contained in:
parent
d1cee333ed
commit
3c47a90611
7
swordfish/build.rs
Normal file
7
swordfish/build.rs
Normal file
@ -0,0 +1,7 @@
|
||||
// Example custom build script.
|
||||
fn main() {
|
||||
println!(
|
||||
"cargo:rustc-env=BUILD_PROFILE={}",
|
||||
std::env::var("PROFILE").unwrap()
|
||||
);
|
||||
}
|
@ -4,12 +4,28 @@ use serenity::client::Context;
|
||||
use serenity::model::channel::Message;
|
||||
use swordfish_common::error;
|
||||
|
||||
pub async fn error_message(ctx: &Context, msg: &Message, content: String) {
|
||||
pub async fn error_message(ctx: &Context, msg: &Message, content: String, title: Option<String>) {
|
||||
match msg
|
||||
.channel_id
|
||||
.send_message(
|
||||
ctx,
|
||||
CreateMessage::new().add_embed(message::error_embed(ctx, None, Some(content)).await),
|
||||
CreateMessage::new().add_embed(message::error_embed(ctx, title, Some(content)).await),
|
||||
)
|
||||
.await
|
||||
{
|
||||
Ok(_) => (),
|
||||
Err(why) => {
|
||||
error!("Failed to send error message: {:?}", why);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
pub async fn info_message(ctx: &Context, msg: &Message, content: String, title: Option<String>) {
|
||||
match msg
|
||||
.channel_id
|
||||
.send_message(
|
||||
ctx,
|
||||
CreateMessage::new().add_embed(message::info_embed(ctx, title, Some(content)).await),
|
||||
)
|
||||
.await
|
||||
{
|
||||
|
@ -10,8 +10,6 @@ use swordfish_common::structs::Card;
|
||||
use swordfish_common::tesseract;
|
||||
use swordfish_common::{trace, warn};
|
||||
|
||||
|
||||
|
||||
static TEXT_NUM_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r"[A-Za-z0-9]").unwrap());
|
||||
static ALLOWED_CHARS_REGEX: Lazy<Regex> = Lazy::new(|| Regex::new(r"['-: ]").unwrap());
|
||||
|
||||
@ -91,7 +89,9 @@ fn fix_tesseract_string(text: &mut String) {
|
||||
replace_string(text, "\n", " ");
|
||||
// Remove all non-alphanumeric characters
|
||||
trace!("Text: {}", text);
|
||||
text.retain(|c| TEXT_NUM_REGEX.is_match(&c.to_string()) || ALLOWED_CHARS_REGEX.is_match(&c.to_string()));
|
||||
text.retain(|c| {
|
||||
TEXT_NUM_REGEX.is_match(&c.to_string()) || ALLOWED_CHARS_REGEX.is_match(&c.to_string())
|
||||
});
|
||||
// Fix "mn" -> "III"
|
||||
trace!("Text: {}", text);
|
||||
if text.ends_with("mn") {
|
||||
@ -168,7 +168,10 @@ pub fn analyze_card(card: image::DynamicImage, count: u32) -> Card {
|
||||
panic!("{}", format!("Failed to write image: {:?}", why));
|
||||
}
|
||||
};
|
||||
save_image_if_trace(&series_img, format!("debug/4-{}-series.png", count).as_str());
|
||||
save_image_if_trace(
|
||||
&series_img,
|
||||
format!("debug/4-{}-series.png", count).as_str(),
|
||||
);
|
||||
leptess.set_image_from_mem(&buffer.get_mut()).unwrap();
|
||||
let mut series_str = leptess.get_utf8_text().expect("Failed to read name");
|
||||
fix_tesseract_string(&mut series_str);
|
||||
|
@ -1,5 +1,5 @@
|
||||
use dotenvy::dotenv;
|
||||
|
||||
use once_cell::sync::Lazy;
|
||||
use serenity::async_trait;
|
||||
use serenity::framework::standard::macros::{command, group};
|
||||
use serenity::framework::standard::{CommandResult, Configuration, StandardFramework};
|
||||
@ -21,9 +21,10 @@ mod katana;
|
||||
mod template;
|
||||
|
||||
const GITHUB_URL: &str = "https://github.com/teppyboy/swordfish";
|
||||
static mut LOG_LEVEL: Lazy<String> = Lazy::new(|| "unknown".to_string());
|
||||
|
||||
#[group]
|
||||
#[commands(ping, kdropanalyze)]
|
||||
#[commands(ping, kdropanalyze, info)]
|
||||
struct General;
|
||||
struct Handler;
|
||||
#[async_trait]
|
||||
@ -78,6 +79,20 @@ async fn main() {
|
||||
}
|
||||
let level_str = config.log.level;
|
||||
let log_level = env::var("LOG_LEVEL").unwrap_or(level_str);
|
||||
unsafe {
|
||||
// 1st way to kys
|
||||
LOG_LEVEL = Lazy::new(|| {
|
||||
let config: Config;
|
||||
if Path::new("./config.toml").exists() {
|
||||
config = config::Config::load("./config.toml");
|
||||
} else {
|
||||
config = config::Config::new();
|
||||
config.save("./config.toml");
|
||||
}
|
||||
let level_str = config.log.level;
|
||||
env::var("LOG_LEVEL").unwrap_or(level_str)
|
||||
});
|
||||
}
|
||||
setup_logger(&log_level).expect("Failed to setup logger");
|
||||
info!("Swordfish v{} - {}", env!("CARGO_PKG_VERSION"), GITHUB_URL);
|
||||
info!("Log level: {}", log_level);
|
||||
@ -115,8 +130,13 @@ async fn kdropanalyze(ctx: &Context, msg: &Message) -> CommandResult {
|
||||
Some(content) => match content.parse::<u64>() {
|
||||
Ok(id) => id,
|
||||
Err(why) => {
|
||||
helper::error_message(ctx, msg, format!("Failed to parse channel ID: `{:?}`", why))
|
||||
.await;
|
||||
helper::error_message(
|
||||
ctx,
|
||||
msg,
|
||||
format!("Failed to parse channel ID: `{:?}`", why),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
return Ok(());
|
||||
}
|
||||
},
|
||||
@ -125,6 +145,7 @@ async fn kdropanalyze(ctx: &Context, msg: &Message) -> CommandResult {
|
||||
ctx,
|
||||
msg,
|
||||
"Usage: `kdropanalyze <channel ID> <message ID>`".to_string(),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
return Ok(());
|
||||
@ -134,8 +155,13 @@ async fn kdropanalyze(ctx: &Context, msg: &Message) -> CommandResult {
|
||||
Some(content) => match content.parse::<u64>() {
|
||||
Ok(id) => id,
|
||||
Err(why) => {
|
||||
helper::error_message(ctx, msg, format!("Failed to parse message ID: `{:?}`", why))
|
||||
.await;
|
||||
helper::error_message(
|
||||
ctx,
|
||||
msg,
|
||||
format!("Failed to parse message ID: `{:?}`", why),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
return Ok(());
|
||||
}
|
||||
},
|
||||
@ -144,6 +170,7 @@ async fn kdropanalyze(ctx: &Context, msg: &Message) -> CommandResult {
|
||||
ctx,
|
||||
msg,
|
||||
"Usage: `kdropanalyze <channel ID> <message ID>`".to_string(),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
return Ok(());
|
||||
@ -159,7 +186,13 @@ async fn kdropanalyze(ctx: &Context, msg: &Message) -> CommandResult {
|
||||
{
|
||||
Ok(msg) => msg,
|
||||
Err(why) => {
|
||||
helper::error_message(ctx, msg, format!("Failed to get message: `{:?}`", why)).await;
|
||||
helper::error_message(
|
||||
ctx,
|
||||
msg,
|
||||
format!("Failed to get message: `{:?}`", why),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
return Ok(());
|
||||
}
|
||||
};
|
||||
@ -182,9 +215,33 @@ async fn kdropanalyze(ctx: &Context, msg: &Message) -> CommandResult {
|
||||
msg.reply(ctx, reply_str).await?;
|
||||
}
|
||||
Err(why) => {
|
||||
helper::error_message(ctx, msg, format!("Failed to analyze drop: `{:?}`", why))
|
||||
.await;
|
||||
helper::error_message(
|
||||
ctx,
|
||||
msg,
|
||||
format!("Failed to analyze drop: `{:?}`", why),
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
};
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[command]
|
||||
async fn info(ctx: &Context, msg: &Message) -> CommandResult {
|
||||
unsafe {
|
||||
let reply_str = format!(
|
||||
"Swordfish v{} - {}\n\
|
||||
Log level: `{}`\n\
|
||||
Build type: `{}`\n\n\
|
||||
Like my work? Consider donating to my [Ko-fi](https://ko-fi.com/teppyboy) or [Patreon](https://patreon.com/teppyboy)!\n\
|
||||
",
|
||||
env!("CARGO_PKG_VERSION"),
|
||||
GITHUB_URL,
|
||||
LOG_LEVEL.as_str(),
|
||||
env!("BUILD_PROFILE"),
|
||||
);
|
||||
helper::info_message(ctx, msg, reply_str, Some("Information".to_string())).await;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user