Browse Source

Fix TimestampTag being sadge (#2468)

* Im so sad

* Im so sad v2

* oopsie uwu
tags/3.9.0
Armano den Boef GitHub 2 years ago
parent
commit
bc89d3c485
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 54 additions and 25 deletions
  1. +54
    -25
      src/Discord.Net.Core/Entities/Messages/TimestampTag.cs

+ 54
- 25
src/Discord.Net.Core/Entities/Messages/TimestampTag.cs View File

@@ -5,17 +5,28 @@ namespace Discord
/// <summary>
/// Represents a class used to make timestamps in messages. see <see href="https://discord.com/developers/docs/reference#message-formatting-timestamp-styles"/>.
/// </summary>
public class TimestampTag
public readonly struct TimestampTag
{
/// <summary>
/// Gets or sets the style of the timestamp tag.
/// Gets the time for this timestamp tag.
/// </summary>
public TimestampTagStyles Style { get; set; } = TimestampTagStyles.ShortDateTime;
public DateTimeOffset Time { get; }

/// <summary>
/// Gets or sets the time for this timestamp tag.
/// Gets the style of this tag. <see langword="null"/> if none was provided.
/// </summary>
public DateTimeOffset Time { get; set; }
public TimestampTagStyles? Style { get; }

/// <summary>
/// Creates a new <see cref="TimestampTag"/> from the provided time.
/// </summary>
/// <param name="time">The time for this timestamp tag.</param>
/// <param name="style">The style for this timestamp tag.</param>
public TimestampTag(DateTimeOffset time, TimestampTagStyles? style = null)
{
Time = time;
Style = style;
}

/// <summary>
/// Converts the current timestamp tag to the string representation supported by discord.
@@ -23,11 +34,23 @@ namespace Discord
/// If the <see cref="Time"/> is null then the default 0 will be used.
/// </para>
/// </summary>
/// <remarks>
/// Will use the provided <see cref="Style"/> if provided. If this value is null, it will default to <see cref="TimestampTagStyles.ShortDateTime"/>.
/// </remarks>
/// <returns>A string that is compatible in a discord message, ex: <code>&lt;t:1625944201:f&gt;</code></returns>
public override string ToString()
{
return $"<t:{Time.ToUnixTimeSeconds()}:{(char)Style}>";
}
=> ToString(Style ?? TimestampTagStyles.ShortDateTime);

/// <summary>
/// Converts the current timestamp tag to the string representation supported by discord.
/// <para>
/// If the <see cref="Time"/> is null then the default 0 will be used.
/// </para>
/// </summary>
/// <param name="style">The formatting style for this tag.</param>
/// <returns>A string that is compatible in a discord message, ex: <code>&lt;t:1625944201:f&gt;</code></returns>
public string ToString(TimestampTagStyles style)
=> $"<t:{Time.ToUnixTimeSeconds()}:{(char)style}>";

/// <summary>
/// Creates a new timestamp tag with the specified <see cref="DateTime"/> object.
@@ -35,14 +58,8 @@ namespace Discord
/// <param name="time">The time of this timestamp tag.</param>
/// <param name="style">The style for this timestamp tag.</param>
/// <returns>The newly create timestamp tag.</returns>
public static TimestampTag FromDateTime(DateTime time, TimestampTagStyles style = TimestampTagStyles.ShortDateTime)
{
return new TimestampTag
{
Style = style,
Time = time
};
}
public static TimestampTag FromDateTime(DateTime time, TimestampTagStyles? style = null)
=> new(time, style);

/// <summary>
/// Creates a new timestamp tag with the specified <see cref="DateTimeOffset"/> object.
@@ -50,13 +67,25 @@ namespace Discord
/// <param name="time">The time of this timestamp tag.</param>
/// <param name="style">The style for this timestamp tag.</param>
/// <returns>The newly create timestamp tag.</returns>
public static TimestampTag FromDateTimeOffset(DateTimeOffset time, TimestampTagStyles style = TimestampTagStyles.ShortDateTime)
{
return new TimestampTag
{
Style = style,
Time = time
};
}
public static TimestampTag FromDateTimeOffset(DateTimeOffset time, TimestampTagStyles? style = null)
=> new(time, style);

/// <summary>
/// Immediately formats the provided time and style into a timestamp string.
/// </summary>
/// <param name="time">The time of this timestamp tag.</param>
/// <param name="style">The style for this timestamp tag.</param>
/// <returns>The newly create timestamp string.</returns>
public static string FormatFromDateTime(DateTime time, TimestampTagStyles style)
=> FormatFromDateTimeOffset(time, style);

/// <summary>
/// Immediately formats the provided time and style into a timestamp string.
/// </summary>
/// <param name="time">The time of this timestamp tag.</param>
/// <param name="style">The style for this timestamp tag.</param>
/// <returns>The newly create timestamp string.</returns>
public static string FormatFromDateTimeOffset(DateTimeOffset time, TimestampTagStyles style)
=> $"<t:{time.ToUnixTimeSeconds()}:{(char)style}>";
}
}
}

Loading…
Cancel
Save