diff options
| author | Cara Salter <cara@devcara.com> | 2023-06-10 09:55:50 -0400 | 
|---|---|---|
| committer | Cara Salter <cara@devcara.com> | 2023-06-10 09:59:50 -0400 | 
| commit | 201fd6765d1e33a541d9d1dc87969dda9aea1113 (patch) | |
| tree | 01a9ee8f27190e8b7a27aeefdaeac2c535ee2bc5 /modules/mail/mail.cpp | |
| parent | 6136631d2dcd9b1f561fa589acabcda7de8e2f36 (diff) | |
| download | 142bot-201fd6765d1e33a541d9d1dc87969dda9aea1113.tar.gz 142bot-201fd6765d1e33a541d9d1dc87969dda9aea1113.zip  | |
mail: Finish mail alerting module0.6
Will allow for semi-automated alerts whenever there's mail for someone.
Diffstat (limited to 'modules/mail/mail.cpp')
| -rw-r--r-- | modules/mail/mail.cpp | 43 | 
1 files changed, 20 insertions, 23 deletions
diff --git a/modules/mail/mail.cpp b/modules/mail/mail.cpp index 9ec170a..503c4eb 100644 --- a/modules/mail/mail.cpp +++ b/modules/mail/mail.cpp @@ -1,19 +1,22 @@  #include <142bot/modules.hpp>  #include <142bot/util.hpp>  #include <dpp/dpp.h> +#include <fmt/format.h>  class MailModule: public Module {      public:      MailModule(Bot* creator, ModuleLoader* ml) : Module(creator, ml) { -        ml->attach({I_OnSlashCommand, I_OnFormSubmit}, this); +        ml->attach({I_OnSlashCommand}, this);          auto id = creator->cfg.value("application_id", "");          creator->core->log(dpp::ll_info, "Application ID: " + id); -        creator->core->guild_command_create(dpp::slashcommand("mailalert", "Alert a resident that they have mail", id), creator->cfg["main_guild"]); +        creator->core->guild_command_create(dpp::slashcommand("mailalert", "Alert a resident that they have mail", id) +                                            .add_option(dpp::command_option(dpp::co_string, "sender", "Who sent the mail?", true)) +                                            .add_option(dpp::command_option(dpp::co_user, "recipient", "Who's the mail for?", true)), creator->cfg["main_guild"]);          creator->core->log(dpp::ll_info, "Registered mailalert");      }      virtual std::string version() { -        return "0.1.0"; +        return "0.1.1";      }      virtual std::string description() { @@ -22,31 +25,25 @@ class MailModule: public Module {      bool OnSlashCommand(const dpp::slashcommand_t &event) {          if (event.command.get_command_name() == "mailalert") { -            dpp::interaction_modal_response dialog("mail", "Mail alert!"); - -            dialog.add_component( -                    dpp::component() -                    .set_label("Sender") -                    .set_type(dpp::component_type::cot_text) -                    .set_id("sender") -                    .set_placeholder("Boom boom") -                    .set_text_style(dpp::text_style_type::text_short) -                    ); - -            auto select_comp = dialog.add_component( -                    dpp::component() -                    .set_label("Recipient") -                    .set_id("recipient") -                    .set_type(dpp::component_type::cot_mentionable_selectmenu) -                    ); +            dpp::snowflake recipient = std::get<dpp::snowflake>(event.get_parameter("recipient")); +            std::string sender = std::get<std::string>(event.get_parameter("sender")); + +            auto rec = dpp::find_guild_member(bot->cfg.value("main_guild", ""), recipient); +            auto roles = rec.roles; +            for (int i = 0; i < roles.size(); ++i) { +                if (roles[i] == 1083010579406536705u) { +                    std::string msg = fmt::format("**ALERT. ALERT.**\nMAIL STORAGE LEVELS CRITICAL. NEW MAIL FOR...\n\n{}...\n\nFROM...\n\n{}", rec.get_mention(), sender); +                    event.reply(dpp::message(msg).set_allowed_mentions(true, false, false, false, {}, {})); +                    return true; +                } +            } + +            event.reply(dpp::message("**USER NOT RESIDENT. PLEASE TRY AGAIN.**").set_flags(dpp::m_ephemeral));          }          return true;      } -    bool OnFormSubmit(const dpp::form_submit_t &event) { -        return true; -    }  };  ENTRYPOINT(MailModule)  | 
