Skip to content

Instantly share code, notes, and snippets.

@CRodriguez25
Last active December 15, 2020 01:19
Show Gist options
  • Select an option

  • Save CRodriguez25/8aad73e0848d249cc68f751bfbc69a5a to your computer and use it in GitHub Desktop.

Select an option

Save CRodriguez25/8aad73e0848d249cc68f751bfbc69a5a to your computer and use it in GitHub Desktop.
A simple extension method for rendering progress bars with Discord.Net EmbedBuilders
public static class EmbedBuilderExtensions
{
public static EmbedBuilder AddProgressBar(
this EmbedBuilder embedBuilder,
string title,
float value,
float min,
float max,
bool inline = false,
string filledEmoji = ":green_square:",
string emptyEmoji = ":black_large_square:",
int progressBarSize = 13)
{
float Normalize()
{
return (value - min) / (max - min);
}
string RenderProgressBar()
{
var normalized = Normalize();
var numberOfGreenSquares = (int)Math.Floor(progressBarSize * normalized);
var numberOfEmptySquares = progressBarSize - numberOfGreenSquares;
var result = "";
foreach(var index in Enumerable.Range(0, numberOfGreenSquares))
result += filledEmoji;
foreach(var index in Enumerable.Range(0, numberOfEmptySquares))
result += emptyEmoji;
return result;
}
return embedBuilder.AddField(title, RenderProgressBar(), inline);
}
}
@CRodriguez25

Copy link
Copy Markdown
Author

image

An example of the rendered progress bars

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment