using DSharpPlus.CommandsNext; using DSharpPlus.CommandsNext.Attributes; using DSharpPlus.Entities; using System.Threading.Tasks; using System.Text; using T3k3rg0.Helpers; namespace T3k3rg0.Commands { public class ReactionRoleManager : BaseCommandModule { [Command("addreactionrole")] [Description("Hozzáad egy új reaction role-t ! reactionrole <üzenet> <@szerep>")] [HasAdminRole] public async Task AddReactionRole(CommandContext ctx, string messageLink, DiscordEmoji emoji, DiscordRole role) { var channel = await IdExtractor.ExtractChannelId(messageLink, ctx.Client); if (channel is null) { return; } var message = await IdExtractor.ExtractMessageId(messageLink, channel); if (message is null) { return; } ReactionRoleService.AddReactionRole(message.Id, emoji.ToString(), role.Id); await message.CreateReactionAsync(emoji); } [Command("removereactionrole")] [Description("Eltávolít egy meglévő reaction role-t ! removereactionrole ")] [HasAdminRole] public async Task RemoveReactionRole(CommandContext ctx, int id) { var result = await ReactionRoleService.RemoveReactionRoleByIdAsync(id); if (!result.Success) { await ctx.RespondAsync(result.Message ?? "❌ Ismeretlen hiba történt."); return; } await ctx.RespondAsync(result.Message ?? $"✅ A(z) {id}. reakció szerepkör törölve."); } [Command("listreactionrole")] [Description("Felsorolja a reaction role párosításokat.")] [HasAdminRole] public async Task ListReactionRoles(CommandContext ctx) { // Lekérjük az összes reakció alapú szerepkört az adatbázisból var allRoles = ReactionRoleService.GetAllReactionRoles(); if (allRoles.Count == 0) { await ctx.RespondAsync("❌ Nincs reakció alapú szerepkör a szerveren."); return; } var sb = new StringBuilder(); sb.AppendLine("📜 Reakció alapú szerepkörök:"); // Az összes szerepkör kiírása sorszámozva int index = 1; foreach (var role in allRoles) { var roleObj = ctx.Guild.GetRole(role.RoleId); // Az adott szerepkör lekérése sb.AppendLine($"{index}. Üzenet ID: {role.MessageId}, Emoji: {role.Emoji}, Szerepkör: {roleObj?.Name ?? "Nincs név"}"); index++; // Növeljük a sorszámot } await ctx.RespondAsync(sb.ToString()); } } }