first commit

This commit is contained in:
balos 2025-04-26 20:05:22 +02:00
commit f680dd869b
6 changed files with 166 additions and 0 deletions

59
events/reaction-roles.cs Normal file
View file

@ -0,0 +1,59 @@
using DSharpPlus;
using DSharpPlus.EventArgs;
using Microsoft.Data.Sqlite;
using System.Threading.Tasks;
using System;
namespace T3k3rg0
{
public static class ReactionRoleHandler
{
public static void Register(DiscordClient discord)
{
discord.MessageReactionAdded += OnReactionAdded;
discord.MessageReactionRemoved += OnReactionRemoved;
}
private static async Task OnReactionAdded(DiscordClient client, MessageReactionAddEventArgs e)
{
if (e.User.IsBot) return;
var dbPath = Environment.GetEnvironmentVariable("DB_ROLES_LOC");
using var connection = new SqliteConnection($"Data Source={dbPath}");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = @"SELECT role_id FROM reaction_roles WHERE message_id = $message_id AND emoji = $emoji";
command.Parameters.AddWithValue("$message_id", e.Message.Id);
command.Parameters.AddWithValue("$emoji", e.Emoji.ToString());
var roleId = (long?)command.ExecuteScalar();
if (roleId == null) return;
var member = await e.Guild.GetMemberAsync(e.User.Id);
var role = e.Guild.GetRole((ulong)roleId);
await member.GrantRoleAsync(role);
}
private static async Task OnReactionRemoved(DiscordClient client, MessageReactionRemoveEventArgs e)
{
if (e.User.IsBot) return;
var dbPath = Environment.GetEnvironmentVariable("DB_ROLES_LOC");
using var connection = new SqliteConnection($"Data Source={dbPath}");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = @"SELECT role_id FROM reaction_roles WHERE message_id = $message_id AND emoji = $emoji";
command.Parameters.AddWithValue("$message_id", e.Message.Id);
command.Parameters.AddWithValue("$emoji", e.Emoji.ToString());
var roleId = (long?)command.ExecuteScalar();
if (roleId == null) return;
var member = await e.Guild.GetMemberAsync(e.User.Id);
var role = e.Guild.GetRole((ulong)roleId);
await member.RevokeRoleAsync(role);
}
}
}