From ae9b1f3ba0e3f5354d664fa31793d1eed7b7acd4 Mon Sep 17 00:00:00 2001 From: ByteDice Date: Sun, 1 Mar 2026 11:28:00 +0100 Subject: [PATCH] reorganized cmds folder structure --- src/cmds.rs | 4 ++ src/cmds/db.rs | 4 ++ src/{db_cmds => cmds/db}/add_server.rs | 0 src/{db_cmds => cmds/db}/main_cmd.rs | 0 src/{db_cmds => cmds/db}/reddit_channel.rs | 0 src/{db_cmds => cmds/db}/wwrps_channel.rs | 0 src/cmds/debug.rs | 9 ++++ src/cmds/generic.rs | 5 +++ src/cmds/{ => generic}/eight_ball.rs | 0 src/cmds/{ => generic}/embed.rs | 0 src/cmds/{ => generic}/help.rs | 0 src/cmds/{ => generic}/send.rs | 0 src/cmds/{ => generic}/wwrps.rs | 0 src/cmds/reddit.rs | 9 ++++ src/{re_cmds => cmds/reddit}/add.rs | 0 src/{re_cmds => cmds/reddit}/approve.rs | 0 src/{re_cmds => cmds/reddit}/generic_fns.rs | 0 src/{re_cmds => cmds/reddit}/get.rs | 0 src/{re_cmds => cmds/reddit}/remove.rs | 0 src/{re_cmds => cmds/reddit}/shorturl.rs | 0 src/{re_cmds => cmds/reddit}/top.rs | 0 src/{re_cmds => cmds/reddit}/update.rs | 0 src/{re_cmds => cmds/reddit}/vote.rs | 0 src/debug_cmds/guild_invite.rs | 35 --------------- src/debug_cmds/leave_guild.rs | 19 -------- src/debug_cmds/main_cmd.rs | 48 --------------------- src/debug_cmds/ping.rs | 8 ---- src/debug_cmds/reload_cfg.rs | 33 -------------- src/debug_cmds/save.rs | 12 ------ src/debug_cmds/stop.rs | 35 --------------- src/debug_cmds/view_guilds.rs | 29 ------------- src/debug_cmds/whoami.rs | 13 ------ src/events.rs | 2 +- src/gen.rs | 34 +++++++-------- src/main.rs | 39 ++--------------- 35 files changed, 52 insertions(+), 286 deletions(-) create mode 100644 src/cmds.rs create mode 100644 src/cmds/db.rs rename src/{db_cmds => cmds/db}/add_server.rs (100%) rename src/{db_cmds => cmds/db}/main_cmd.rs (100%) rename src/{db_cmds => cmds/db}/reddit_channel.rs (100%) rename src/{db_cmds => cmds/db}/wwrps_channel.rs (100%) create mode 100644 src/cmds/debug.rs create mode 100644 src/cmds/generic.rs rename src/cmds/{ => generic}/eight_ball.rs (100%) rename src/cmds/{ => generic}/embed.rs (100%) rename src/cmds/{ => generic}/help.rs (100%) rename src/cmds/{ => generic}/send.rs (100%) rename src/cmds/{ => generic}/wwrps.rs (100%) create mode 100644 src/cmds/reddit.rs rename src/{re_cmds => cmds/reddit}/add.rs (100%) rename src/{re_cmds => cmds/reddit}/approve.rs (100%) rename src/{re_cmds => cmds/reddit}/generic_fns.rs (100%) rename src/{re_cmds => cmds/reddit}/get.rs (100%) rename src/{re_cmds => cmds/reddit}/remove.rs (100%) rename src/{re_cmds => cmds/reddit}/shorturl.rs (100%) rename src/{re_cmds => cmds/reddit}/top.rs (100%) rename src/{re_cmds => cmds/reddit}/update.rs (100%) rename src/{re_cmds => cmds/reddit}/vote.rs (100%) delete mode 100644 src/debug_cmds/guild_invite.rs delete mode 100644 src/debug_cmds/leave_guild.rs delete mode 100644 src/debug_cmds/main_cmd.rs delete mode 100644 src/debug_cmds/ping.rs delete mode 100644 src/debug_cmds/reload_cfg.rs delete mode 100644 src/debug_cmds/save.rs delete mode 100644 src/debug_cmds/stop.rs delete mode 100644 src/debug_cmds/view_guilds.rs delete mode 100644 src/debug_cmds/whoami.rs diff --git a/src/cmds.rs b/src/cmds.rs new file mode 100644 index 0000000..6dab691 --- /dev/null +++ b/src/cmds.rs @@ -0,0 +1,4 @@ +pub mod db; +pub mod debug; +pub mod generic; +pub mod reddit; \ No newline at end of file diff --git a/src/cmds/db.rs b/src/cmds/db.rs new file mode 100644 index 0000000..98cc748 --- /dev/null +++ b/src/cmds/db.rs @@ -0,0 +1,4 @@ +pub mod add_server; +pub mod main_cmd; +pub mod reddit_channel; +pub mod wwrps_channel; \ No newline at end of file diff --git a/src/db_cmds/add_server.rs b/src/cmds/db/add_server.rs similarity index 100% rename from src/db_cmds/add_server.rs rename to src/cmds/db/add_server.rs diff --git a/src/db_cmds/main_cmd.rs b/src/cmds/db/main_cmd.rs similarity index 100% rename from src/db_cmds/main_cmd.rs rename to src/cmds/db/main_cmd.rs diff --git a/src/db_cmds/reddit_channel.rs b/src/cmds/db/reddit_channel.rs similarity index 100% rename from src/db_cmds/reddit_channel.rs rename to src/cmds/db/reddit_channel.rs diff --git a/src/db_cmds/wwrps_channel.rs b/src/cmds/db/wwrps_channel.rs similarity index 100% rename from src/db_cmds/wwrps_channel.rs rename to src/cmds/db/wwrps_channel.rs diff --git a/src/cmds/debug.rs b/src/cmds/debug.rs new file mode 100644 index 0000000..29a5fd1 --- /dev/null +++ b/src/cmds/debug.rs @@ -0,0 +1,9 @@ +pub mod guild_invite; +pub mod leave_guild; +pub mod main_cmd; +pub mod ping; +pub mod reload_cfg; +pub mod save; +pub mod stop; +pub mod view_guilds; +pub mod whoami; \ No newline at end of file diff --git a/src/cmds/generic.rs b/src/cmds/generic.rs new file mode 100644 index 0000000..f4d08b5 --- /dev/null +++ b/src/cmds/generic.rs @@ -0,0 +1,5 @@ +pub mod eight_ball; +pub mod embed; +pub mod help; +pub mod send; +pub mod wwrps; \ No newline at end of file diff --git a/src/cmds/eight_ball.rs b/src/cmds/generic/eight_ball.rs similarity index 100% rename from src/cmds/eight_ball.rs rename to src/cmds/generic/eight_ball.rs diff --git a/src/cmds/embed.rs b/src/cmds/generic/embed.rs similarity index 100% rename from src/cmds/embed.rs rename to src/cmds/generic/embed.rs diff --git a/src/cmds/help.rs b/src/cmds/generic/help.rs similarity index 100% rename from src/cmds/help.rs rename to src/cmds/generic/help.rs diff --git a/src/cmds/send.rs b/src/cmds/generic/send.rs similarity index 100% rename from src/cmds/send.rs rename to src/cmds/generic/send.rs diff --git a/src/cmds/wwrps.rs b/src/cmds/generic/wwrps.rs similarity index 100% rename from src/cmds/wwrps.rs rename to src/cmds/generic/wwrps.rs diff --git a/src/cmds/reddit.rs b/src/cmds/reddit.rs new file mode 100644 index 0000000..c0f2d5a --- /dev/null +++ b/src/cmds/reddit.rs @@ -0,0 +1,9 @@ +pub mod add; +pub mod approve; +pub mod generic_fns; +pub mod get; +pub mod remove; +pub mod shorturl; +pub mod top; +pub mod update; +pub mod vote; \ No newline at end of file diff --git a/src/re_cmds/add.rs b/src/cmds/reddit/add.rs similarity index 100% rename from src/re_cmds/add.rs rename to src/cmds/reddit/add.rs diff --git a/src/re_cmds/approve.rs b/src/cmds/reddit/approve.rs similarity index 100% rename from src/re_cmds/approve.rs rename to src/cmds/reddit/approve.rs diff --git a/src/re_cmds/generic_fns.rs b/src/cmds/reddit/generic_fns.rs similarity index 100% rename from src/re_cmds/generic_fns.rs rename to src/cmds/reddit/generic_fns.rs diff --git a/src/re_cmds/get.rs b/src/cmds/reddit/get.rs similarity index 100% rename from src/re_cmds/get.rs rename to src/cmds/reddit/get.rs diff --git a/src/re_cmds/remove.rs b/src/cmds/reddit/remove.rs similarity index 100% rename from src/re_cmds/remove.rs rename to src/cmds/reddit/remove.rs diff --git a/src/re_cmds/shorturl.rs b/src/cmds/reddit/shorturl.rs similarity index 100% rename from src/re_cmds/shorturl.rs rename to src/cmds/reddit/shorturl.rs diff --git a/src/re_cmds/top.rs b/src/cmds/reddit/top.rs similarity index 100% rename from src/re_cmds/top.rs rename to src/cmds/reddit/top.rs diff --git a/src/re_cmds/update.rs b/src/cmds/reddit/update.rs similarity index 100% rename from src/re_cmds/update.rs rename to src/cmds/reddit/update.rs diff --git a/src/re_cmds/vote.rs b/src/cmds/reddit/vote.rs similarity index 100% rename from src/re_cmds/vote.rs rename to src/cmds/reddit/vote.rs diff --git a/src/debug_cmds/guild_invite.rs b/src/debug_cmds/guild_invite.rs deleted file mode 100644 index 634e07d..0000000 --- a/src/debug_cmds/guild_invite.rs +++ /dev/null @@ -1,35 +0,0 @@ -use poise::serenity_prelude::{CreateInvite, GuildId}; - -use crate::{Context, Error, lang, messages::send_msg}; - - -pub async fn cmd(ctx: Context<'_>, guild_id: u64) -> Result<(), Error> { - let id = GuildId::from(guild_id); - let guild = id.to_partial_guild(ctx.http()).await?; - - if !ctx.serenity_context().cache.guilds().contains(&id) { - send_msg(ctx, lang!("dc_msg_not_in_guild"), true, true).await; - return Ok(()); - } - - let ch = guild.channels(ctx.http()).await? - .values() - .find(|c| c.is_text_based()) - .cloned(); - - if let Some(channel) = ch { - let bot_member = &guild.member(ctx.http(), ctx.framework().bot_id).await?; - let perms = guild.user_permissions_in(&channel, bot_member); - - if !perms.create_instant_invite() { - send_msg(ctx, lang!("dc_msg_no_perms", "CreateInvite"), true, true).await; - return Ok(()); - } - - let inv_builder = CreateInvite::new().max_age(0).max_uses(0); - let inv = channel.id.create_invite(ctx.http(), inv_builder).await?; - send_msg(ctx, inv.url(), true, true).await; - } - - return Ok(()); -} \ No newline at end of file diff --git a/src/debug_cmds/leave_guild.rs b/src/debug_cmds/leave_guild.rs deleted file mode 100644 index c86e790..0000000 --- a/src/debug_cmds/leave_guild.rs +++ /dev/null @@ -1,19 +0,0 @@ -use poise::serenity_prelude::GuildId; - -use crate::{Context, Error, lang, messages::send_msg}; - - -pub async fn cmd(ctx: Context<'_>, guild_id: u64) -> Result<(), Error> { - let id = GuildId::from(guild_id); - let guild = id.to_partial_guild(ctx.http()).await?; - - if !ctx.serenity_context().cache.guilds().contains(&id) { - send_msg(ctx, lang!("dc_msg_not_in_guild"), true, true).await; - return Ok(()); - } - - guild.leave(ctx.http()).await?; - send_msg(ctx, lang!("success"), true, true).await; - - return Ok(()); -} \ No newline at end of file diff --git a/src/debug_cmds/main_cmd.rs b/src/debug_cmds/main_cmd.rs deleted file mode 100644 index a029125..0000000 --- a/src/debug_cmds/main_cmd.rs +++ /dev/null @@ -1,48 +0,0 @@ -use crate::{Context, Error, debug_cmds::{guild_invite, leave_guild, ping, save, stop, view_guilds, whoami}}; - - -#[derive(poise::ChoiceParameter, PartialEq)] -pub enum Subcommands { - GuildInvite, - LeaveGuild, - Ping, - //ReloadCfg, - Save, - Stop, - ViewGuilds, - WhoAmI -} - - -#[poise::command( - slash_command, - prefix_command, - category = "owner", - rename = "debug", - owners_only, - required_bot_permissions = "SEND_MESSAGES | VIEW_CHANNEL" -)] -/// Various debug utilities -pub async fn cmd( - ctx: Context<'_>, - #[description = "Subcommand"] subcommand: Subcommands, - string_arg: Option, - u64_arg: Option -) -> Result<(), Error> -{ - let u64_arg_u: u64 = u64_arg.unwrap_or("0".to_string()).as_str().parse()?; - - match subcommand { - Subcommands::GuildInvite => guild_invite::cmd(ctx, u64_arg_u).await?, - Subcommands::LeaveGuild => leave_guild::cmd(ctx, u64_arg_u).await?, - Subcommands::Ping => ping::cmd(ctx).await?, - //Subcommands::ReloadCfg => reload_cfg::cmd(ctx).await?, - Subcommands::Save => save::cmd(ctx).await?, - Subcommands::Stop => stop::cmd(ctx, string_arg).await?, - Subcommands::ViewGuilds => view_guilds::cmd(ctx).await?, - Subcommands::WhoAmI => whoami::cmd(ctx).await?, - //_ => return Ok(()) - } - - return Ok(()); -} diff --git a/src/debug_cmds/ping.rs b/src/debug_cmds/ping.rs deleted file mode 100644 index 09e8f87..0000000 --- a/src/debug_cmds/ping.rs +++ /dev/null @@ -1,8 +0,0 @@ -use crate::{messages::send_msg, Context, Error}; - - -pub async fn cmd(ctx: Context<'_>) -> Result<(), Error> { - send_msg(ctx, "Pong".to_string(), true, true).await; - - return Ok(()); -} \ No newline at end of file diff --git a/src/debug_cmds/reload_cfg.rs b/src/debug_cmds/reload_cfg.rs deleted file mode 100644 index 7650f7d..0000000 --- a/src/debug_cmds/reload_cfg.rs +++ /dev/null @@ -1,33 +0,0 @@ -/*use crate::{Context, Error, data::{self, get_toml_mutex, read_cfg_data}, lang, messages::send_msg}; - - -pub async fn cmd(ctx: Context<'_>) -> Result<(), Error> { - let r = read_cfg_data(ctx.data(), false).await; - let d = get_toml_mutex(&ctx.data().cfg).await.unwrap(); - - if r.is_none() { return Ok(()); } - - update_cfg(ctx).await; - - if r.unwrap()["value"].as_bool().unwrap() { - send_msg( - ctx, - lang!("dc_msg_reload_cfg_success", toml::to_string_pretty(&d).unwrap()), - true, - true - ).await; - return Ok(()); - } - - send_msg(ctx, lang!("dc_msg_reload_cfg_python_fail"), true, true).await; - return Ok(()); -} - - -async fn update_cfg(ctx: Context<'_>) { - let data_binding = get_toml_mutex(&ctx.data().cfg).await.unwrap(); - let lang_cfg = data_binding["general"]["lang"].as_str().unwrap(); - data::load_lang_data(lang_cfg.to_string()); - - set_status(data_binding, ctx).await; -}*/ \ No newline at end of file diff --git a/src/debug_cmds/save.rs b/src/debug_cmds/save.rs deleted file mode 100644 index b018c8e..0000000 --- a/src/debug_cmds/save.rs +++ /dev/null @@ -1,12 +0,0 @@ -use crate::{Context, Error, db::{discord, reddit}, lang, messages::{edit_reply, send_msg}}; - -pub async fn cmd(ctx: Context<'_>) -> Result<(), Error> { - let msg = send_msg(ctx, lang!("dc_msg_owner_data_save"), true, true).await.unwrap(); - - discord::write_data(ctx.data()).await; - reddit ::write_data().await; - - edit_reply(ctx, msg, lang!("dc_msg_owner_data_save_complete")).await; - - return Ok(()); -} \ No newline at end of file diff --git a/src/debug_cmds/stop.rs b/src/debug_cmds/stop.rs deleted file mode 100644 index 32a85e6..0000000 --- a/src/debug_cmds/stop.rs +++ /dev/null @@ -1,35 +0,0 @@ -use std::process; - -use poise::serenity_prelude::OnlineStatus; - -use crate::{db::{discord, reddit}, lang, messages::{edit_reply, send_msg}, websocket::send_cmd_json, Context, Error}; - -pub async fn cmd(ctx: Context<'_>, confirmation: Option) -> Result<(), Error> { - let stop_confirm = "i want to stop the bot now".replace(" ", ""); - let confirm_formatted = confirmation.unwrap_or_default().to_lowercase().replace(" ", ""); - let should_stop = ctx.data().args.dev || confirm_formatted == stop_confirm; - - if should_stop { - let msg = send_msg(ctx, lang!("dc_msg_owner_data_save"), true, true).await.unwrap(); - discord::write_data(ctx.data()).await; - reddit ::write_data().await; - send_cmd_json("stop_praw", None, true).await; - - let complete = format!( - "{}\n{}", - lang!("dc_msg_owner_data_save_complete"), - lang!("dc_msg_owner_shutdown") - ); - - edit_reply(ctx, msg, complete).await; - ctx.serenity_context().set_presence(None, OnlineStatus::Invisible); - ctx.framework().shard_manager.shutdown_all().await; - - process::exit(0); - } - else { - send_msg(ctx, lang!("dc_msg_owner_shutdown_failed_confirmation"), true, true).await; - } - - return Ok(()); -} \ No newline at end of file diff --git a/src/debug_cmds/view_guilds.rs b/src/debug_cmds/view_guilds.rs deleted file mode 100644 index 0e44a6c..0000000 --- a/src/debug_cmds/view_guilds.rs +++ /dev/null @@ -1,29 +0,0 @@ -use crate::{Context, Error, messages::send_msg}; - - -pub async fn cmd(ctx: Context<'_>) -> Result<(), Error> { - let guilds = ctx.cache().guilds(); - let mut msgs: Vec> = vec![vec![]]; - let mut char_count: usize = 0; - let mut msg_idx: usize = 0; - - for g in guilds { - let name = g.name(ctx.cache()).unwrap_or("[unnamed]".to_string()); - let id = g.get(); - - let msg = format!("**[{}]** {}", id, name); - char_count += msg.len(); - - if char_count >= 2000 { - msgs.push(Vec::new()); - msg_idx += 1; - } - - msgs[msg_idx].push(msg); - } - - for msg in msgs - { send_msg(ctx, msg.join("\n"), true, true).await; } - - return Ok(()); -} \ No newline at end of file diff --git a/src/debug_cmds/whoami.rs b/src/debug_cmds/whoami.rs deleted file mode 100644 index b85c3b4..0000000 --- a/src/debug_cmds/whoami.rs +++ /dev/null @@ -1,13 +0,0 @@ -use crate::{lang, messages::send_msg, Context, Error}; - -pub async fn cmd(ctx: Context<'_>) -> Result<(), Error> { - let data = ctx.data(); - let uid: u64 = ctx.author().id.into(); - - let is_owner = data.owners .contains(&uid); - let is_bk_mod = data.bk_mods.contains(&uid); - - send_msg(ctx, lang!("dc_msg_whoami", is_owner, is_bk_mod), true, true).await; - - return Ok(()); -} \ No newline at end of file diff --git a/src/events.rs b/src/events.rs index 5c52d7b..b25aa2b 100644 --- a/src/events.rs +++ b/src/events.rs @@ -2,7 +2,7 @@ use crate::db::generic::{get_json_mutex, get_toml_mutex}; use crate::db::reddit::update_data; use crate::r#gen::set_status; use crate::messages::{make_post_embed, make_removed_embed, EmbedOptions}; -use crate::re_cmds::generic_fns::{is_bk_mod, is_bk_mod_serenity, serenity_edit_msg_embed, serenity_send_msg}; +use crate::cmds::reddit::generic_fns::{is_bk_mod, is_bk_mod_serenity, serenity_edit_msg_embed, serenity_send_msg}; use crate::websocket::send_cmd_json; use crate::{Data, Error, lang, rs_println}; use crate::db::reddit::POSTS_KEY; diff --git a/src/gen.rs b/src/gen.rs index 3ce3f47..3ca9b27 100644 --- a/src/gen.rs +++ b/src/gen.rs @@ -6,11 +6,11 @@ use poise::serenity_prelude::Client; use tokio::sync::Mutex; use toml::Value; -use crate::cmds::wwrps::RPSGame; +use crate::cmds::generic::wwrps::RPSGame; use crate::db::{cfg, discord, reddit}; use crate::db::generic::get_toml_mutex; use crate::lang::Lang; -use crate::{Args, Cmd, Data, cmds, db_cmds, debug_cmds, events, re_cmds, rs_println}; +use crate::{Args, Cmd, Data, cmds, events, rs_println}; pub async fn gen_data(args: Args, owners: Vec) -> Data { @@ -91,24 +91,24 @@ pub async fn gen_bot(data: Data, args: Args) -> Client { async fn make_cmd_vec(data: &Data) -> Vec { let mut cmds = vec![ // GENERIC - cmds::help::cmd(), - cmds::eight_ball::cmd(), - cmds::wwrps::cmd(), + cmds::generic::help::cmd(), + cmds::generic::eight_ball::cmd(), + cmds::generic::wwrps::cmd(), // REDDIT - re_cmds::add::cmd(), - re_cmds::approve::cmd(), - re_cmds::get::cmd(), - re_cmds::remove::cmd(), - re_cmds::top::cmd(), - re_cmds::update::cmd(), - re_cmds::vote::cmd(), - re_cmds::shorturl::cmd(), + cmds::reddit::add::cmd(), + cmds::reddit::approve::cmd(), + cmds::reddit::get::cmd(), + cmds::reddit::remove::cmd(), + cmds::reddit::top::cmd(), + cmds::reddit::update::cmd(), + cmds::reddit::vote::cmd(), + cmds::reddit::shorturl::cmd(), // OWNER - cmds::embed::cmd(), - cmds::send::cmd(), - debug_cmds::main_cmd::cmd(), + cmds::generic::embed::cmd(), + cmds::generic::send::cmd(), + cmds::debug::main_cmd::cmd(), // DATABASE - db_cmds::main_cmd::cmd() + cmds::db::main_cmd::cmd() ]; let cfg = get_toml_mutex(&data.cfg).await.unwrap(); diff --git a/src/main.rs b/src/main.rs index c323a90..d03f3a1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,47 +2,14 @@ #![allow(clippy::needless_return)] #![allow(static_mut_refs)] -mod cmds { - pub mod eight_ball; - pub mod embed; - pub mod help; - pub mod send; - pub mod wwrps; -} -mod re_cmds { - pub mod add; - pub mod approve; - pub mod generic_fns; - pub mod get; - pub mod remove; - pub mod shorturl; - pub mod top; - pub mod update; - pub mod vote; -} -mod debug_cmds { - pub mod guild_invite; - pub mod leave_guild; - pub mod main_cmd; - pub mod ping; - pub mod reload_cfg; - pub mod save; - pub mod stop; - pub mod view_guilds; - pub mod whoami; -} -mod db_cmds { - pub mod add_server; - pub mod reddit_channel; - pub mod main_cmd; - pub mod wwrps_channel; -} + mod events; mod messages; mod python; mod macros; #[allow(unknown_lints)] mod websocket; +mod cmds; mod db; mod schedule; mod gen; @@ -65,7 +32,7 @@ use tokio::runtime::Runtime; use tokio::sync::Mutex; use websocket::send_cmd_json; -use crate::cmds::wwrps::RPSGame; +use crate::cmds::generic::wwrps::RPSGame; use crate::db::generic::get_toml_mutex; use crate::lang::Lang; use crate::schedule::Schedule;