summaryrefslogtreecommitdiff
path: root/bot/src/handle_actions.cpp
blob: ef6e1c0486493f5a3948d5bfaf021d4ddea84604 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "../include/actions/delete.hpp"
dpp::task<std::unordered_map<std::string, std::string>> handle_actions(const dpp::slashcommand_t &event, const nlohmann::json &actions, const std::unordered_map<std::string, std::string> &key_values)
{
    std::unordered_map<std::string, std::string> workflow_key_values = {{}};
    dpp::cluster *cluster = event.owner;
    dpp::user user_ptr = event.command.get_issuing_user();
    dpp::async thinking = event.co_thinking(false);
    if (actions.is_array())
    {
        int i = 0;
        for (const auto &action : actions)
        {
            i++;
            if (action.contains("type"))
            {
                std::string action_type = action["type"];
                if (action_type == "delete_messages" && event.command.is_guild_interaction())
                {
                    std::unordered_map<std::string, std::string> return_value = co_await delete_action(event, action, key_values, user_ptr, cluster);
                   co_await thinking;
                   // if it's a false, we need to return false !
                     if (return_value.contains("error"))
                     {
                          co_return return_value;
                     }
                     else
                     {
                          // return everything expect the success message
                            for (const auto &[key, value] : return_value)
                            {
                                if (key != "success")
                                {
                                    workflow_key_values[key] = value;
                                }
                            }
                     }


                }
            }
            if (i == actions.size())
            {

                co_await thinking;
                co_return workflow_key_values;
            }
        }
    }
    co_await thinking;
    co_return workflow_key_values;
}