feat: cleaned up remaining unwraps, and then clippy+fmt
All checks were successful
/ check_lfs (pull_request) Successful in 9s
/ check_lfs (push) Successful in 4s

This commit is contained in:
silver 2025-06-16 06:14:53 +01:00
parent 652dd6ff1c
commit 9134feee4e
Signed by: silver
GPG key ID: 36F93D61BAD3FD7D
3 changed files with 105 additions and 33 deletions

View file

@ -17,7 +17,7 @@ pub(crate) mod admin {
pub(crate) mod change {
use super::*;
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
let db_lock = {
let data_read = ctx.data.read().await;
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
@ -78,11 +78,12 @@ pub(crate) mod user {
let config_toml = get_config_icons::minimal();
if let Some(logo) = get_current_icon(&db).await {
let attachment = CreateAttachment::path(&logo.path).await.unwrap();
match command.edit_response(&ctx.http, EditInteractionResponse::new().new_attachment(attachment)).await {
Ok(_) => {}
Err(e) => {
dbg!(e);
if let Ok(attachment) = CreateAttachment::path(&logo.path).await {
match command.edit_response(&ctx.http, EditInteractionResponse::new().new_attachment(attachment)).await {
Ok(_) => {}
Err(e) => {
dbg!(e);
}
}
}
@ -116,7 +117,7 @@ pub(crate) mod user {
use skynet_discord_bot::Config;
// use this to return what current festivals are active?
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
let config_lock = {
let data_read = ctx.data.read().await;
data_read.get::<Config>().expect("Expected Config in TypeMap.").clone()
@ -141,7 +142,7 @@ pub(crate) mod user {
use super::*;
use sqlx::{Pool, Sqlite};
pub async fn run(command: &CommandInteraction, ctx: &Context) -> String {
pub async fn run(_command: &CommandInteraction, ctx: &Context) -> String {
let db_lock = {
let data_read = ctx.data.read().await;
data_read.get::<DataBase>().expect("Expected Databse in TypeMap.").clone()
@ -178,8 +179,8 @@ pub(crate) mod user {
})
}
fn fmt_msg(config_toml: &ConfigTomlLocal, totals: &Vec<CountResult>) -> String {
let mut totals_local = totals.clone();
fn fmt_msg(config_toml: &ConfigTomlLocal, totals: &[CountResult]) -> String {
let mut totals_local = totals.to_owned();
totals_local.sort_by_key(|x| x.times);
totals_local.reverse();

View file

@ -43,8 +43,16 @@ pub mod get_config_icons {
}
pub fn minimal() -> ConfigTomlLocal {
let toml_raw_min = include_str!("../../.server-icons.toml");
let config_min: ConfigTomlLocal = toml::from_str(toml_raw_min).unwrap();
config_min
toml::from_str::<ConfigTomlLocal>(toml_raw_min).unwrap_or_else(|e| {
dbg!(e);
ConfigTomlLocal {
source: ConfigTomlSource {
repo: "".to_string(),
directory: "".to_string(),
file: "".to_string(),
},
}
})
}
// since a copy of the festival file is in the repo we just need to get to it
@ -52,12 +60,21 @@ pub mod get_config_icons {
let config_source = minimal();
let file_path = format!("{}/open-governance/{}/{}", &config.home, &config_source.source.directory, &config_source.source.file);
let contents = fs::read_to_string(file_path).expect("Should have been able to read the file");
let config_festivals: ConfigTomlRemote = toml::from_str(&contents).unwrap();
let contents = fs::read_to_string(file_path).unwrap_or_else(|e| {
dbg!(e);
"".to_string()
});
let festivals = match toml::from_str::<ConfigTomlRemote>(&contents) {
Ok(config_festivals) => config_festivals.festivals,
Err(e) => {
dbg!(e);
vec![]
}
};
ConfigToml {
source: config_source.source,
festivals: config_festivals.festivals,
festivals,
}
}
}
@ -154,15 +171,26 @@ pub mod update_icon {
let url = &config_toml.source.repo;
let folder = format!("{}/open-governance", &config.home);
Command::new("git").arg("clone").arg(url).arg(&folder).output().expect("failed to execute process");
if let Err(e) = Command::new("git")
// clone the repo, gracefully "fails"
.arg("clone")
.arg(url)
.arg(&folder)
.output()
{
dbg!(e);
}
Command::new("git")
if let Err(e) = Command::new("git")
// Update the repo
.arg("pull")
.arg("origin")
.arg("main")
.current_dir(&folder)
.output()
.expect("failed to execute process");
{
dbg!(e);
}
}
fn get_logos(config: &Config, config_toml: &ConfigToml) -> Vec<LogoData> {
@ -170,7 +198,13 @@ pub mod update_icon {
let folder_path = PathBuf::from(&folder);
let mut folder_output = folder_path.clone();
folder_output.push("converted");
let paths = fs::read_dir(folder).unwrap();
let paths = match fs::read_dir(folder) {
Ok(x) => x,
Err(e) => {
dbg!(e);
return vec![];
}
};
let args = Args {
input: folder_path.clone(),
@ -179,14 +213,26 @@ pub mod update_icon {
width: 1024,
height: 1024,
};
let mut r = Renderer::new(&args).unwrap();
let mut r = match Renderer::new(&args) {
Ok(x) => x,
Err(e) => {
let _ = dbg!(e);
return vec![];
}
};
let mut logos = vec![];
for tmp in paths.flatten() {
let path_local = tmp.path().to_owned();
let path_local2 = tmp.path().to_owned();
let name = path_local2.file_name().unwrap().to_owned();
let name = match path_local2.file_name() {
None => {
dbg!(path_local2);
continue;
}
Some(x) => x.to_owned(),
};
let mut path = tmp.path();
if path.is_dir() {
@ -200,7 +246,13 @@ pub mod update_icon {
let mut path_new = path_local.clone();
path_new.set_extension("png");
let filename_tmp = path_new.clone();
let filename = filename_tmp.file_name().unwrap_or_default();
let filename = match filename_tmp.file_name() {
None => {
dbg!(filename_tmp);
continue;
}
Some(x) => x,
};
path_new.pop();
path_new.push("converted");
path_new.push(filename);
@ -266,18 +318,36 @@ pub mod update_icon {
async fn logo_set(ctx: &Context, db: &Pool<Sqlite>, server: &GuildId, logo_selected: &LogoData) {
// add to teh database
logo_set_db(db, logo_selected).await;
if !logo_set_db(db, logo_selected).await {
// something went wrong
return;
}
let icon = CreateAttachment::path(logo_selected.path.to_str().unwrap_or_default()).await.unwrap();
// assuming a `guild` has already been bound
let builder = EditGuild::new().icon(Some(&icon));
server.edit(ctx, builder).await.unwrap();
if let Some(logo_path) = logo_selected.path.to_str() {
match CreateAttachment::path(logo_path).await {
Ok(icon) => {
// assuming a `guild` has already been bound
let builder = EditGuild::new().icon(Some(&icon));
if let Err(e) = server.edit(ctx, builder).await {
dbg!(e);
}
}
Err(e) => {
dbg!(e);
}
}
}
}
async fn logo_set_db(db: &Pool<Sqlite>, logo_selected: &LogoData) {
let name = logo_selected.name.to_str().unwrap_or_default();
let path = logo_selected.path.to_str().unwrap_or_default();
async fn logo_set_db(db: &Pool<Sqlite>, logo_selected: &LogoData) -> bool {
let name = match logo_selected.name.to_str() {
None => return false,
Some(x) => x,
};
let path = match logo_selected.path.to_str() {
None => return false,
Some(x) => x,
};
match sqlx::query_as::<_, ServerIcons>(
"
@ -294,7 +364,9 @@ pub mod update_icon {
Ok(_) => {}
Err(e) => {
dbg!(e);
return false;
}
}
true
}
}

View file

@ -2,8 +2,7 @@ pub mod commands;
use crate::commands::role_adder::tools::on_role_change;
use serenity::all::{
ActivityData, Command, CommandDataOption, CommandDataOptionValue, CommandOptionType, CreateMessage, EditInteractionResponse, GuildId,
GuildMemberUpdateEvent, Interaction,
ActivityData, Command, CommandDataOptionValue, CreateMessage, EditInteractionResponse, GuildId, GuildMemberUpdateEvent, Interaction,
};
use serenity::model::guild::Member;
use serenity::{