diff --git a/osu.Game/Online/Chat/MessageFormatter.cs b/osu.Game/Online/Chat/MessageFormatter.cs
index b80720a0aa..1041758b0c 100644
--- a/osu.Game/Online/Chat/MessageFormatter.cs
+++ b/osu.Game/Online/Chat/MessageFormatter.cs
@@ -167,6 +167,9 @@ namespace osu.Game.Online.Chat
case "u":
case "users":
return new LinkDetails(LinkAction.OpenUserProfile, mainArg);
+
+ case "wiki":
+ return new LinkDetails(LinkAction.OpenWiki, string.Join('/', args.Skip(3)));
}
}
@@ -311,7 +314,8 @@ namespace osu.Game.Online.Chat
JoinMultiplayerMatch,
Spectate,
OpenUserProfile,
- Custom
+ OpenWiki,
+ Custom,
}
public class Link : IComparable
diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs
index 42a49aa65e..b3b0773eff 100644
--- a/osu.Game/OsuGame.cs
+++ b/osu.Game/OsuGame.cs
@@ -309,6 +309,10 @@ namespace osu.Game
ShowUser(userId);
break;
+ case LinkAction.OpenWiki:
+ ShowWiki(link.Argument);
+ break;
+
default:
throw new NotImplementedException($"This {nameof(LinkAction)} ({link.Action.ToString()}) is missing an associated action.");
}
@@ -356,6 +360,12 @@ namespace osu.Game
/// The beatmap to show.
public void ShowBeatmap(int beatmapId) => waitForReady(() => beatmapSetOverlay, _ => beatmapSetOverlay.FetchAndShowBeatmap(beatmapId));
+ ///
+ /// Show a wiki's page as an overlay
+ ///
+ /// The wiki page to show
+ public void ShowWiki(string path) => waitForReady(() => wikiOverlay, _ => wikiOverlay.ShowPage(path));
+
///
/// Present a beatmap at song select immediately.
/// The user should have already requested this interactively.