Added the cancel_event command
+ When an event is canceled, a notification is sent to all interested users + The message is then deleted and removed from the databasemaster
parent
bff5684b38
commit
7799f0e2fe
33
src/main.rs
33
src/main.rs
|
@ -38,7 +38,7 @@ const UNINTERESTED_EMOJI: &str = "\u{274C}";
|
||||||
|
|
||||||
/// Event commands group
|
/// Event commands group
|
||||||
#[group]
|
#[group]
|
||||||
#[commands(create_event, confirm_event)]
|
#[commands(create_event, confirm_event, cancel_event)]
|
||||||
struct EventCommands;
|
struct EventCommands;
|
||||||
|
|
||||||
/// Struct for storing drafted events
|
/// Struct for storing drafted events
|
||||||
|
@ -255,7 +255,7 @@ fn get_config(data: &Arc<RwLock<ShareMap>>) -> std::result::Result<HypeBotConfig
|
||||||
Ok(config.clone())
|
Ok(config.clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checks if the user has permission to use this bot
|
/// Checks if the user has permission to use this bot
|
||||||
fn permission_check(ctx: &mut Context, msg: &Message, _command_name: &str) -> bool {
|
fn permission_check(ctx: &mut Context, msg: &Message, _command_name: &str) -> bool {
|
||||||
if let Some(guild_id) = msg.guild_id {
|
if let Some(guild_id) = msg.guild_id {
|
||||||
if let Ok(config) = get_config(&ctx.data) {
|
if let Ok(config) = get_config(&ctx.data) {
|
||||||
|
@ -372,6 +372,35 @@ fn create_event(ctx: &mut Context, msg: &Message, mut args: Args) -> CommandResu
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[command]
|
||||||
|
/// Cancels an event
|
||||||
|
fn cancel_event(ctx: &mut Context, _msg: &Message, mut args: Args) -> CommandResult {
|
||||||
|
let config = get_config(&ctx.data)?;
|
||||||
|
|
||||||
|
// Parse args
|
||||||
|
let event_name = args.single::<String>()?.replace("\"", "");
|
||||||
|
|
||||||
|
let event = get_event_by_name(config.db_url.clone(), event_name)?;
|
||||||
|
let message_id = event.message_id.parse::<u64>()?;
|
||||||
|
let message = ctx.http.get_message(config.event_channel, message_id)?;
|
||||||
|
|
||||||
|
let reaction_users = message
|
||||||
|
.reaction_users(&ctx.http, INTERESTED_EMOJI, None, None)
|
||||||
|
.unwrap_or(Vec::<User>::new());
|
||||||
|
|
||||||
|
let string = &format!("**{}** has been canceled!", event.event_name.clone());
|
||||||
|
|
||||||
|
for user in reaction_users {
|
||||||
|
send_dm_message(&ctx.http, user, &string);
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_event(config.db_url.clone(), event.id)?;
|
||||||
|
|
||||||
|
message.delete(&ctx)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
embed_migrations!("migrations/");
|
embed_migrations!("migrations/");
|
||||||
fn main() -> clap::Result<()> {
|
fn main() -> clap::Result<()> {
|
||||||
// Initialize arg parser
|
// Initialize arg parser
|
||||||
|
|
Loading…
Reference in New Issue