Browse Source

Fixed nullref in channel mention resolving for DM channels

pull/204/head
RogueException 8 years ago
parent
commit
7b130f6528
2 changed files with 15 additions and 16 deletions
  1. +0
    -1
      src/Discord.Net/Rest/Entities/Messages/Message.cs
  2. +15
    -15
      src/Discord.Net/Utilities/MentionUtils.cs

+ 0
- 1
src/Discord.Net/Rest/Entities/Messages/Message.cs View File

@@ -1,5 +1,4 @@
using Discord.API.Rest; using Discord.API.Rest;
using Discord.Rest;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable; using System.Collections.Immutable;


+ 15
- 15
src/Discord.Net/Utilities/MentionUtils.cs View File

@@ -208,30 +208,30 @@ namespace Discord
{ {
if (mode == ChannelMentionHandling.Ignore) return text; if (mode == ChannelMentionHandling.Ignore) return text;


if (guild.IsAttached) //It's too expensive to do a channel lookup in REST mode
return _channelRegex.Replace(text, new MatchEvaluator(e =>
{ {
return _channelRegex.Replace(text, new MatchEvaluator(e =>
ulong id;
if (ulong.TryParse(e.Groups[1].Value, NumberStyles.None, CultureInfo.InvariantCulture, out id))
{ {
ulong id;
if (ulong.TryParse(e.Groups[1].Value, NumberStyles.None, CultureInfo.InvariantCulture, out id))
switch (mode)
{ {
switch (mode)
{
case ChannelMentionHandling.Remove:
return "";
case ChannelMentionHandling.Name:
case ChannelMentionHandling.Remove:
return "";
case ChannelMentionHandling.Name:
if (guild != null && guild.IsAttached) //It's too expensive to do a channel lookup in REST mode
{
IGuildChannel channel = null; IGuildChannel channel = null;
channel = guild?.GetChannel(id);
channel = guild.GetChannel(id);
if (channel != null) if (channel != null)
return $"#{channel.Name}"; return $"#{channel.Name}";
else else
return $"#deleted-channel"; return $"#deleted-channel";
}
}
break;
} }
return e.Value;
}));
}
return text;
}
return e.Value;
}));
} }
internal static string ResolveRoleMentions(string text, IReadOnlyCollection<IRole> mentions, RoleMentionHandling mode) internal static string ResolveRoleMentions(string text, IReadOnlyCollection<IRole> mentions, RoleMentionHandling mode)
{ {


Loading…
Cancel
Save