1
0
Fork 0
mirror of https://gitlab.com/niansa/SomeBot.git synced 2025-03-06 20:48:26 +01:00

Added purge command and fixed typo

This commit is contained in:
niansa 2022-11-10 19:09:45 +01:00
parent ed3f279a45
commit 7fb405b06a
6 changed files with 81 additions and 10 deletions

View file

@ -114,7 +114,7 @@ public:
bot->add_chatcommand(Bot::ChatCommand({"captcha"}, "Lege einen Captcha-Kanal fest", dpp::slashcommand().add_option(dpp::command_option(dpp::command_option_type::co_channel, "channel", "Kanal in dem das Captcha gestellt wird", true)).add_option(dpp::command_option(dpp::command_option_type::co_role, "role", "Rolle die nach dem Lösen gegeben wird", true))), [&](const dpp::slashcommand_t& event) {
// Check that user has the correct permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_channels | dpp::permissions::p_manage_roles)) {
event.reply(dpp::message("Du braucht die Kanal- und Rollenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst die Kanal- und Rollenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Update database
@ -129,7 +129,7 @@ public:
bot->add_chatcommand(Bot::ChatCommand({"no_captcha", "kein_captcha", "captcha_stop"}, "Deaktiviere das Captcha"), [&](const dpp::slashcommand_t& event) {
// Check that user has the correct permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_channels | dpp::permissions::p_manage_roles)) {
event.reply(dpp::message("Du braucht die Kanal- und Rollenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst die Kanal- und Rollenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Update database

View file

@ -31,7 +31,7 @@ public:
.add_option(dpp::command_option(dpp::command_option_type::co_string, "content", "Nachricht über Embed", false))), [&](const dpp::slashcommand_t& event) {
// Check that user has the correct permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_messages)) {
event.reply(dpp::message("Du braucht die Nachrichtenwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst die Nachrichtenwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Get color

View file

@ -348,7 +348,7 @@ public:
auto channel_id = std::get<dpp::snowflake>(event.get_parameter("channel"));
// Check that user has the correct permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_channels)) {
event.reply(dpp::message("Du braucht die Kanalverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst die Kanalverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Update globalchat ID
@ -366,7 +366,7 @@ public:
bot->add_chatcommand(Bot::ChatCommand({"reset_gc", "globalchat_stop"}, "Stoppe den Globalchat"), [&](const dpp::slashcommand_t& event) {
// Check that user has the correct permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_channels)) {
event.reply("Du braucht die Kanalverwaltungsberechtigung, um dieses Kommando zu verwenden.");
event.reply("Du brauchst die Kanalverwaltungsberechtigung, um dieses Kommando zu verwenden.");
return;
}
// Update globalchat ID

View file

@ -169,7 +169,7 @@ public:
bot->add_chatcommand(Bot::ChatCommand({"levels_settings", "levels_einstellungen"}, "Konfiguiere Levels", dpp::slashcommand().add_option(dpp::command_option(dpp::command_option_type::co_boolean, "enabled", "Ob Levels aktiviert sein sollen", false)).add_option(dpp::command_option(dpp::command_option_type::co_boolean, "embed", "Ob Levels Embeds verwenden sollen", false)).add_option(dpp::command_option(dpp::command_option_type::co_string, "color", "Embed-Farbe der Levels", false)).add_option(dpp::command_option(dpp::command_option_type::co_number, "speed", "Level-Speed: 0,5=halb, 1,0=normal, 2,0=doppelt, ...", false))), [&](const dpp::slashcommand_t& event) {
// Check that user has enough permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_administrator)) {
event.reply(dpp::message("Du braucht Administrationsrechte, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst Administrationsrechte, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Go on
@ -224,7 +224,7 @@ public:
bot->add_chatcommand(Bot::ChatCommand({"levels_add_role", "levels_rolle"}, "Füge eine Level-Rolle hinzu", dpp::slashcommand().add_option(dpp::command_option(dpp::command_option_type::co_integer, "threshold", "Mindestlevel", true)).add_option(dpp::command_option(dpp::command_option_type::co_role, "role", "Rolle", true))), [&](const dpp::slashcommand_t& event) {
// Check that user has enough permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_roles)) {
event.reply(dpp::message("Du braucht Rollenverwaltungsrechte, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst Rollenverwaltungsrechte, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Get values
@ -254,7 +254,7 @@ public:
bot->add_chatcommand(Bot::ChatCommand({"levels_remove_role", "levels_rolle_entfernen"}, "Entferne eine Level-Rolle", dpp::slashcommand().add_option(dpp::command_option(dpp::command_option_type::co_role, "role", "Rolle", true))), [&](const dpp::slashcommand_t& event) {
// Check that user has enough permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_roles)) {
event.reply(dpp::message("Du braucht Rollenverwaltungsrechte, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst Rollenverwaltungsrechte, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Get values

71
modules/moderation.cpp Normal file
View file

@ -0,0 +1,71 @@
#include "../bot.hpp"
#include <unordered_map>
class Moderation {
Bot *bot;
public:
Moderation(Bot *_bot) : bot(_bot) {
bot->cluster.intents |= dpp::intents::i_guild_presences;
bot->add_chatcommand(Bot::ChatCommand({"purge"}, "Lösche die letzen Nachrichten", dpp::slashcommand().add_option(dpp::command_option(dpp::command_option_type::co_integer, "amount", "Menge", true))), [&](const dpp::slashcommand_t& event) {
auto amount = std::get<long>(event.get_parameter("amount"));
// Check that user has the correct permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_messages)) {
event.reply(dpp::message("Du brauchst die Nachrichtenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Start message deletion in new thread
std::thread([this, amount, channel_id = event.command.channel_id, member = event.command.member] () mutable {
// Collect messages
std::unordered_map<dpp::snowflake, dpp::message> messages;
while (amount > 0) {
try {
// Get messages
dpp::snowflake last_msg;
if (!messages.empty()) {
last_msg = (*messages.begin()).second.id;
} else {
last_msg = 0;
}
auto requested_amount = std::min(amount, 100L);
auto new_messages = bot->cluster.messages_get_sync(channel_id, 0, last_msg, 0, requested_amount);
// Update counters
amount -= new_messages.size();
// Add them to sorted vector
for (auto& [message_id, message] : new_messages) {
messages[message_id] = std::move(message);
}
// Break out if requested amount wasn't reached
if (new_messages.size() < requested_amount) {
break;
}
} catch (...) {
break;
}
}
// Start deleting messages
unsigned errors = 0;
for (const auto& [message_id, message] : messages) {
try {
bot->cluster.message_delete_sync(message_id, message.channel_id);
} catch (...) {
errors++;
}
}
// Report sucess or errors that might have occured
std::string message = "Auf Anfrage von "+member.get_mention()+" wurden **"+std::to_string(messages.size()-errors)+"** Nachrichten gelöscht.";
if (errors) {
message += "\n**Warnung:** "+std::to_string(errors)+" Nachrichten konnten nicht gelöscht werden, da sie möglicherweise zu alt sind.";
}
bot->cluster.message_create(dpp::message(message).set_channel_id(channel_id));
}).detach();
// Report success
event.reply(dpp::message("Okay! Vorgang wird gestartet...").set_flags(dpp::message_flags::m_ephemeral));
});
}
};
BOT_ADD_MODULE(Moderation);

View file

@ -186,7 +186,7 @@ public:
bot->add_chatcommand(Bot::ChatCommand({"ticket_settings", "ticket_einstellungen"}, "Lege die Ticket-Einstellungen fest", dpp::slashcommand().add_option(dpp::command_option(dpp::command_option_type::co_channel, "category", "Kategorie in der Tickets erstellt werden", false)).add_option(dpp::command_option(dpp::command_option_type::co_role, "role", "Rolle, die Tickets verwalten kann", false)).add_option(dpp::command_option(dpp::command_option_type::co_channel, "logs_channel", "Kanal in dem Ticket-Logs gespeichert werden", false)).add_option(dpp::command_option(dpp::command_option_type::co_string, "channel_name_prefix", "Text, mit dem der Ticketkanalname anfangen soll", false)).add_option(dpp::command_option(dpp::command_option_type::co_boolean, "any_close", "Ob jeder Tickets schließen darf", false)).add_option(dpp::command_option(dpp::command_option_type::co_boolean, "ping", "Ob Rolle über neue Tickets benachrichtigt werden", false))), [&](const dpp::slashcommand_t& event) {
// Check that user has the correct permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_channels | dpp::permissions::p_manage_roles)) {
event.reply(dpp::message("Du braucht die Kanal- und Rollenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst die Kanal- und Rollenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Get parameters
@ -270,7 +270,7 @@ public:
bot->add_chatcommand(Bot::ChatCommand({"tickets", "ticket_embed"}, "Erstelle ein Ticket-Embed", dpp::slashcommand().add_option(dpp::command_option(dpp::command_option_type::co_channel, "channel", "Kanal, in dem Tickets erstellt werden können sollen", true)).add_option(dpp::command_option(dpp::command_option_type::co_string, "title", "Überschrift", false)).add_option(dpp::command_option(dpp::command_option_type::co_string, "text", "Beschreibung", false)).add_option(dpp::command_option(dpp::command_option_type::co_string, "footer_text", "Fußzeile", false)).add_option(dpp::command_option(dpp::command_option_type::co_string, "color", "Farbe", false))), [&](const dpp::slashcommand_t& event) {
// Check that user has the correct permissions
if (!event.command.get_guild().base_permissions(event.command.member).has(dpp::permissions::p_manage_channels | dpp::permissions::p_manage_roles)) {
event.reply(dpp::message("Du braucht die Kanal- und Rollenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
event.reply(dpp::message("Du brauchst die Kanal- und Rollenverwaltungsberechtigung, um dieses Kommando zu verwenden.").set_flags(dpp::message_flags::m_ephemeral));
return;
}
// Get parameters