using DSharpPlus.CommandsNext; using DSharpPlus.Entities; using System.Threading.Tasks; namespace T3k3rg0 { class IdExtractor { public static async Task GetChannelAsync(CommandContext ctx, string channelParam) { ulong channelId; if (channelParam.StartsWith("https://discord.com/channels/")) { // Linkből szedjük ki var parts = channelParam.Split('/'); if (parts.Length >= 4 && ulong.TryParse(parts[4], out ulong parsedChannelId)) { channelId = parsedChannelId; } else { await ctx.RespondAsync("Érvénytelen csatorna link."); return null; } } else if (channelParam.StartsWith("<#") && channelParam.EndsWith(">")) { // Mentionből szedjük ki var idPart = channelParam.Trim('<', '#', '>'); if (ulong.TryParse(idPart, out ulong parsedMentionId)) { channelId = parsedMentionId; } else { await ctx.RespondAsync("Érvénytelen csatorna mention."); return null; } } else if (ulong.TryParse(channelParam, out ulong parsedId)) { // Simán ID channelId = parsedId; } else { await ctx.RespondAsync("Érvénytelen csatorna azonosító, mention vagy link."); return null; } var channel = await ctx.Client.GetChannelAsync(channelId); if (channel == null) { await ctx.RespondAsync("Nem találom a csatornát."); return null; } return channel; } } }