Files
archived-discord-bot/CompatBot/Utils/ResultFormatters/PrInfoFormatter.cs
2023-04-21 02:05:59 +05:00

50 lines
1.7 KiB
C#

using DSharpPlus.Entities;
using Octokit;
namespace CompatBot.Utils.ResultFormatters;
internal static class PrInfoFormatter
{
public static DiscordEmbedBuilder AsEmbed(this PullRequest prInfo)
{
var state = prInfo.GetState();
var stateLabel = state.state == null ? null : $"[{state.state}] ";
var title = $"{stateLabel}PR #{prInfo.Number} by {prInfo.User?.Login ?? "???"}";
return new() {Title = title, Url = prInfo.HtmlUrl, Description = prInfo.Title, Color = state.color};
}
public static DiscordEmbedBuilder AsEmbed(this Issue issueInfo)
{
var state = issueInfo.GetState();
var stateLabel = state.state == null ? null : $"[{state.state}] ";
var title = $"{stateLabel}Issue #{issueInfo.Number} from {issueInfo.User?.Login ?? "???"}";
return new() {Title = title, Url = issueInfo.HtmlUrl, Description = issueInfo.Title, Color = state.color};
}
public static (string? state, DiscordColor color) GetState(this PullRequest prInfo)
{
if (prInfo.State == ItemState.Open)
return ("Open", Config.Colors.PrOpen);
if (prInfo.State == ItemState.Closed)
{
if (prInfo.MergedAt.HasValue)
return ("Merged", Config.Colors.PrMerged);
return ("Closed", Config.Colors.PrClosed);
}
return (null, Config.Colors.DownloadLinks);
}
public static (string? state, DiscordColor color) GetState(this Issue issueInfo)
{
if (issueInfo.State == ItemState.Open)
return ("Open", Config.Colors.PrOpen);
if (issueInfo.State == ItemState.Closed)
return ("Closed", Config.Colors.PrClosed);
return (null, Config.Colors.DownloadLinks);
}
}