first commit
This commit is contained in:
commit
f680dd869b
6 changed files with 166 additions and 0 deletions
59
events/reaction-roles.cs
Normal file
59
events/reaction-roles.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue