* Fix #1335 Add isMentionable parameter to CreateRoleAsync in non-breaking manner This PR adds the isMentionable parameter to the CreateRoleAsync method in a way that prevents it from being interface-breaking. This has been done by adding it as an optional parameter at the end of publicly-exposed methods. This parameter determines if the newly created role can be mentioned as it is created. * Overload CreateRoleAsync methods
This commit is contained in:
committed by
Christopher F
parent
9ede6b905f
commit
1c63fd479d
@@ -598,6 +598,21 @@ namespace Discord
|
|||||||
/// role.
|
/// role.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
Task<IRole> CreateRoleAsync(string name, GuildPermissions? permissions = null, Color? color = null, bool isHoisted = false, RequestOptions options = null);
|
Task<IRole> CreateRoleAsync(string name, GuildPermissions? permissions = null, Color? color = null, bool isHoisted = false, RequestOptions options = null);
|
||||||
|
// TODO remove CreateRoleAsync overload that does not have isMentionable when breaking change is acceptable
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new role with the provided name.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="name">The new name for the role.</param>
|
||||||
|
/// <param name="permissions">The guild permission that the role should possess.</param>
|
||||||
|
/// <param name="color">The color of the role.</param>
|
||||||
|
/// <param name="isHoisted">Whether the role is separated from others on the sidebar.</param>
|
||||||
|
/// <param name="isMentionable">Whether the role can be mentioned.</param>
|
||||||
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
|
/// <returns>
|
||||||
|
/// A task that represents the asynchronous creation operation. The task result contains the newly created
|
||||||
|
/// role.
|
||||||
|
/// </returns>
|
||||||
|
Task<IRole> CreateRoleAsync(string name, GuildPermissions? permissions = null, Color? color = null, bool isHoisted = false, bool isMentionable = false, RequestOptions options = null);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a user to this guild.
|
/// Adds a user to this guild.
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ namespace Discord.Rest
|
|||||||
//Roles
|
//Roles
|
||||||
/// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c>.</exception>
|
/// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c>.</exception>
|
||||||
public static async Task<RestRole> CreateRoleAsync(IGuild guild, BaseDiscordClient client,
|
public static async Task<RestRole> CreateRoleAsync(IGuild guild, BaseDiscordClient client,
|
||||||
string name, GuildPermissions? permissions, Color? color, bool isHoisted, RequestOptions options)
|
string name, GuildPermissions? permissions, Color? color, bool isHoisted, bool isMentionable, RequestOptions options)
|
||||||
{
|
{
|
||||||
if (name == null) throw new ArgumentNullException(paramName: nameof(name));
|
if (name == null) throw new ArgumentNullException(paramName: nameof(name));
|
||||||
|
|
||||||
@@ -270,6 +270,7 @@ namespace Discord.Rest
|
|||||||
x.Permissions = (permissions ?? role.Permissions);
|
x.Permissions = (permissions ?? role.Permissions);
|
||||||
x.Color = (color ?? Color.Default);
|
x.Color = (color ?? Color.Default);
|
||||||
x.Hoist = isHoisted;
|
x.Hoist = isHoisted;
|
||||||
|
x.Mentionable = isMentionable;
|
||||||
}, options).ConfigureAwait(false);
|
}, options).ConfigureAwait(false);
|
||||||
|
|
||||||
return role;
|
return role;
|
||||||
|
|||||||
@@ -530,6 +530,11 @@ namespace Discord.Rest
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public Task<RestRole> CreateRoleAsync(string name, GuildPermissions? permissions = default(GuildPermissions?), Color? color = default(Color?),
|
||||||
|
bool isHoisted = false, RequestOptions options = null)
|
||||||
|
=> CreateRoleAsync(name, permissions, color, isHoisted, false, options);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new role with the provided name.
|
/// Creates a new role with the provided name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -538,14 +543,15 @@ namespace Discord.Rest
|
|||||||
/// <param name="color">The color of the role.</param>
|
/// <param name="color">The color of the role.</param>
|
||||||
/// <param name="isHoisted">Whether the role is separated from others on the sidebar.</param>
|
/// <param name="isHoisted">Whether the role is separated from others on the sidebar.</param>
|
||||||
/// <param name="options">The options to be used when sending the request.</param>
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
|
/// <param name="isMentionable">Whether the role can be mentioned.</param>
|
||||||
/// <returns>
|
/// <returns>
|
||||||
/// A task that represents the asynchronous creation operation. The task result contains the newly created
|
/// A task that represents the asynchronous creation operation. The task result contains the newly created
|
||||||
/// role.
|
/// role.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
public async Task<RestRole> CreateRoleAsync(string name, GuildPermissions? permissions = default(GuildPermissions?), Color? color = default(Color?),
|
public async Task<RestRole> CreateRoleAsync(string name, GuildPermissions? permissions = default(GuildPermissions?), Color? color = default(Color?),
|
||||||
bool isHoisted = false, RequestOptions options = null)
|
bool isHoisted = false, bool isMentionable = false, RequestOptions options = null)
|
||||||
{
|
{
|
||||||
var role = await GuildHelper.CreateRoleAsync(this, Discord, name, permissions, color, isHoisted, options).ConfigureAwait(false);
|
var role = await GuildHelper.CreateRoleAsync(this, Discord, name, permissions, color, isHoisted, isMentionable, options).ConfigureAwait(false);
|
||||||
_roles = _roles.Add(role.Id, role);
|
_roles = _roles.Add(role.Id, role);
|
||||||
return role;
|
return role;
|
||||||
}
|
}
|
||||||
@@ -833,7 +839,10 @@ namespace Discord.Rest
|
|||||||
=> GetRole(id);
|
=> GetRole(id);
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
async Task<IRole> IGuild.CreateRoleAsync(string name, GuildPermissions? permissions, Color? color, bool isHoisted, RequestOptions options)
|
async Task<IRole> IGuild.CreateRoleAsync(string name, GuildPermissions? permissions, Color? color, bool isHoisted, RequestOptions options)
|
||||||
=> await CreateRoleAsync(name, permissions, color, isHoisted, options).ConfigureAwait(false);
|
=> await CreateRoleAsync(name, permissions, color, isHoisted, false, options).ConfigureAwait(false);
|
||||||
|
/// <inheritdoc />
|
||||||
|
async Task<IRole> IGuild.CreateRoleAsync(string name, GuildPermissions? permissions, Color? color, bool isHoisted, bool isMentionable, RequestOptions options)
|
||||||
|
=> await CreateRoleAsync(name, permissions, color, isHoisted, isMentionable, options).ConfigureAwait(false);
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
async Task<IGuildUser> IGuild.AddGuildUserAsync(ulong userId, string accessToken, Action<AddGuildUserProperties> func, RequestOptions options)
|
async Task<IGuildUser> IGuild.AddGuildUserAsync(ulong userId, string accessToken, Action<AddGuildUserProperties> func, RequestOptions options)
|
||||||
|
|||||||
@@ -679,6 +679,10 @@ namespace Discord.WebSocket
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public Task<RestRole> CreateRoleAsync(string name, GuildPermissions? permissions = default(GuildPermissions?), Color? color = default(Color?),
|
||||||
|
bool isHoisted = false, RequestOptions options = null)
|
||||||
|
=> GuildHelper.CreateRoleAsync(this, Discord, name, permissions, color, isHoisted, false, options);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a new role with the provided name.
|
/// Creates a new role with the provided name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -686,6 +690,7 @@ namespace Discord.WebSocket
|
|||||||
/// <param name="permissions">The guild permission that the role should possess.</param>
|
/// <param name="permissions">The guild permission that the role should possess.</param>
|
||||||
/// <param name="color">The color of the role.</param>
|
/// <param name="color">The color of the role.</param>
|
||||||
/// <param name="isHoisted">Whether the role is separated from others on the sidebar.</param>
|
/// <param name="isHoisted">Whether the role is separated from others on the sidebar.</param>
|
||||||
|
/// <param name="isMentionable">Whether the role can be mentioned.</param>
|
||||||
/// <param name="options">The options to be used when sending the request.</param>
|
/// <param name="options">The options to be used when sending the request.</param>
|
||||||
/// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c>.</exception>
|
/// <exception cref="ArgumentNullException"><paramref name="name"/> is <c>null</c>.</exception>
|
||||||
/// <returns>
|
/// <returns>
|
||||||
@@ -693,8 +698,8 @@ namespace Discord.WebSocket
|
|||||||
/// role.
|
/// role.
|
||||||
/// </returns>
|
/// </returns>
|
||||||
public Task<RestRole> CreateRoleAsync(string name, GuildPermissions? permissions = default(GuildPermissions?), Color? color = default(Color?),
|
public Task<RestRole> CreateRoleAsync(string name, GuildPermissions? permissions = default(GuildPermissions?), Color? color = default(Color?),
|
||||||
bool isHoisted = false, RequestOptions options = null)
|
bool isHoisted = false, bool isMentionable = false, RequestOptions options = null)
|
||||||
=> GuildHelper.CreateRoleAsync(this, Discord, name, permissions, color, isHoisted, options);
|
=> GuildHelper.CreateRoleAsync(this, Discord, name, permissions, color, isHoisted, isMentionable, options);
|
||||||
internal SocketRole AddRole(RoleModel model)
|
internal SocketRole AddRole(RoleModel model)
|
||||||
{
|
{
|
||||||
var role = SocketRole.Create(this, Discord.State, model);
|
var role = SocketRole.Create(this, Discord.State, model);
|
||||||
@@ -1151,7 +1156,10 @@ namespace Discord.WebSocket
|
|||||||
=> GetRole(id);
|
=> GetRole(id);
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
async Task<IRole> IGuild.CreateRoleAsync(string name, GuildPermissions? permissions, Color? color, bool isHoisted, RequestOptions options)
|
async Task<IRole> IGuild.CreateRoleAsync(string name, GuildPermissions? permissions, Color? color, bool isHoisted, RequestOptions options)
|
||||||
=> await CreateRoleAsync(name, permissions, color, isHoisted, options).ConfigureAwait(false);
|
=> await CreateRoleAsync(name, permissions, color, isHoisted, false, options).ConfigureAwait(false);
|
||||||
|
/// <inheritdoc />
|
||||||
|
async Task<IRole> IGuild.CreateRoleAsync(string name, GuildPermissions? permissions, Color? color, bool isHoisted, bool isMentionable, RequestOptions options)
|
||||||
|
=> await CreateRoleAsync(name, permissions, color, isHoisted, isMentionable, options).ConfigureAwait(false);
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
Task<IReadOnlyCollection<IGuildUser>> IGuild.GetUsersAsync(CacheMode mode, RequestOptions options)
|
Task<IReadOnlyCollection<IGuildUser>> IGuild.GetUsersAsync(CacheMode mode, RequestOptions options)
|
||||||
|
|||||||
Reference in New Issue
Block a user