コード例 #1
0
ファイル: UserMessage.cs プロジェクト: faulty15/Faulty
 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);
 }
コード例 #2
0
ファイル: MentionUtils.cs プロジェクト: faulty15/Faulty
        internal static string ResolveRoleMentions(string text, IReadOnlyCollection <IRole> mentions, RoleMentionHandling mode)
        {
            if (mode == RoleMentionHandling.Ignore)
            {
                return(text);
            }

            return(_roleRegex.Replace(text, new MatchEvaluator(e =>
            {
                ulong id;
                if (ulong.TryParse(e.Groups[1].Value, NumberStyles.None, CultureInfo.InvariantCulture, out id))
                {
                    switch (mode)
                    {
                    case RoleMentionHandling.Remove:
                        return "";

                    case RoleMentionHandling.Name:
                        IRole role = null;
                        foreach (var mention in mentions)
                        {
                            if (mention.Id == id)
                            {
                                role = mention;
                                break;
                            }
                        }
                        if (role != null)
                        {
                            return $"@{role.Name}";
                        }
                        else
                        {
                            return $"@deleted-role";
                        }
                    }
                }
                return e.Value;
            })));
        }
コード例 #3
0
ファイル: UserMessage.cs プロジェクト: faulty15/Faulty
 public string Resolve(UserMentionHandling userHandling, ChannelMentionHandling channelHandling,
                       RoleMentionHandling roleHandling, EveryoneMentionHandling everyoneHandling)
 => Resolve(Content, userHandling, channelHandling, roleHandling, everyoneHandling);
コード例 #4
0
ファイル: UserMessage.cs プロジェクト: faulty15/Faulty
 public string Resolve(int startIndex, int length, UserMentionHandling userHandling, ChannelMentionHandling channelHandling,
                       RoleMentionHandling roleHandling, EveryoneMentionHandling everyoneHandling)
 => Resolve(Content.Substring(startIndex, length), userHandling, channelHandling, roleHandling, everyoneHandling);