From 733a83a5f1eb3a16360063a28e25bbaf3d118061 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Wed, 1 May 2024 01:12:07 +0500 Subject: feat: update user rights level --- src/commands/request_util.cpp | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) (limited to 'src/commands') diff --git a/src/commands/request_util.cpp b/src/commands/request_util.cpp index fb4ebf4..77d94bc 100644 --- a/src/commands/request_util.cpp +++ b/src/commands/request_util.cpp @@ -1,5 +1,6 @@ #include "request_util.hpp" +#include #include #include #include @@ -105,14 +106,30 @@ namespace bot::command { schemas::User user(query[0]); + schemas::PermissionLevel level = schemas::PermissionLevel::USER; + const auto &badges = irc_message.sender.badges; + + if (user.get_alias_id() == channel.get_alias_id()) { + level = schemas::PermissionLevel::BROADCASTER; + } else if (std::any_of(badges.begin(), badges.end(), [&](const auto &x) { + return x.first == "moderator"; + })) { + level = schemas::PermissionLevel::MODERATOR; + } else if (std::any_of(badges.begin(), badges.end(), + [&](const auto &x) { return x.first == "vip"; })) { + level = schemas::PermissionLevel::VIP; + } + query = work->exec("SELECT * FROM user_rights WHERE user_id = " + std::to_string(user.get_id()) + " AND channel_id = " + std::to_string(channel.get_id())); if (query.empty()) { - work->exec("INSERT INTO user_rights (user_id, channel_id) VALUES (" + - std::to_string(user.get_id()) + ", " + - std::to_string(channel.get_id()) + ")"); + work->exec( + "INSERT INTO user_rights (user_id, channel_id, level) VALUES (" + + std::to_string(user.get_id()) + ", " + + std::to_string(channel.get_id()) + ", " + std::to_string(level) + + ")"); work->commit(); @@ -126,6 +143,15 @@ namespace bot::command { schemas::UserRights user_rights(query[0]); + if (user_rights.get_level() != level) { + work->exec("UPDATE user_rights SET level = " + std::to_string(level) + + " WHERE id = " + std::to_string(query[0][0].as())); + + work->commit(); + + user_rights.set_level(level); + } + delete work; if (parts.empty()) { -- cgit v1.2.3