protected async void SendLikeDislikeKeyboard(User forUser, User profileUser, bool isForResponse = false) { await this.Instance.SendPhotoAsync( chatId : forUser.UserId, photo : profileUser.PictureId, caption : MessageFormatter.FormatProfileMessage(profileUser, isForResponse), parseMode : ParseMode.Html, replyMarkup : CallbackKeyboardExt.CreateLikeDislikeKeyboard(profileUser, isForResponse)); }
public void ExtractLike_From_RequestLike() { var buttons = CallbackKeyboardExt.CreateLikeDislikeKeyboard(new User(7331, "misha")) .InlineKeyboard.First().ToArray(); Like likeExtracted = CallbackKeyboardExt.ExtractLike(buttons[0].CallbackData); Assert.AreEqual(true, likeExtracted.Liked, "Like bool .Liked"); Like dislikeExtracted = CallbackKeyboardExt.ExtractLike(buttons[1].CallbackData); Assert.AreEqual(false, dislikeExtracted.Liked, "Dislike bool .Liked"); }
public void CreateLikeDislikeKeyboard_Response() { var user = new User(1337, "durov"); var buttons = CallbackKeyboardExt.CreateLikeDislikeKeyboard(user, isForResponse: true) .InlineKeyboard .First().ToArray(); Assert.AreEqual(CallbackKeyboardExt.EmojiConsts.Heart, buttons[0].Text); Assert.AreEqual(CallbackKeyboardExt.EmojiConsts.BrokenHeart, buttons[1].Text); Assert.AreEqual("resp 1337 true", buttons[0].CallbackData); Assert.AreEqual("resp 1337 false", buttons[1].CallbackData); }
public void ExtractLike_From_ResponseLike() { var user = new User(7331, "misha"); user.GotLikes.Add(new Like(user, true) { User = new User(1337, "durov") }); var buttons = CallbackKeyboardExt.CreateLikeDislikeKeyboard(user.GotLikes.First().User, true) .InlineKeyboard.First().ToArray(); Like likeExtracted = CallbackKeyboardExt.ExtractLike(buttons[0].CallbackData, user.GotLikes.First()); Assert.AreEqual(true, likeExtracted.Response, "Like response"); Like dislikeExtracted = CallbackKeyboardExt.ExtractLike(buttons[1].CallbackData, user.GotLikes.First()); Assert.AreEqual(false, dislikeExtracted.Response, "Dislike response"); }
internal void HandleCallbackQuery(object sender, CallbackQueryEventArgs callbackArgs) { var callback = callbackArgs.ToCallbackQuery(); this.RemoveKeyboard(callback); if (string.IsNullOrEmpty(callback.From.Username)) { this.SendNoUsernameSetMessage(callback.From.Id); return; } Console.WriteLine($"Callback: {callback.Id} | {callback.From.Username} | {callback.Data}"); User currentUser = this.UserContext.GetByUserId(callback.From.Id); if (currentUser == null) { this.StartNewUser(callback.From.Id, callback.From.Username); return; } currentUser.LastVisitAt = DateTime.Now; this.UserContext.SaveChanges(); if (currentUser.IsCreatingProfile()) { this.CreatingProfileLoop(currentUser, cquery: callback); return; } // После всех условий выше, этот CallbackQuery - определённо лайк/дизлайк. this.UserContext.LoadGotLikes(currentUser); // Response case Like likeWithNoResponse = currentUser.GotLikes.FirstOrDefault(x => x.Response == null); if (likeWithNoResponse != null) { CallbackKeyboardExt.ExtractLike(callback.Data, likeWithNoResponse); this.UserContext.SaveChanges(); if (likeWithNoResponse.Response.Value) // if liked { this.NotifyMatchedBoth(likeWithNoResponse.User, likeWithNoResponse.CheckedUser); } } else // Request case { var like = CallbackKeyboardExt.ExtractLike(callback.Data); if (!currentUser.GotLikes.Select(x => x.CheckedUser.Id).Contains(like.CheckedUser.Id)) // TODO: Нужно ли? Или переделать? { currentUser.Likes.Add(like); this.UserContext.SaveChanges(); } } if (!this.TrySendNextProfileForResponse(currentUser)) { this.TrySendNextProfile(currentUser); } }