diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj
index c86d20878..68a8e952a 100644
--- a/src/Discord.Net.Net45/Discord.Net.csproj
+++ b/src/Discord.Net.Net45/Discord.Net.csproj
@@ -424,6 +424,9 @@
Format.cs
+
+ IMentionable.cs
+
IService.cs
diff --git a/src/Discord.Net/IMentionable.cs b/src/Discord.Net/IMentionable.cs
new file mode 100644
index 000000000..0a4bf439c
--- /dev/null
+++ b/src/Discord.Net/IMentionable.cs
@@ -0,0 +1,7 @@
+namespace Discord
+{
+ public interface IMentionable
+ {
+ string Mention { get; }
+ }
+}
diff --git a/src/Discord.Net/Models/Channel.cs b/src/Discord.Net/Models/Channel.cs
index 78c593840..a2d046687 100644
--- a/src/Discord.Net/Models/Channel.cs
+++ b/src/Discord.Net/Models/Channel.cs
@@ -12,7 +12,7 @@ using APIChannel = Discord.API.Client.Channel;
namespace Discord
{
- public sealed class Channel
+ public sealed class Channel : IMentionable
{
private struct Member
{
diff --git a/src/Discord.Net/Models/Role.cs b/src/Discord.Net/Models/Role.cs
index 33d62b3a9..82af792c3 100644
--- a/src/Discord.Net/Models/Role.cs
+++ b/src/Discord.Net/Models/Role.cs
@@ -9,7 +9,7 @@ using APIRole = Discord.API.Client.Role;
namespace Discord
{
- public sealed class Role
+ public sealed class Role : IMentionable
{
internal DiscordClient Client => Server.Client;
@@ -37,16 +37,7 @@ namespace Discord
public IEnumerable Members => IsEveryone ? Server.Users : Server.Users.Where(x => x.HasRole(this));
/// Gets the string used to mention this role.
- public string Mention
- {
- get
- {
- if (IsEveryone)
- return "@everyone";
- else
- throw new InvalidOperationException("Roles may only be mentioned if IsEveryone is true");
- }
- }
+ public string Mention => IsEveryone ? "@everyone" : "";
internal Role(ulong id, Server server)
{
diff --git a/src/Discord.Net/Models/User.cs b/src/Discord.Net/Models/User.cs
index c3caf589d..96d0a5e41 100644
--- a/src/Discord.Net/Models/User.cs
+++ b/src/Discord.Net/Models/User.cs
@@ -9,7 +9,7 @@ using APIMember = Discord.API.Client.Member;
namespace Discord
{
- public sealed class User
+ public sealed class User : IMentionable
{
internal static string GetAvatarUrl(ulong userId, string avatarId)
=> avatarId != null ? $"{DiscordConfig.ClientAPIUrl}users/{userId}/avatars/{avatarId}.jpg" : null;