t3k-dc-bot-cs/helpers/reactionrolestorage.cs
2025-05-03 18:06:09 +02:00

65 lines
2.2 KiB
C#

using Microsoft.Data.Sqlite;
using System;
namespace T3k3rg0.Helpers
{
public static class ReactionRoleStorage
{
private static readonly string DbPath = Environment.GetEnvironmentVariable("DB_ROLES_LOC");
public static ulong? GetRoleId(ulong messageId, string emojiRaw)
{
using var conn = new SqliteConnection($"Data Source={DbPath}");
conn.Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = @"
SELECT role_id FROM reaction_roles
WHERE message_id = @msg AND emoji = @emoji";
cmd.Parameters.AddWithValue("@msg", (long)messageId);
cmd.Parameters.AddWithValue("@emoji", emojiRaw);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return (ulong)(long)reader["role_id"];
}
return null;
}
public static bool TryAddReactionRole(ulong messageId, string emojiRaw, ulong roleId)
{
using var conn = new SqliteConnection($"Data Source={DbPath}");
conn.Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = @"
INSERT OR IGNORE INTO reaction_roles (message_id, emoji, role_id)
VALUES (@msg, @emoji, @role)";
cmd.Parameters.AddWithValue("@msg", (long)messageId);
cmd.Parameters.AddWithValue("@emoji", emojiRaw);
cmd.Parameters.AddWithValue("@role", (long)roleId);
int rowsAffected = cmd.ExecuteNonQuery();
return rowsAffected > 0;
}
public static bool TryRemoveReactionRole(ulong messageId, string emojiRaw)
{
using var conn = new SqliteConnection($"Data Source={DbPath}");
conn.Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = @"
DELETE FROM reaction_roles
WHERE message_id = @msg AND emoji = @emoji";
cmd.Parameters.AddWithValue("@msg", (long)messageId);
cmd.Parameters.AddWithValue("@emoji", emojiRaw);
int rowsAffected = cmd.ExecuteNonQuery();
return rowsAffected > 0;
}
}
}