diff --git a/data/defaults/cfg_default.toml b/data/defaults/cfg_default.toml index 84d68be..ec5ee70 100644 --- a/data/defaults/cfg_default.toml +++ b/data/defaults/cfg_default.toml @@ -32,13 +32,12 @@ add_post = ["weekly_art", "weekly"] [commands] # Disabled selected command categories. All commands and their categories can be viewed in the README. -# "admin" and "owner" categories are always enabled. -# [REQUIRES RESTART] disabled_categories = [ # "fun", # "help" # "re" # "debug" + # "db" ] # The chance (between 0..1) for the `/8_ball` command to output a "quirky" answer. diff --git a/src/cmds/add_server.rs b/src/cmds/add_server.rs index 6017ec3..21b0040 100644 --- a/src/cmds/add_server.rs +++ b/src/cmds/add_server.rs @@ -5,7 +5,7 @@ use crate::{data::dc_add_server, lang, messages::send_msg, Context, Error}; slash_command, prefix_command, rename = "add_server", - category = "admin", + category = "db", default_member_permissions = "ADMINISTRATOR", guild_only, required_bot_permissions = "SEND_MESSAGES | VIEW_CHANNEL" diff --git a/src/debug_cmds/main_cmd.rs b/src/debug_cmds/main_cmd.rs index cecfcb2..77a5084 100644 --- a/src/debug_cmds/main_cmd.rs +++ b/src/debug_cmds/main_cmd.rs @@ -1,4 +1,4 @@ -use crate::{Context, Error, debug_cmds::{guild_invite, leave_guild, ping, reload_cfg, stop, view_guilds, whoami}}; +use crate::{Context, Error, debug_cmds::{guild_invite, leave_guild, ping, stop, view_guilds, whoami}}; #[derive(poise::ChoiceParameter, PartialEq)] @@ -6,7 +6,7 @@ pub enum Subcommands { GuildInvite, LeaveGuild, Ping, - ReloadCfg, + //ReloadCfg, Stop, ViewGuilds, WhoAmI @@ -35,7 +35,7 @@ pub async fn cmd( 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::ReloadCfg => reload_cfg::cmd(ctx).await?, Subcommands::Stop => stop::cmd(ctx, string_arg).await?, Subcommands::ViewGuilds => view_guilds::cmd(ctx).await?, Subcommands::WhoAmI => whoami::cmd(ctx).await?, diff --git a/src/debug_cmds/reload_cfg.rs b/src/debug_cmds/reload_cfg.rs index dbb8a26..7650f7d 100644 --- a/src/debug_cmds/reload_cfg.rs +++ b/src/debug_cmds/reload_cfg.rs @@ -1,4 +1,4 @@ -use crate::{data::{self, get_toml_mutex, read_cfg_data}, lang, messages::send_msg, Context, Error}; +/*use crate::{Context, Error, data::{self, get_toml_mutex, read_cfg_data}, lang, messages::send_msg}; pub async fn cmd(ctx: Context<'_>) -> Result<(), Error> { @@ -7,9 +7,7 @@ pub async fn cmd(ctx: Context<'_>) -> Result<(), Error> { if r.is_none() { return Ok(()); } - 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()); + update_cfg(ctx).await; if r.unwrap()["value"].as_bool().unwrap() { send_msg( @@ -23,4 +21,13 @@ pub async fn cmd(ctx: Context<'_>) -> Result<(), Error> { send_msg(ctx, lang!("dc_msg_reload_cfg_python_fail"), true, true).await; return Ok(()); -} \ No newline at end of file +} + + +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/events.rs b/src/events.rs index d9e5ce0..1948519 100644 --- a/src/events.rs +++ b/src/events.rs @@ -1,15 +1,15 @@ use crate::data::{get_mutex_data, get_toml_mutex, update_re_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::websocket::send_cmd_json; -use crate::{lang, rs_println, Data, Error, CFG_DATA_RE}; +use crate::{CFG_DATA_RE, Data, Error, lang, rs_println}; -use poise::serenity_prelude::{self as serenity, ActivityData, ChannelId, ComponentInteraction, Interaction, Member, MessageId, Ready}; +use poise::serenity_prelude::{self as serenity, ChannelId, ComponentInteraction, Interaction, Member, MessageId, Ready}; use serde_json::{json, Value}; use std::future::Future; use std::pin::Pin; -use std::process; pub fn event_handler<'a>( ctx: &'a serenity::Context, @@ -36,33 +36,8 @@ async fn on_ready(ctx: &serenity::Context, data_about_bot: &Ready, data: &Data) ); let m_data = get_toml_mutex(&data.cfg).await.unwrap(); - let status_str: String; - let status = m_data["general"]["status"].as_str().unwrap(); - let status_c = m_data["general"]["statusCommitNumber"].as_bool().unwrap(); - let status_ec = m_data["general"]["statusExperimentalCommit"].as_bool().unwrap(); - - if status_c { - let commit_num_r = process::Command::new("git") - .args(["rev-list", "--count", "HEAD"]) - .output() - .unwrap(); - - let commit_num = format!( - "({} #{})", - if status_ec { "Experimental" } - else { "Commit" }, - String::from_utf8(commit_num_r.stdout).unwrap() - ).replace("\n", ""); - - status_str = [status, " ", commit_num.as_str().trim()].concat(); - } - else { status_str = status.to_string(); } - - let custom_activity = ActivityData::custom(status_str.clone()); - ctx.online(); - ctx.set_activity(Some(custom_activity)); - rs_println!("Set bot status as: \"{}\"", status_str); + set_status(m_data, ctx).await; } diff --git a/src/gen.rs b/src/gen.rs index 03e6497..73e7f7e 100644 --- a/src/gen.rs +++ b/src/gen.rs @@ -1,10 +1,12 @@ -use std::collections::HashSet; +use std::{collections::HashSet, process}; -use poise::serenity_prelude::UserId; +use poise::serenity_prelude::{ActivityData, UserId}; use poise::serenity_prelude as serenity; use poise::serenity_prelude::Client; +use toml::Value; -use crate::{Args, Cmd, Data, cmds, data::{self, get_toml_mutex}, debug_cmds, events, re_cmds, rs_println}; +use crate::data::get_toml_mutex; +use crate::{Args, Cmd, Data, cmds, data, debug_cmds, events, re_cmds, rs_println}; pub async fn gen_data(args: Args, owners: Vec) -> Data { @@ -93,14 +95,13 @@ async fn make_cmd_vec(data: &Data) -> Vec { re_cmds::update::cmd(), re_cmds::vote::cmd(), re_cmds::shorturl::cmd(), - // [ADMIN / OWNER] + // OWNER cmds::embed::cmd(), cmds::send::cmd(), - cmds::add_server::cmd(), - // REDDIT [ADMIN / OWNER] + debug_cmds::main_cmd::cmd(), + // DATABASE re_cmds::admin_bind::cmd(), - // DEBUG - debug_cmds::main_cmd::cmd() + cmds::add_server::cmd(), ]; let cfg = get_toml_mutex(&data.cfg).await.unwrap(); @@ -114,4 +115,35 @@ async fn make_cmd_vec(data: &Data) -> Vec { cmds.retain(|cmd| !disabled.contains(&cmd.category.as_ref().unwrap().as_str())); return cmds; +} + + +pub async fn set_status(m_data: Value, ctx: &serenity::Context) { + let status_str: String; + + let status = m_data["general"]["status"].as_str().unwrap(); + let status_c = m_data["general"]["statusCommitNumber"].as_bool().unwrap(); + let status_ec = m_data["general"]["statusExperimentalCommit"].as_bool().unwrap(); + + if status_c { + let commit_num_r = process::Command::new("git") + .args(["rev-list", "--count", "HEAD"]) + .output() + .unwrap(); + + let commit_num = format!( + "({} #{})", + if status_ec { "Experimental" } + else { "Commit" }, + String::from_utf8(commit_num_r.stdout).unwrap() + ).replace("\n", ""); + + status_str = [status, " ", commit_num.as_str().trim()].concat(); + } + else { status_str = status.to_string(); } + + let custom_activity = ActivityData::custom(status_str.clone()); + ctx.online(); + ctx.set_activity(Some(custom_activity)); + rs_println!("Set bot status as: \"{}\"", status_str); } \ No newline at end of file diff --git a/src/re_cmds/admin_bind.rs b/src/re_cmds/admin_bind.rs index 49cf188..9205b2b 100644 --- a/src/re_cmds/admin_bind.rs +++ b/src/re_cmds/admin_bind.rs @@ -4,7 +4,7 @@ use crate::{data::dc_bind_bk, lang, messages::send_msg, Context, Error}; slash_command, prefix_command, rename = "admin_re_bindchannel", - category = "admin", + category = "db", default_member_permissions = "ADMINISTRATOR", guild_only, required_bot_permissions = "SEND_MESSAGES | VIEW_CHANNEL"