diff --git a/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnection.cs b/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnection.cs
new file mode 100644
index 000000000..acef2dad1
--- /dev/null
+++ b/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnection.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+
+namespace Discord;
+
+public class RoleConnection
+{
+ ///
+ /// Gets the vanity name of the platform a bot has connected.
+ ///
+ public string PlatformName { get; }
+
+ ///
+ /// Gets the username on the platform a bot has connected.
+ ///
+ public string PlatformUsername { get; }
+
+ ///
+ ///
+ ///
+ public IReadOnlyDictionary Metadata { get; }
+
+ internal RoleConnection(string platformName, string platformUsername, IReadOnlyDictionary metadata)
+ {
+ PlatformName = platformName;
+ PlatformUsername = platformUsername;
+ Metadata = metadata;
+ }
+}
diff --git a/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadata.cs b/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadata.cs
index 18a887626..c13264d97 100644
--- a/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadata.cs
+++ b/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadata.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Collections.Immutable;
namespace Discord;
@@ -10,11 +11,11 @@ public class RoleConnectionMetadata
public string Name{ get; }
- public Optional> NameLocalizations { get; }
+ public Optional> NameLocalizations { get; }
public string Description { get; }
- public Optional> DescriptionLocalizations { get; }
+ public Optional> DescriptionLocalizations { get; }
internal RoleConnectionMetadata(RoleConnectionMetadataType type, string key, string name, string description,
Dictionary nameLocalizations = null, Dictionary descriptionLocalizations = null)
@@ -23,7 +24,7 @@ public class RoleConnectionMetadata
Key = key;
Name = name;
Description = description;
- NameLocalizations = nameLocalizations;
- DescriptionLocalizations = descriptionLocalizations;
+ NameLocalizations = nameLocalizations.ToImmutableDictionary();
+ DescriptionLocalizations = descriptionLocalizations.ToImmutableDictionary();
}
}
diff --git a/src/Discord.Net.Rest/API/Common/RoleConnection.cs b/src/Discord.Net.Rest/API/Common/RoleConnection.cs
new file mode 100644
index 000000000..f8c26a6b6
--- /dev/null
+++ b/src/Discord.Net.Rest/API/Common/RoleConnection.cs
@@ -0,0 +1,16 @@
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace Discord.API;
+
+public class RoleConnection
+{
+ [JsonProperty("platform_name")]
+ public Optional PlatformName { get; set; }
+
+ [JsonProperty("platform_username")]
+ public Optional PlatformUsername { get; set; }
+
+ [JsonProperty("metadata")]
+ public Optional> Metadata { get; set; }
+}
diff --git a/src/Discord.Net.Rest/API/Common/RoleConnectionMetadata.cs b/src/Discord.Net.Rest/API/Common/RoleConnectionMetadata.cs
index d4b2fe222..472c14e62 100644
--- a/src/Discord.Net.Rest/API/Common/RoleConnectionMetadata.cs
+++ b/src/Discord.Net.Rest/API/Common/RoleConnectionMetadata.cs
@@ -18,8 +18,8 @@ public class RoleConnectionMetadata
public string Description { get; set; }
[JsonProperty("name_localizations")]
- public Optional>> NameLocalizations { get; set; }
+ public Optional>> NameLocalizations { get; set; }
[JsonProperty("description_localizations")]
- public Optional>> DescriptionLocalizations { get; set; }
+ public Optional>> DescriptionLocalizations { get; set; }
}
diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs
index 3bee9a4cd..12656be88 100644
--- a/src/Discord.Net.Rest/DiscordRestApiClient.cs
+++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs
@@ -2490,6 +2490,16 @@ namespace Discord.API
return await SendJsonAsync>("PUT", $"/applications/{CurrentApplicationId}/role-connections/metadata", roleConnections, options: options).ConfigureAwait(false);
}
+ public async Task GetUserApplicationRoleConnection(RequestOptions options = null)
+ {
+ return await SendAsync("GET", $"/users/@me/applications/{CurrentApplicationId}/role-connection", options: options);
+ }
+
+ public async Task GetUserApplicationRoleConnection(RoleConnection connection, RequestOptions options = null)
+ {
+ return await SendJsonAsync("PUT", $"/users/@me/applications/{CurrentApplicationId}/role-connection", connection, options: options);
+ }
+
#endregion
}
}