diff --git a/src/Commands/BanCommandGroup.cs b/src/Commands/BanCommandGroup.cs
index 575e709..bfc60c5 100644
--- a/src/Commands/BanCommandGroup.cs
+++ b/src/Commands/BanCommandGroup.cs
@@ -135,11 +135,10 @@ public class BanCommandGroup : CommandGroup
             return await _feedback.SendContextualEmbedResultAsync(errorEmbed, ct);
         }
 
-        var builder = new StringBuilder().Append("- ")
-            .AppendLine(string.Format(Messages.DescriptionActionReason, reason));
+        var builder = new StringBuilder().AppendLineWithBullet(string.Format(Messages.DescriptionActionReason, reason));
         if (duration is not null)
         {
-            builder.Append("- ").Append(
+            builder.AppendWithBullet(
                 string.Format(
                     Messages.DescriptionActionExpiresAt,
                     Markdown.Timestamp(DateTimeOffset.UtcNow.Add(duration.Value))));
@@ -274,8 +273,7 @@ public class BanCommandGroup : CommandGroup
             .WithColour(ColorsList.Green).Build();
 
         var title = string.Format(Messages.UserUnbanned, target.GetTag());
-        var description = new StringBuilder().Append("- ")
-            .Append(string.Format(Messages.DescriptionActionReason, reason));
+        var description = new StringBuilder().AppendWithBullet(string.Format(Messages.DescriptionActionReason, reason));
         var logResult = _utility.LogActionAsync(
             data.Settings, channelId, executor, title, description.ToString(), target, ColorsList.Green, ct: ct);
         if (!logResult.IsSuccess)
diff --git a/src/Commands/MuteCommandGroup.cs b/src/Commands/MuteCommandGroup.cs
index e431a53..4915043 100644
--- a/src/Commands/MuteCommandGroup.cs
+++ b/src/Commands/MuteCommandGroup.cs
@@ -136,8 +136,8 @@ public class MuteCommandGroup : CommandGroup
         }
 
         var title = string.Format(Messages.UserMuted, target.GetTag());
-        var description = new StringBuilder().Append("- ").AppendLine(string.Format(Messages.DescriptionActionReason, reason))
-            .Append("- ").Append(string.Format(
+        var description = new StringBuilder().AppendLineWithBullet(string.Format(Messages.DescriptionActionReason, reason))
+            .AppendWithBullet(string.Format(
                 Messages.DescriptionActionExpiresAt, Markdown.Timestamp(until))).ToString();
 
         var logResult = _utility.LogActionAsync(
diff --git a/src/Commands/RemindCommandGroup.cs b/src/Commands/RemindCommandGroup.cs
index 6e4d31b..dbc31e5 100644
--- a/src/Commands/RemindCommandGroup.cs
+++ b/src/Commands/RemindCommandGroup.cs
@@ -90,10 +90,9 @@ public class RemindCommandGroup : CommandGroup
         for (var i = 0; i < data.Reminders.Count; i++)
         {
             var reminder = data.Reminders[i];
-            builder.Append("- ").AppendLine(string.Format(Messages.ReminderPosition, Markdown.InlineCode((i + 1).ToString())))
-                .Append(" - ").AppendLine(string.Format(Messages.ReminderText, Markdown.InlineCode(reminder.Text)))
-                .Append(" - ")
-                .AppendLine(string.Format(Messages.ReminderTime, Markdown.Timestamp(reminder.At)));
+            builder.AppendLineWithBullet(string.Format(Messages.ReminderPosition, Markdown.InlineCode((i + 1).ToString())))
+                .AppendLineWithSubBullet(string.Format(Messages.ReminderText, Markdown.InlineCode(reminder.Text)))
+                .AppendLineWithSubBullet(string.Format(Messages.ReminderTime, Markdown.Timestamp(reminder.At)));
         }
 
         var embed = new EmbedBuilder().WithSmallTitle(
@@ -155,9 +154,9 @@ public class RemindCommandGroup : CommandGroup
                 Text = text
             });
 
-        var builder = new StringBuilder().Append("- ").AppendLine(string.Format(
+        var builder = new StringBuilder().AppendLineWithBullet(string.Format(
                 Messages.ReminderText, Markdown.InlineCode(text)))
-            .Append("- ").Append(string.Format(Messages.ReminderTime, Markdown.Timestamp(remindAt)));
+            .AppendWithBullet(string.Format(Messages.ReminderTime, Markdown.Timestamp(remindAt)));
 
         var embed = new EmbedBuilder().WithSmallTitle(
                 string.Format(Messages.ReminderCreated, executor.GetTag()), executor)
@@ -215,8 +214,8 @@ public class RemindCommandGroup : CommandGroup
         var reminder = data.Reminders[index];
 
         var description = new StringBuilder()
-            .Append("- ").AppendLine(string.Format(Messages.ReminderText, Markdown.InlineCode(reminder.Text)))
-            .Append("- ").AppendLine(string.Format(Messages.ReminderTime, Markdown.Timestamp(reminder.At)));
+            .AppendLineWithBullet(string.Format(Messages.ReminderText, Markdown.InlineCode(reminder.Text)))
+            .AppendLineWithBullet(string.Format(Messages.ReminderTime, Markdown.Timestamp(reminder.At)));
 
         data.Reminders.RemoveAt(index);
 
diff --git a/src/Commands/ToolsCommandGroup.cs b/src/Commands/ToolsCommandGroup.cs
index c0b99f5..59f2b3c 100644
--- a/src/Commands/ToolsCommandGroup.cs
+++ b/src/Commands/ToolsCommandGroup.cs
@@ -102,11 +102,11 @@ public class ToolsCommandGroup : CommandGroup
 
         if (target.GlobalName is not null)
         {
-            builder.Append("- ").AppendLine(Messages.UserInfoDisplayName)
+            builder.AppendLineWithBullet(Messages.UserInfoDisplayName)
                 .AppendLine(Markdown.InlineCode(target.GlobalName));
         }
 
-        builder.Append("- ").AppendLine(Messages.UserInfoDiscordUserSince)
+        builder.AppendLineWithBullet(Messages.UserInfoDiscordUserSince)
             .AppendLine(Markdown.Timestamp(target.ID.Timestamp));
 
         var memberData = data.GetOrCreateMemberData(target.ID);
@@ -170,23 +170,23 @@ public class ToolsCommandGroup : CommandGroup
     {
         if (guildMember.Nickname.IsDefined(out var nickname))
         {
-            builder.Append("- ").AppendLine(Messages.UserInfoGuildNickname)
+            builder.AppendLineWithBullet(Messages.UserInfoGuildNickname)
                 .AppendLine(Markdown.InlineCode(nickname));
         }
 
-        builder.Append("- ").AppendLine(Messages.UserInfoGuildMemberSince)
+        builder.AppendLineWithBullet(Messages.UserInfoGuildMemberSince)
             .AppendLine(Markdown.Timestamp(guildMember.JoinedAt));
 
         if (guildMember.PremiumSince.IsDefined(out var premiumSince))
         {
-            builder.Append("- ").AppendLine(Messages.UserInfoGuildMemberPremiumSince)
+            builder.AppendLineWithBullet(Messages.UserInfoGuildMemberPremiumSince)
                 .AppendLine(Markdown.Timestamp(premiumSince.Value));
             color = ColorsList.Magenta;
         }
 
         if (guildMember.Roles.Count > 0)
         {
-            builder.Append("- ").AppendLine(Messages.UserInfoGuildRoles);
+            builder.AppendLineWithBullet(Messages.UserInfoGuildRoles);
             for (var i = 0; i < guildMember.Roles.Count - 1; i++)
             {
                 builder.Append($"<@&{guildMember.Roles[i]}>, ");
@@ -202,30 +202,30 @@ public class ToolsCommandGroup : CommandGroup
     {
         if (memberData.BannedUntil < DateTimeOffset.MaxValue)
         {
-            builder.Append("- ").AppendLine(Messages.UserInfoBanned)
-                .Append(" - ").AppendLine(string.Format(
+            builder.AppendLineWithBullet(Messages.UserInfoBanned)
+                .AppendLineWithSubBullet(string.Format(
                     Messages.DescriptionActionExpiresAt, Markdown.Timestamp(memberData.BannedUntil.Value)));
             return;
         }
 
-        builder.Append("- ").AppendLine(Messages.UserInfoBannedPermanently);
+        builder.AppendLineWithBullet(Messages.UserInfoBannedPermanently);
     }
 
     private static void AppendMuteInformation(
         MemberData memberData, DateTimeOffset? communicationDisabledUntil, StringBuilder builder)
     {
-        builder.Append("- ").AppendLine(Messages.UserInfoMuted);
+        builder.AppendLineWithBullet(Messages.UserInfoMuted);
         if (memberData.MutedUntil is not null && DateTimeOffset.UtcNow <= memberData.MutedUntil)
         {
-            builder.Append(" - ").AppendLine(Messages.UserInfoMutedByMuteRole)
-                .Append(" - ").AppendLine(string.Format(
+            builder.AppendLineWithSubBullet(Messages.UserInfoMutedByMuteRole)
+                .AppendLineWithSubBullet(string.Format(
                     Messages.DescriptionActionExpiresAt, Markdown.Timestamp(memberData.MutedUntil.Value)));
         }
 
         if (communicationDisabledUntil is not null)
         {
-            builder.Append(" - ").AppendLine(Messages.UserInfoMutedByTimeout)
-                .Append(" - ").AppendLine(string.Format(
+            builder.AppendLineWithSubBullet(Messages.UserInfoMutedByTimeout)
+                .AppendLineWithSubBullet(string.Format(
                     Messages.DescriptionActionExpiresAt, Markdown.Timestamp(communicationDisabledUntil.Value)));
         }
     }
@@ -282,13 +282,13 @@ public class ToolsCommandGroup : CommandGroup
 
         if (guild.Description is not null)
         {
-            description.Append("- ").AppendLine(Messages.GuildInfoDescription)
+            description.AppendLineWithBullet(Messages.GuildInfoDescription)
                 .AppendLine(Markdown.InlineCode(guild.Description));
         }
 
-        description.Append("- ").AppendLine(Messages.GuildInfoCreatedAt)
+        description.AppendLineWithBullet(Messages.GuildInfoCreatedAt)
             .AppendLine(Markdown.Timestamp(guild.ID.Timestamp))
-            .Append("- ").AppendLine(Messages.GuildInfoOwner)
+            .AppendLineWithBullet(Messages.GuildInfoOwner)
             .AppendLine(Mention.User(guild.OwnerID));
 
         var embedColor = ColorsList.Cyan;
@@ -296,9 +296,9 @@ public class ToolsCommandGroup : CommandGroup
         if (guild.PremiumTier > PremiumTier.None)
         {
             description.Append("### ").AppendLine(Messages.GuildInfoServerBoost)
-                .Append("- ").Append(Messages.GuildInfoBoostTier)
+                .AppendWithBullet(Messages.GuildInfoBoostTier)
                 .Append(": ").AppendLine(Markdown.InlineCode(guild.PremiumTier.ToString()))
-                .Append("- ").Append(Messages.GuildInfoBoostCount)
+                .AppendWithBullet(Messages.GuildInfoBoostCount)
                 .Append(": ").AppendLine(Markdown.InlineCode(guild.PremiumSubscriptionCount.ToString()));
             embedColor = ColorsList.Magenta;
         }
@@ -362,14 +362,14 @@ public class ToolsCommandGroup : CommandGroup
 
         var description = new StringBuilder().Append("# ").Append(i);
 
-        description.AppendLine().Append("- ").Append(string.Format(
+        description.AppendLine().AppendWithBullet(string.Format(
             Messages.RandomMin, Markdown.InlineCode(min.ToString())));
         if (secondNullable is null && first >= secondDefault)
         {
             description.Append(' ').Append(Messages.Default);
         }
 
-        description.AppendLine().Append("- ").Append(string.Format(
+        description.AppendLine().AppendWithBullet(string.Format(
             Messages.RandomMax, Markdown.InlineCode(max.ToString())));
         if (secondNullable is null && first < secondDefault)
         {
@@ -449,7 +449,7 @@ public class ToolsCommandGroup : CommandGroup
 
         foreach (var markdownTimestamp in AllStyles.Select(style => Markdown.Timestamp(timestamp, style)))
         {
-            description.Append("- ").Append(Markdown.InlineCode(markdownTimestamp))
+            description.AppendWithBullet(Markdown.InlineCode(markdownTimestamp))
                 .Append(" → ").AppendLine(markdownTimestamp);
         }
 
diff --git a/src/Extensions/StringBuilderExtensions.cs b/src/Extensions/StringBuilderExtensions.cs
new file mode 100644
index 0000000..00b7db8
--- /dev/null
+++ b/src/Extensions/StringBuilderExtensions.cs
@@ -0,0 +1,21 @@
+using System.Text;
+
+namespace Octobot.Extensions;
+
+public static class StringBuilderExtensions
+{
+    public static StringBuilder AppendWithBullet(this StringBuilder builder, string? text)
+    {
+        return builder.Append("- ").Append(text);
+    }
+
+    public static StringBuilder AppendLineWithBullet(this StringBuilder builder, string? text)
+    {
+        return builder.Append("- ").AppendLine(text);
+    }
+
+    public static StringBuilder AppendLineWithSubBullet(this StringBuilder builder, string? text)
+    {
+        return builder.Append(" - ").AppendLine(text);
+    }
+}