コード例 #1
0
        public override Task <TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
        {
            input = input.Replace("`", "").Replace(@"\", "").Trim();

            // Find by name
            foreach (var emote in EmotesHelper.Emotes)
            {
                if (input.Equals($":{EmotesHelper.GetEmojiName(emote)}:", StringComparison.CurrentCultureIgnoreCase))
                {
                    return(Task.FromResult(TypeReaderResult.FromSuccess(EmotesHelper.GetEmoji(emote))));
                }
            }

            // Find by unicode value
            foreach (var emote in EmotesHelper.Emojis)
            {
                if (input.Equals(emote.Name, StringComparison.CurrentCultureIgnoreCase))
                {
                    return(Task.FromResult(TypeReaderResult.FromSuccess(emote)));
                }
            }

            // Check guild-emotes
            var guildEmote = context.Guild.Emotes.FirstOrDefault(e => string.Equals($"<:{e.Name}:{e.Id}>", input, StringComparison.CurrentCultureIgnoreCase) || string.Equals($"<a:{e.Name}:{e.Id}>", input, StringComparison.CurrentCultureIgnoreCase));

            if (guildEmote != null)
            {
                return(Task.FromResult(TypeReaderResult.FromSuccess(guildEmote)));
            }
            return(Task.FromResult(TypeReaderResult.FromError(CommandError.Unsuccessful, "Unable to find a valid emote")));
        }