Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Modules/UtilityModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ await Context.Channel.GetMessageAsync(referencedMessageId) is not IUserMessage m
// Make an embed of the message details
EmbedBuilder embed = new()
{
Title = $"Pin in `#{message.Channel.Name}` by {Context.Message.Author.Username}",
Title = FormatPinTitle(message.Channel.Name, message.Author.Username),
Url = message.GetJumpUrl(),
Author = new EmbedAuthorBuilder()
{
Expand Down Expand Up @@ -96,6 +96,9 @@ internal static bool TryGetReferencedMessageId(ulong? referencedMessageId, out u
return referencedMessageId.HasValue;
}

internal static string FormatPinTitle(string channelName, string authorUsername) =>
$"Pin in `#{channelName}` by {authorUsername}";

[Name("Reminder")]
[Summary("Sets a reminder using a duration specification (e.g. '5 days and 3 hours'). Minimum 1 minute, maximum 100 years. Usage: reminder <duration> [@user] [text...]. Example: reminder 5 days and 3 hours @User Take a break. Reminders are executed once a minute.")]
[Command("reminder")]
Expand Down
8 changes: 8 additions & 0 deletions Morpheus.Tests/UtilityModuleTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ public void TryGetReferencedMessageId_ReturnsReferenceIdWhenPresent()
Assert.Equal(42UL, messageId);
}

[Fact]
public void FormatPinTitle_UsesReferencedMessageAuthor()
{
string title = UtilityModule.FormatPinTitle("general", "OriginalAuthor");

Assert.Equal("Pin in `#general` by OriginalAuthor", title);
}

[Theory]
[InlineData("5 days and 3 hours @User Take a break", "@User Take a break")]
[InlineData("5 days, 3 hours: Take a break", "Take a break")]
Expand Down