Exemplo n.º 1
0
        public static bool TryParse(string input, out IEmoji result)
        {
            result = null;

            if (LocalCustomEmoji.TryParse(input, out var emoji))
            {
                result = emoji;
                return(true);
            }

            var utf32 = Encoding.UTF32.GetBytes(input);

            for (var i = 0; i < utf32.Length; i += 4)
            {
                var codepoint = BitConverter.ToInt32(utf32, i);
                var any       = false;

                for (var j = 0; j < CodePoints.Length; j++)
                {
                    if (CodePoints[j] == codepoint)
                    {
                        any = true;
                        break;
                    }
                }

                if (!any)
                {
                    return(false);
                }
            }

            result = new LocalEmoji(input);
            return(true);
        }
Exemplo n.º 2
0
        ParseAsync(Parameter parameter, string value, CommandContext context)
        {
            if (LocalCustomEmoji.TryParse(value, out var localCustomEmoji))
            {
                return(TypeParserResult <IEmoji> .Successful(localCustomEmoji));
            }

            if (emojis == null)
            {
                await Locker.WaitAsync();

                try
                {
                    await GetEmojis();
                }
                finally
                {
                    Locker.Release();
                }
            }

            var match = emojis.FirstOrDefault(x => x.Surrogates == value ||
                                              x.NamesWithColons.Any(n => n.Equals(value, System.StringComparison.OrdinalIgnoreCase)) ||
                                              x.Names.Any(n => n.Equals(value, System.StringComparison.OrdinalIgnoreCase)));

            if (match != null)
            {
                var localEmoji = new LocalEmoji(match.Surrogates);
                return(TypeParserResult <IEmoji> .Successful(localEmoji));
            }

            return(TypeParserResult <IEmoji> .Unsuccessful("Invalid custom emoji format."));
        }
        public override ValueTask <CheckResult> CheckAsync(object argument, CommandContext ctx)
        {
            var context = (AdminCommandContext)ctx;

            return(!LocalCustomEmoji.TryParse(((IEmoji)argument).MessageFormat, out _)
                ? CheckResult.Unsuccessful(context.Localize("require_custom_emoji"))
                : CheckResult.Successful);
        }
        /// <inheritdoc/>
        public override ValueTask <TypeParserResult <ICustomEmoji> > ParseAsync(Parameter parameter, string value, DiscordCommandContext context)
        {
            if (LocalCustomEmoji.TryParse(value, out var emoji))
            {
                return(Success(emoji));
            }

            return(Failure("Invalid custom emoji."));
        }
Exemplo n.º 5
0
        public ButtonAttribute(string emoji)
        {
            if (emoji == null)
            {
                throw new ArgumentNullException(nameof(emoji));
            }

            Emoji = LocalCustomEmoji.TryParse(emoji, out var customEmoji)
                ? customEmoji as IEmoji
                : new LocalEmoji(emoji);
        }
        /// <inheritdoc/>
        public override ValueTask <TypeParserResult <IGuildEmoji> > ParseAsync(Parameter parameter, string value, DiscordGuildCommandContext context)
        {
            if (LocalCustomEmoji.TryParse(value, out var emoji))
            {
                if (context.Guild.Emojis.TryGetValue(emoji.Id, out var guildEmoji))
                {
                    return(Success(guildEmoji));
                }

                return(Failure("The provided custom emoji is not from this guild."));
            }

            return(Failure("Invalid custom emoji."));
        }
Exemplo n.º 7
0
            private async Task <ICustomEmoji> GetEmojiAsync(string value)
            {
                if (LocalCustomEmoji.TryParse(value, out var emoji))
                {
                    return(Context.Guild !.Emojis.FirstOrDefault(x => x.Value.Id == emoji.Id).Value
                           ?? (ICustomEmoji)await Context.Guild !.GetEmojiAsync(emoji.Id));
                }

                if (Snowflake.TryParse(value, out var emojiId))
                {
                    return(Context.Guild !.Emojis.FirstOrDefault(x => x.Value.Id == emojiId).Value
                           ?? (ICustomEmoji)await Context.Guild !.GetEmojiAsync(emojiId));
                }

                value = value.Replace(" ", "_");
                return(Context.Guild !.Emojis.FirstOrDefault(e => string.Equals(e.Value.Name, value, StringComparison.OrdinalIgnoreCase)).Value);
            }