public async Task ASXCompany(string stockCode, [Remainder] string parameter = "")
        {
            var dataResult = await _asxService.Company(stockCode);

            if (!dataResult.IsSuccess)
            {
                await ReplyAsync(dataResult.Message);

                return;
            }

            var data = dataResult.Payload;

            var embed = ASXSearchViewBuilders.BuildCompanyView(data);

            await ReplyAsync("", embed : embed);
        }
        public async Task ASXIndex([Remainder] string parameter = "")
        {
            var chartDataResult = await _asxService.Highchart("XAO");

            if (!chartDataResult.IsSuccess)
            {
                await ReplyAsync(chartDataResult.Message);

                return;
            }

            var data            = chartDataResult.Payload;
            var lastPoint       = data.OrderBy(x => x.Date).Last();
            var secondLastPoint = data.Last(x => x.Date != lastPoint.Date);

            var embed = ASXSearchViewBuilders.BuildIndexView(lastPoint, secondLastPoint);

            await ReplyAsync("", embed : embed);
        }
        public async Task ASXSearch(string stockCode, string option = "def", [Remainder] string parameter = "")
        {
            if (option != "def")
            {
                switch (option)
                {
                case "company":
                case "info":
                case "i":
                    await ASXCompany(stockCode);

                    return;

                case "annualreport":
                case "annual":
                case "report":
                case "r":
                case "ar":
                    await ASXAnnualReport(stockCode);

                    return;

                case "announce":
                case "announcements":
                case "an":
                case "ann":
                    await ASXAnnouncements(stockCode);

                    return;

                case "similar":
                case "sim":
                case "s":
                    await ASXSimilar(stockCode);

                    return;

                case "upcomingevents":
                case "e":
                case "agm":
                case "events":
                    await ASXUpcomingEvents(stockCode);

                    return;

                default:
                    break;
                }
            }

            if (stockCode.ToUpper() == "XAO")
            {
                await ASXIndex();

                return;
            }

            var dataResult = await _asxService.Lookup(stockCode);

            if (!dataResult.IsSuccess)
            {
                await ReplyAsync(dataResult.Message);

                return;
            }

            var data = dataResult.Payload;

            var embed = ASXSearchViewBuilders.BuildLookupView(data);

            await ReplyAsync("", embed : embed);
        }