Example #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);
 }
Example #2
0
        internal static string ResolveUserMentions(string text, IMessageChannel channel, IReadOnlyCollection <IUser> mentions, UserMentionHandling mode)
        {
            if (mode == UserMentionHandling.Ignore)
            {
                return(text);
            }

            return(_userRegex.Replace(text, new MatchEvaluator(e =>
            {
                ulong id;
                if (ulong.TryParse(e.Groups[1].Value, NumberStyles.None, CultureInfo.InvariantCulture, out id))
                {
                    IUser user = null;
                    foreach (var mention in mentions)
                    {
                        if (mention.Id == id)
                        {
                            user = mention;
                            break;
                        }
                    }
                    if (user != null)
                    {
                        string name = user.Username;

                        var guildUser = user as IGuildUser;
                        if (e.Value[2] == '!')
                        {
                            if (guildUser != null && guildUser.Nickname != null)
                            {
                                name = guildUser.Nickname;
                            }
                        }

                        switch (mode)
                        {
                        case UserMentionHandling.Remove:
                        default:
                            return "";

                        case UserMentionHandling.Name:
                            return $"@{name}";

                        case UserMentionHandling.NameAndDiscriminator:
                            return $"@{name}#{user.Discriminator}";
                        }
                    }
                }
                return e.Value;
            })));
        }
Example #3
0
 public string Resolve(UserMentionHandling userHandling, ChannelMentionHandling channelHandling,
                       RoleMentionHandling roleHandling, EveryoneMentionHandling everyoneHandling)
 => Resolve(Content, userHandling, channelHandling, roleHandling, everyoneHandling);
Example #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);