Exemple #1
0
        public async Task ProcessAsync(MessageContext context, HttpApiClient api)
        {
            var bi = await _newbieContext.Bindings.Where(b => b.UserId == context.UserId).FirstOrDefaultAsync().ConfigureAwait(false);

            if (bi == null)
            {
                return;
            }
            var osuId = bi.OsuId;
            var best  = await _osuApiClient.GetUserBest(osuId).ConfigureAwait(false);

            var sb = new StringBuilder();

            foreach (var b in best.Take(4))
            {
                sb.Append("根据您的 BP b/").Append(b.BeatmapId).Append(" + ").Append(b.EnabledMods.Display()).AppendLine(" 推荐:");
                var id  = RecommendationBeatmapId.Create(b, Mode.Standard);
                var rec = await _newbieContext.Recommendations
                          .Where(r => r.Left == id)
                          .OrderByDescending(r => r.RecommendationDegree)
                          .Take(4)
                          .ToListAsync().ConfigureAwait(false);

                _ = rec.Aggregate(sb, (sb, r) => sb.Append("b/").Append(r.Recommendation.BeatmapId).Append(" + ").AppendLine(r.Recommendation.ValidMods.Display()));
            }
            await api.SendMessageAsync(context.Endpoint, sb.ToString()).ConfigureAwait(false);
        }