Exemple #1
0
 private string Resolve(string text, UserMentionHandling userHandling, ChannelMentionHandling channelHandling,
                        RoleMentionHandling roleHandling, EveryoneMentionHandling everyoneHandling)
 {
     text = MentionUtils.ResolveUserMentions(text, Channel, MentionedUsers, userHandling);
     text = MentionUtils.ResolveChannelMentions(text, (Channel as IGuildChannel)?.Guild, channelHandling);
     text = MentionUtils.ResolveRoleMentions(text, MentionedRoles, roleHandling);
     text = MentionUtils.ResolveEveryoneMentions(text, everyoneHandling);
     return(text);
 }
Exemple #2
0
        internal static string ResolveChannelMentions(string text, IGuild guild, ChannelMentionHandling mode)
        {
            if (mode == ChannelMentionHandling.Ignore)
            {
                return(text);
            }

            return(_channelRegex.Replace(text, new MatchEvaluator(e =>
            {
                ulong id;
                if (ulong.TryParse(e.Groups[1].Value, NumberStyles.None, CultureInfo.InvariantCulture, out id))
                {
                    switch (mode)
                    {
                    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;
                            channel = guild.GetChannel(id);
                            if (channel != null)
                            {
                                return $"#{channel.Name}";
                            }
                            else
                            {
                                return $"#deleted-channel";
                            }
                        }
                        break;
                    }
                }
                return e.Value;
            })));
        }
Exemple #3
0
 public string Resolve(UserMentionHandling userHandling, ChannelMentionHandling channelHandling,
                       RoleMentionHandling roleHandling, EveryoneMentionHandling everyoneHandling)
 => Resolve(Content, userHandling, channelHandling, roleHandling, everyoneHandling);
Exemple #4
0
 public string Resolve(int startIndex, int length, UserMentionHandling userHandling, ChannelMentionHandling channelHandling,
                       RoleMentionHandling roleHandling, EveryoneMentionHandling everyoneHandling)
 => Resolve(Content.Substring(startIndex, length), userHandling, channelHandling, roleHandling, everyoneHandling);