aboutsummaryrefslogblamecommitdiff
path: root/modules/spotify/spotify.cpp
blob: 89c7b8843e814af0e07c4d6dfc299fedf2dc9ffe (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
















                                                                                        
                 






















                                                                                                                                                               
                                            
                                                                   
 













                                                                                                                                               



                                                         

         






                         
/*
 * =====================================================================================
 *
 *       Filename:  spotify.cpp
 *
 *    Description:  Implementation of the spotify API 
 *
 *        Version:  1.0
 *        Created:  04/01/2023 09:55:09 PM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Cara Salter (muirrum), cara@devcara.com
 *   Organization:  Worcester Polytechnic Institute
 *
 * =====================================================================================
 */
#include <pcre.h>
#include <stdlib.h>
#include "cpr/cpr.h"
#include <142bot/modules.hpp>


class SpotifyModule: public Module {
    std::string spotifyRegex;
public:
    SpotifyModule(Bot* creator, ModuleLoader* ml) : Module(creator, ml) {
        ml->attach({I_OnMessage}, this);

        this->spotifyRegex = "^https:\/\/open.spotify.com\/track\/([a-zA-Z0-9]+)(.*)$";
    }

    virtual std::string version() {
        return "0.1.0";
    }

    virtual std::string description() {
        return "Manage spotify queues for 142";
    }

    virtual bool OnMessage(const dpp::message_create_t &message, const std::string& clean_message, bool mentioned, const std::vector<std::string> & mentions) {
        sentry_set_tag("module", "spotify");
        bot->core->log(dpp::ll_debug, "Got message event");        

        const char* pcre_error;
        int pcre_error_ofs;

        auto comp = pcre_compile("^https:\/\/open.spotify.com\/track\/([a-zA-Z0-9]+)(.*)$", PCRE_CASELESS, &pcre_error, &pcre_error_ofs, NULL);
        if (!comp) {
            bot->core->log(dpp::ll_error, pcre_error);
        }

        int matcharr[90];
        int matchcount = pcre_exec(comp, NULL, clean_message.c_str(), clean_message.length(), 0, 0, matcharr, 90);

        if (matchcount > 0) {
            // We found a spotify URL!
            EmbedSimple("Found a spotify URL", message.msg.channel_id);
        } else {
            if (clean_message.starts_with(bot->prefix)) {

            }
        }

        return true;
    }
};



ENTRYPOINT(SpotifyModule)