Compare commits

...

4 Commits

Author SHA1 Message Date
75fbd17761 clean: split code 2023-10-11 18:59:32 +00:00
fceef8197b add: token in env var 2023-10-11 18:59:09 +00:00
74024e696a add: get token in env var 2023-10-11 18:58:50 +00:00
cb5ad765a1 clean 2023-10-11 18:58:22 +00:00
6 changed files with 103 additions and 64 deletions

View File

@ -1,74 +1,19 @@
#include <string> #include <string>
#include <dpp/dpp.h> #include <dpp/dpp.h>
#include <dpp/channel.h> #include <dpp/channel.h>
#include <dpp/unicode_emoji.h>
#include "utils.hpp" #include "utils.hpp"
#include "config.h" #include "pymenu.hpp"
int main(int ac, char **av) int main(int ac, char **av, char** env)
{ {
dpp::cluster bot(ac == 2 ? av[1] : BOT_TOKEN, dpp::i_default_intents | dpp::i_message_content); (void) ac;
dpp::cluster bot(get_token(av, env), dpp::i_default_intents | dpp::i_message_content);
bot.on_log(dpp::utility::cout_logger()); bot.on_log(dpp::utility::cout_logger());
bot.on_message_create([&bot](const dpp::message_create_t& event) on_react(bot);
{ on_message(bot);
if (event.msg.author.id == bot.me.id)
{
bot.message_add_reaction(event.msg, dpp::unicode_emoji::white_check_mark);
}
else
{
dpp::channel channel = bot.channel_get_sync(event.msg.channel_id);
dpp::channel category = bot.channel_get_sync(channel.parent_id);
if (category.is_category() == false || category.name != GROCERY_LIST_CATEGORY)
return;
dpp::embed embed = dpp::embed()
.set_color(dpp::colors::sea_green)
.set_title(event.msg.content)
.set_author(event.msg.author.username, "", "")
.set_footer(dpp::embed_footer().set_text("PyMenuVersion:2.0"));
std::string str = event.msg.content;
unsigned int quantity;
float price;
get_article_data(str, quantity, price);
if (quantity != 0)
embed.add_field("Quantity", std::to_string(quantity));
if (price != 0)
embed.add_field("Price", std::to_string(price) + "");
embed.set_title(str);
dpp::message msg(event.msg.channel_id, embed);
event.send(msg);
bot.message_delete(event.msg.id, event.msg.channel_id);
}
});
bot.on_message_reaction_add([&bot](const dpp::message_reaction_add_t& event)
{
dpp::channel channel = bot.channel_get_sync(event.channel_id);
dpp::channel category = bot.channel_get_sync(channel.parent_id);
if (category.is_category() == false || category.name != GROCERY_LIST_CATEGORY)
return;
if (event.reacting_user.id == bot.me.id)
return;
dpp::emoji emoji = event.reacting_emoji;
if (emoji.name == dpp::unicode_emoji::white_check_mark)
bot.message_delete(event.message_id, event.channel_id);
});
bot.on_ready([&bot](const dpp::ready_t& event) bot.on_ready([&bot](const dpp::ready_t& event)
{ {

51
src/message.cpp Normal file
View File

@ -0,0 +1,51 @@
#include <dpp/cluster.h>
#include <dpp/unicode_emoji.h>
#include <dpp/dpp.h>
#include "config.h"
#include "utils.hpp"
void on_message(dpp::cluster& bot)
{
bot.on_message_create([&bot](const dpp::message_create_t& event)
{
if (event.msg.author.id == bot.me.id)
{
bot.message_add_reaction(event.msg, dpp::unicode_emoji::white_check_mark);
}
else
{
dpp::channel channel = bot.channel_get_sync(event.msg.channel_id);
dpp::channel category = bot.channel_get_sync(channel.parent_id);
if (category.is_category() == false || category.name != GROCERY_LIST_CATEGORY)
return;
dpp::embed embed = dpp::embed()
.set_color(dpp::colors::sea_green)
.set_title(event.msg.content)
.set_author(event.msg.author.username, "", "")
.set_footer(dpp::embed_footer().set_text("PyMenuVersion:2.0"));
std::string str = event.msg.content;
unsigned int quantity;
float price;
get_article_data(str, quantity, price);
if (quantity != 0)
embed.add_field("Quantity", std::to_string(quantity));
if (price != 0)
embed.add_field("Price", std::to_string(price) + "");
embed.set_title(str);
dpp::message msg(event.msg.channel_id, embed);
event.send(msg);
bot.message_delete(event.msg.id, event.msg.channel_id);
}
});
}

6
src/pymenu.hpp Normal file
View File

@ -0,0 +1,6 @@
#pragma once
#include <dpp/cluster.h>
void on_react(dpp::cluster& bot);
void on_message(dpp::cluster& bot);

23
src/reaction.cpp Normal file
View File

@ -0,0 +1,23 @@
#include <dpp/cluster.h>
#include <dpp/unicode_emoji.h>
#include <dpp/dpp.h>
#include "config.h"
void on_react(dpp::cluster& bot)
{
bot.on_message_reaction_add([&bot](const dpp::message_reaction_add_t& event)
{
dpp::channel channel = bot.channel_get_sync(event.channel_id);
dpp::channel category = bot.channel_get_sync(channel.parent_id);
if (category.is_category() == false || category.name != GROCERY_LIST_CATEGORY)
return;
if (event.reacting_user.id == bot.me.id)
return;
dpp::emoji emoji = event.reacting_emoji;
if (emoji.name == dpp::unicode_emoji::white_check_mark)
bot.message_delete(event.message_id, event.channel_id);
});
}

View File

@ -4,6 +4,8 @@
#include <string> #include <string>
#include <iostream> #include <iostream>
#include "config.h"
static float get_price(std::string& str) static float get_price(std::string& str)
{ {
@ -24,7 +26,7 @@ static float get_price(std::string& str)
} }
return 0; return 0;
} }
// pain 2€ 1
static int get_quantity(std::string& str) static int get_quantity(std::string& str)
{ {
unsigned int quantity = 0; unsigned int quantity = 0;
@ -32,7 +34,6 @@ static int get_quantity(std::string& str)
for (i = 0; i != str.size(); i++) for (i = 0; i != str.size(); i++)
{ {
std::cout << str[i] << std::endl;
if (!std::isdigit(str[i])) if (!std::isdigit(str[i]))
{ {
if (quantity != 0) if (quantity != 0)
@ -52,4 +53,16 @@ int get_article_data(std::string& str, unsigned int& quantity, float& price)
quantity = get_quantity(str); quantity = get_quantity(str);
return 0; return 0;
}
std::string get_token(char** av, char** env)
{
if (av[1] != NULL)
return av[1];
for (size_t i = 0; env[i] != NULL; ++i)
{
if (std::strncmp("BOT_TOKEN", env[i], 9) == 0)
return env[i] + 10;
}
return BOT_TOKEN;
} }

View File

@ -2,4 +2,5 @@
#include <string> #include <string>
int get_article_data(std::string& str, unsigned int& quantity, float& price); int get_article_data(std::string& str, unsigned int& quantity, float& price);
std::string get_token(char** av, char** env);