diff --git a/src/commands.rs b/src/commands.rs deleted file mode 100644 index cd4239c..0000000 --- a/src/commands.rs +++ /dev/null @@ -1,63 +0,0 @@ - - -use serenity::async_trait; -use serenity::model::channel::Message; -use serenity::model::gateway::Ready; -use serenity::prelude::*; -use serenity::model::prelude::*; - -use super::utils; - -pub struct CommandParser; - -impl CommandParser -{ - pub async fn parse_command(ctx: Context, msg: Message, server_id: GuildId) - { - - if server_id == utils::ADMIN_SERVER_ID - { - if msg.content == ".log_test" - { - utils::Logger::log_test(ctx, "This is a test log message!").await; - return; - } - } - - if msg.content == ".role_test" - { - let test_role = RoleId(1129106677619228702 as u64); - if let Err(why) = server_id.edit_member(&ctx, msg.author, |m| - { - if let Some(mut member) = msg.member - { - member.roles.push(test_role); - return m.roles(member.roles); - } - - m - }).await - { - println!("Error updating roles: {:?}", why); - } - else - { - let role = &server_id.roles(&ctx).await.unwrap()[&test_role]; - if let Err(why) = msg.channel_id.say(&ctx.http, format!("{} role added!", role)).await - { - println!("Error sending message: {:?}", why); - } - } - } - - - if msg.content == ".randomizer" - { - let item = utils::get_random_item(); - if let Err(why) = msg.channel_id.say(&ctx.http, format!("You found {}!", item)).await - { - println!("Error sending message: {:?}", why); - } - } - } -} \ No newline at end of file diff --git a/src/commands/admin.rs b/src/commands/admin.rs new file mode 100644 index 0000000..9802521 --- /dev/null +++ b/src/commands/admin.rs @@ -0,0 +1,4 @@ + +use serenity::prelude::*; +use serenity::model::prelude::*; +use serenity::model::channel::Message; \ No newline at end of file diff --git a/src/commands/mod.rs b/src/commands/mod.rs new file mode 100644 index 0000000..59201cb --- /dev/null +++ b/src/commands/mod.rs @@ -0,0 +1,24 @@ +// use serenity::async_trait; +use serenity::prelude::*; +use serenity::model::channel::Message; +// use serenity::model::gateway::Ready; +// use serenity::model::prelude::*; + +pub mod test; + +use crate::utils; + +pub async fn parse(ctx: Context, msg: Message) +{ + if let Some(server_id) = msg.guild_id + { + if server_id == utils::ADMIN_SERVER_ID && msg.channel_id == utils::ADMIN_COMMAND_CHANNEL_ID + { + test::parse_command(ctx, msg, server_id).await; + } + } + else + { + utils::Logger::log_message(ctx, &format!("DM Received from {}: {}", msg.author.name, msg.content)).await; + } +} \ No newline at end of file diff --git a/src/commands/test.rs b/src/commands/test.rs new file mode 100644 index 0000000..2165569 --- /dev/null +++ b/src/commands/test.rs @@ -0,0 +1,59 @@ + +// use serenity::async_trait; +use serenity::model::channel::Message; +// use serenity::model::gateway::Ready; +use serenity::prelude::*; +use serenity::model::prelude::*; + +use super::super::utils; + + +pub async fn parse_command(ctx: Context, msg: Message, server_id: GuildId) +{ + + if server_id == utils::ADMIN_SERVER_ID + { + if msg.content == ".log_test" + { + utils::Logger::log_message(ctx, "This is a test log message!").await; + return; + } + } + + if msg.content == ".role_test" + { + let test_role = RoleId(1129106677619228702 as u64); + if let Err(why) = server_id.edit_member(&ctx, msg.author, |m| + { + if let Some(mut member) = msg.member + { + member.roles.push(test_role); + return m.roles(member.roles); + } + + m + }).await + { + utils::Logger::log_error(ctx, &format!("Error updating roles: {:?}", why)).await; + } + else + { + let role = &server_id.roles(&ctx).await.unwrap()[&test_role]; + if let Err(why) = msg.channel_id.say(&ctx.http, format!("{} role added!", role)).await + { + utils::Logger::log_error(ctx, &format!("Error sending message: {:?}", why)).await; + } + } + return; + } + + + if msg.content == ".randomizer" + { + let item = utils::get_random_item(); + if let Err(why) = msg.channel_id.say(&ctx.http, format!("You found {}!", item)).await + { + println!("Error sending message: {:?}", why); + } + } +} diff --git a/src/main.rs b/src/main.rs index d59fbb3..027284a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,16 +1,13 @@ - mod commands; mod data_loader; mod utils; -use commands::{CommandParser}; - use serenity::async_trait; use serenity::model::channel::Message; use serenity::model::gateway::Ready; use serenity::prelude::*; -use serenity::model::prelude::*; +// use serenity::model::prelude::*; struct Handler; @@ -24,19 +21,7 @@ impl EventHandler for Handler // events can be dispatched simultaneously. async fn message(&self, ctx: Context, msg: Message) { - - if let Some(server_id) = msg.guild_id - { - let sm_speedrun_server_id = 98929157894836224; - let guru_test_server_id = 483735475283165195; - - if server_id == sm_speedrun_server_id || server_id == guru_test_server_id - { - CommandParser::parse_command(ctx, msg, server_id).await; - - } - } - + commands::parse(ctx, msg).await; } diff --git a/src/utils.rs b/src/utils.rs index 376c592..1b2b6b4 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,8 +1,40 @@ - use rand::prelude::*; use serenity::{client::Context, model::prelude::ChannelId}; + +pub const ADMIN_SERVER_ID: u64 = 483735475283165195; +pub const ADMIN_COMMAND_CHANNEL_ID: u64 = 1130607621699809443; +pub const MAIN_LOG_CHANNEL_ID: u64 = 1130607583007363074; +pub const ERROR_LOG_CHANNEL_ID: u64 = 1130607602221461564; + +pub struct Logger +{ + +} + +impl Logger +{ + pub async fn log_message(ctx: Context, msg: &str) + { + let channel = ChannelId(MAIN_LOG_CHANNEL_ID); + if let Err(why) = channel.say(ctx, msg).await + { + println!("Failed to log message: {} -- Reason: {}", msg, why); + } + } + + pub async fn log_error(ctx: Context, msg: &str) + { + let channel = ChannelId(ERROR_LOG_CHANNEL_ID); + if let Err(why) = channel.say(ctx, msg).await + { + println!("Failed to log an error: {} -- Reason: {}", msg, why); + } + } +} + + pub fn get_random_item() -> String { let major_items = vec!["Missiles", "Super Missiles", "E Tank", "Power Bombs" ]; @@ -36,27 +68,4 @@ pub fn get_random_item() -> String } } -} - -pub const ADMIN_SERVER_ID: u64 = 483735475283165195; -pub const ADMIN_COMMAND_CHANNEL_ID: u64 = 1130607621699809443; -pub const MAIN_LOG_CHANNEL_ID: u64 = 1130607583007363074; -pub const ERROR_LOG_CHANNEL_ID: u64 = 1130607602221461564; - -pub struct Logger -{ - -} - -impl Logger -{ - pub async fn log_test(ctx: Context, msg: &str) - { - let channel = ChannelId(MAIN_LOG_CHANNEL_ID); - if let Err(why) = channel.say(ctx, msg).await - { - println!("Error sending message to log channel: {}", why); - } - } -} - \ No newline at end of file +} \ No newline at end of file