diff --git a/src/Discord.Net/DiscordClient.Channels.cs b/src/Discord.Net/DiscordClient.Channels.cs index 99012bf93..f637a2056 100644 --- a/src/Discord.Net/DiscordClient.Channels.cs +++ b/src/Discord.Net/DiscordClient.Channels.cs @@ -79,16 +79,16 @@ namespace Discord return _channels[id]; } - + /// Returns all channels with the specified server and name. - /// Name formats supported: Name and #Name. Search is case-insensitive. + /// Name formats supported: Name, #Name and <#Id>. Search is case-insensitive if exactMatch is false. public IEnumerable FindChannels(Server server, string name, ChannelType type = null, bool exactMatch = false) { if (server == null) throw new ArgumentNullException(nameof(server)); if (name == null) throw new ArgumentNullException(nameof(name)); CheckReady(); - var query = server.Channels.Where(x => string.Equals(x.Name, name, StringComparison.OrdinalIgnoreCase)); + var query = server.Channels.Where(x => string.Equals(x.Name, name, exactMatch ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase)); if (!exactMatch && name.Length >= 2) { diff --git a/src/Discord.Net/DiscordClient.Users.cs b/src/Discord.Net/DiscordClient.Users.cs index 47fe978ae..162fc73b9 100644 --- a/src/Discord.Net/DiscordClient.Users.cs +++ b/src/Discord.Net/DiscordClient.Users.cs @@ -154,22 +154,22 @@ namespace Discord if (discriminator <= 0) throw new ArgumentOutOfRangeException(nameof(discriminator)); CheckReady(); - return FindUsers(server, username, discriminator, true).FirstOrDefault(); + return FindUsers(server.Members, server.Id, username, discriminator, true).FirstOrDefault(); } /// Returns all users with the specified server and name, along with their server-specific data. - /// Name formats supported: Name, @Name and <@Id>. Search is case-insensitive. - public IEnumerable FindUsers(Server server, string name, short? discriminator = null, bool exactMatch = false) + /// Name formats supported: Name, @Name and <@Id>. Search is case-insensitive if exactMatch is false. + public IEnumerable FindUsers(Server server, string name, bool exactMatch = false) { if (server == null) throw new ArgumentNullException(nameof(server)); if (name == null) throw new ArgumentNullException(nameof(name)); CheckReady(); - return FindUsers(server.Members, server.Id, name, discriminator, exactMatch); + return FindUsers(server.Members, server.Id, name, exactMatch: exactMatch); } /// Returns all users with the specified channel and name, along with their server-specific data. - /// Name formats supported: Name, @Name and <@Id>. Search is case-insensitive. - public IEnumerable FindUsers(Channel channel, string name, short? discriminator = null, bool exactMatch = false) + /// Name formats supported: Name, @Name and <@Id>. Search is case-insensitive if exactMatch is false. + public IEnumerable FindUsers(Channel channel, string name, bool exactMatch = false) { if (channel == null) throw new ArgumentNullException(nameof(channel)); if (name == null) throw new ArgumentNullException(nameof(name)); @@ -180,16 +180,16 @@ namespace Discord private IEnumerable FindUsers(IEnumerable users, long? serverId, string name, short? discriminator = null, bool exactMatch = false) { - var query = users.Where(x => string.Equals(x.Name, name, StringComparison.OrdinalIgnoreCase)); + var query = users.Where(x => string.Equals(x.Name, name, exactMatch ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase)); if (!exactMatch && name.Length >= 2) { if (name[0] == '<' && name[1] == '@' && name[name.Length - 1] == '>') //Parse mention { long id = IdConvert.ToLong(name.Substring(2, name.Length - 3)); - var channel = _users[id, serverId]; - if (channel != null) - query = query.Concat(new User[] { channel }); + var user = _users[id, serverId]; + if (user != null) + query = query.Concat(new User[] { user }); } else if (name[0] == '@') //If we somehow get text starting with @ but isn't a mention {