#include "../Common.hpp" #include "../Utility/CairoTools.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include void commandGenerateReport(const dpp::slashcommand_t &event, dpp::cluster &bot) { event.thinking(); dpp::snowflake fileId = std::get(event.get_parameter("image")); dpp::attachment file = event.command.get_resolved_attachment(fileId); auto fileType = supportedImageFileTypes.find(file.content_type); if (fileType != supportedImageFileTypes.end()) { bot.request( file.url, dpp::http_method::m_get, [event, &bot, fileType](const dpp::http_request_completion_t &result) { auto imageAsSurface = fileType->second(result.body); if (imageAsSurface == nullptr) { event.edit_response(COMMAND_GENERATE_REPORT_FAIL_IMAGE_LOAD); return; } // Don't forget that its only funny if it is all in upper case std::string headline = std::get(event.get_parameter("headline")); // Never seen this method before but looks awesome std::transform(headline.begin(), headline.end(), headline.data(), ::toupper); std::string responseData = GenerateReportImage(imageAsSurface, headline); dpp::message response(event.command.channel_id, ""); response.add_file("report.png", responseData); event.edit_response(response); }); } else { event.edit_response( COMMAND_GENERATE_REPORT_FAIL_NOT_SUPPORTED(file.content_type)); } } // // ACTUAL GENERATION STARTS HERE //