Skip to content

Commit e15a399

Browse files
authored
Merge pull request #165 from Rustmail/157-extend-add_staff-command-to-work-with-user-context-menus
feat(commands): add user context to add_staff command
2 parents 9c89e4b + 72cc36f commit e15a399

12 files changed

Lines changed: 25 additions & 16 deletions

File tree

src/commands/add_staff/slash_command/add_staff.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ use crate::config::Config;
44
use crate::db::thread_exists;
55
use crate::errors::CommandError::InvalidFormat;
66
use crate::errors::ThreadError::NotAThreadChannel;
7-
use crate::errors::{common, CommandError, ModmailError, ModmailResult};
7+
use crate::errors::{CommandError, ModmailError, ModmailResult, common};
88
use crate::i18n::get_translated_message;
99
use crate::utils::command::defer_response::defer_response;
1010
use crate::utils::message::message_builder::MessageBuilder;
1111
use serenity::all::{
12-
CommandDataOptionValue, CommandInteraction, CommandOptionType, Context, CreateCommand,
13-
CreateCommandOption, ResolvedOption,
12+
CommandDataOptionValue, CommandInteraction, CommandOptionType, CommandType, Context,
13+
CreateCommand, CreateCommandOption, ResolvedOption,
1414
};
1515
use std::collections::HashMap;
1616

@@ -52,6 +52,7 @@ impl RegistrableCommand for AddStaffCommand {
5252
CreateCommandOption::new(CommandOptionType::User, "user_id", user_id_desc)
5353
.required(true),
5454
),
55+
CreateCommand::new("add_staff").kind(CommandType::User),
5556
]
5657
})
5758
}
@@ -89,7 +90,15 @@ impl RegistrableCommand for AddStaffCommand {
8990
)));
9091
}
9192
},
92-
None => return Err(ModmailError::Command(CommandError::MissingArguments)),
93+
None => {
94+
if let Some(user_id) = command.data.target_id {
95+
user_id.to_user_id()
96+
} else {
97+
return Err(ModmailError::Command(CommandError::InvalidArguments(
98+
"user_id".to_string(),
99+
)));
100+
}
101+
}
93102
};
94103

95104
if thread_exists(command.user.id, pool).await {

src/commands/alert/common.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::config::Config;
22
use crate::db::{cancel_alert_for_staff, get_user_id_from_channel_id, set_alert_for_staff};
33
use crate::errors::DatabaseError::QueryFailed;
44
use crate::errors::DiscordError::ApiError;
5-
use crate::errors::{common, ModmailError, ModmailResult};
5+
use crate::errors::{ModmailError, ModmailResult, common};
66
use crate::utils::message::message_builder::MessageBuilder;
77
use serenity::all::colours::branding::GREEN;
88
use serenity::all::{CommandInteraction, Context, CreateInteractionResponse, Message};

src/commands/alert/slash_command/alert.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::commands::alert::common::{
44
};
55
use crate::commands::{BoxFuture, RegistrableCommand};
66
use crate::config::Config;
7-
use crate::errors::{common, CommandError, ModmailError, ModmailResult};
7+
use crate::errors::{CommandError, ModmailError, ModmailResult, common};
88
use crate::i18n::get_translated_message;
99
use crate::utils::command::defer_response::defer_response;
1010
use serenity::all::{

src/commands/close/slash_command/close.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::config::Config;
44
use crate::db::{
55
close_thread, delete_scheduled_closure, get_scheduled_closure, upsert_scheduled_closure,
66
};
7-
use crate::errors::{common, CommandError, ModmailError, ModmailResult};
7+
use crate::errors::{CommandError, ModmailError, ModmailResult, common};
88
use crate::i18n::get_translated_message;
99
use crate::utils::command::defer_response::defer_response;
1010
use crate::utils::message::message_builder::MessageBuilder;

src/commands/delete/slash_command/delete.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::commands::delete::common::{
44
};
55
use crate::commands::{BoxFuture, RegistrableCommand};
66
use crate::config::Config;
7-
use crate::errors::{common, MessageError, ModmailError, ModmailResult};
7+
use crate::errors::{MessageError, ModmailError, ModmailResult, common};
88
use crate::i18n::get_translated_message;
99
use crate::utils::command::defer_response::defer_response_ephemeral;
1010
use crate::utils::message::message_builder::MessageBuilder;

src/commands/edit/slash_command/edit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::commands::{BoxFuture, RegistrableCommand};
44
use crate::config::Config;
55
use crate::db::{get_thread_message_by_inbox_message_id, update_message_content};
66
use crate::errors::common::message_not_found;
7-
use crate::errors::{common, ModmailResult};
7+
use crate::errors::{ModmailResult, common};
88
use crate::i18n::get_translated_message;
99
use crate::utils::command::defer_response::defer_response;
1010
use crate::utils::conversion::hex_string_to_int::hex_string_to_int;

src/commands/force_close/slash_command/force_close.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::config::Config;
44
use crate::db::threads::{is_a_ticket_channel, is_orphaned_thread_channel};
55
use crate::errors::DatabaseError::QueryFailed;
66
use crate::errors::ThreadError::{NotAThreadChannel, UserStillInServer};
7-
use crate::errors::{common, ModmailError, ModmailResult};
7+
use crate::errors::{ModmailError, ModmailResult, common};
88
use crate::i18n::get_translated_message;
99
use serenity::all::{CommandInteraction, Context, CreateCommand, ResolvedOption};
1010

src/commands/new_thread/slash_command/new_thread.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use crate::commands::{BoxFuture, RegistrableCommand};
33
use crate::config::Config;
44
use crate::db::{create_thread_for_user, get_thread_channel_by_user_id, thread_exists};
55
use crate::errors::{
6-
common, CommandError, DatabaseError, DiscordError, ModmailError, ModmailResult,
6+
CommandError, DatabaseError, DiscordError, ModmailError, ModmailResult, common,
77
};
88
use crate::i18n::get_translated_message;
99
use crate::utils::command::defer_response::defer_response;

src/commands/recover/slash_command/recover.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::commands::{BoxFuture, RegistrableCommand};
22
use crate::config::Config;
3-
use crate::errors::{common, ModmailResult};
3+
use crate::errors::{ModmailResult, common};
44
use crate::i18n::get_translated_message;
55
use crate::modules::message_recovery::recover_missing_messages;
66
use crate::utils::command::defer_response::defer_response;

src/commands/remove_staff/slash_command/remove_staff.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::config::Config;
44
use crate::db::thread_exists;
55
use crate::errors::CommandError::InvalidFormat;
66
use crate::errors::ThreadError::NotAThreadChannel;
7-
use crate::errors::{common, CommandError, ModmailError, ModmailResult};
7+
use crate::errors::{CommandError, ModmailError, ModmailResult, common};
88
use crate::i18n::get_translated_message;
99
use crate::utils::command::defer_response::defer_response;
1010
use crate::utils::message::message_builder::MessageBuilder;

0 commit comments

Comments
 (0)