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); }