Skip to content

Commit 3ea04e9

Browse files
committed
Fix everyone role mention (#31)
* Fix everyone role mention * Add tests
1 parent 39ecaf4 commit 3ea04e9

File tree

4 files changed

+50
-4
lines changed

4 files changed

+50
-4
lines changed

src/Kook.Net.Core/Utils/MentionUtils.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,18 @@ public static class MentionUtils
6161
/// <returns> 格式化为 KMarkdown 的角色提及字符串。 </returns>
6262
public static string KMarkdownMentionRole(uint id) => KMarkdownMentionRole(id.ToString());
6363

64+
/// <summary>
65+
/// 返回 KMarkdown 格式化全体成员提及字符串。
66+
/// </summary>
67+
/// <returns> 格式化为 KMarkdown 的全体成员提及字符串。 </returns>
68+
public static string KMarkdownMentionEveryone() => "(met)all(met)";
69+
70+
/// <summary>
71+
/// 返回 KMarkdown 格式化在线成员提及字符串。
72+
/// </summary>
73+
/// <returns> 格式化为 KMarkdown 的在线成员提及字符串。 </returns>
74+
public static string KMarkdownMentionHere() => "(met)here(met)";
75+
6476
internal static string PlainTextMentionUser(string username, string id) => $"@{username}#{id}";
6577

6678
/// <summary>
@@ -86,6 +98,18 @@ public static string PlainTextMentionUser(string username, ulong id) =>
8698
/// <returns> 格式化为纯文本的角色提及字符串。 </returns>
8799
public static string PlainTextMentionRole(uint id) => PlainTextMentionRole(id.ToString());
88100

101+
/// <summary>
102+
/// 返回纯文本格式化全体成员提及字符串。
103+
/// </summary>
104+
/// <returns> 格式化为纯文本的全体成员提及字符串。 </returns>
105+
public static string PlainTextMentionEveryone() => "@全体成员";
106+
107+
/// <summary>
108+
/// 返回纯文本格式化在线成员提及字符串。
109+
/// </summary>
110+
/// <returns> 格式化为纯文本的在线成员提及字符串。 </returns>
111+
public static string PlainTextMentionHere() => "@在线成员";
112+
89113
/// <summary>
90114
/// 将指定的用户提及字符串解析为用户 ID。
91115
/// </summary>

src/Kook.Net.Rest/Entities/Roles/RestRole.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ public class RestRole : RestEntity<uint>, IRole
4747
public bool IsEveryone => Id == 0;
4848

4949
/// <inheritdoc />
50-
public string KMarkdownMention => IsEveryone ? "(met)all(met)" : MentionUtils.KMarkdownMentionRole(Id);
50+
public string KMarkdownMention => IsEveryone ? MentionUtils.KMarkdownMentionEveryone() : MentionUtils.KMarkdownMentionRole(Id);
5151

5252
/// <inheritdoc />
53-
public string PlainTextMention => IsEveryone ? "@全体成员" : MentionUtils.PlainTextMentionRole(Id);
53+
public string PlainTextMention => IsEveryone ? MentionUtils.PlainTextMentionEveryone() : MentionUtils.PlainTextMentionRole(Id);
5454

5555
internal RestRole(BaseKookClient kook, IGuild guild, uint id)
5656
: base(kook, id)

src/Kook.Net.WebSocket/Entities/Roles/SocketRole.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ public class SocketRole : SocketEntity<uint>, IRole
5050
public bool IsEveryone => Id == 0;
5151

5252
/// <inheritdoc />
53-
public string KMarkdownMention => IsEveryone ? MentionUtils.KMarkdownMentionRole("all") : MentionUtils.KMarkdownMentionRole(Id);
53+
public string KMarkdownMention => IsEveryone ? MentionUtils.KMarkdownMentionEveryone() : MentionUtils.KMarkdownMentionRole(Id);
5454

5555
/// <inheritdoc />
56-
public string PlainTextMention => IsEveryone ? "@全体成员" : MentionUtils.PlainTextMentionRole(Id);
56+
public string PlainTextMention => IsEveryone ? MentionUtils.PlainTextMentionEveryone() : MentionUtils.PlainTextMentionRole(Id);
5757

5858
/// <summary>
5959
/// 获取拥有此角色的所有用户。

test/Kook.Net.Tests.Unit/MentionUtilsTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,28 @@ public void MentionRole()
4848
Assert.Equal("(rol)123(rol)", MentionUtils.KMarkdownMentionRole("123"));
4949
}
5050

51+
/// <summary>
52+
/// Tests <see cref="MentionUtils.PlainTextMentionEveryone"/>
53+
/// and <see cref="MentionUtils.KMarkdownMentionEveryone"/>
54+
/// </summary>
55+
[Fact]
56+
public void MentionEveryone()
57+
{
58+
Assert.Equal("@全体成员", MentionUtils.PlainTextMentionEveryone());
59+
Assert.Equal("(met)all(met)", MentionUtils.KMarkdownMentionEveryone());
60+
}
61+
62+
/// <summary>
63+
/// Tests <see cref="MentionUtils.PlainTextMentionHere"/>
64+
/// and <see cref="MentionUtils.KMarkdownMentionHere"/>
65+
/// </summary>
66+
[Fact]
67+
public void MentionHere()
68+
{
69+
Assert.Equal("@在线成员", MentionUtils.PlainTextMentionHere());
70+
Assert.Equal("(met)here(met)", MentionUtils.KMarkdownMentionHere());
71+
}
72+
5173
[Theory]
5274
[InlineData("@test_username#123", TagMode.PlainText, 123)]
5375
[InlineData("(met)123(met)", TagMode.KMarkdown, 123)]

0 commit comments

Comments
 (0)