t3k-dc-bot-cs/idextractor.cs
2025-04-28 21:36:25 +02:00

62 lines
1.9 KiB
C#

using DSharpPlus.CommandsNext;
using DSharpPlus.Entities;
using System.Threading.Tasks;
namespace T3k3rg0
{
class IdExtractor
{
public static async Task<DiscordChannel> 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;
}
}
}