public async Task <NewChatMembers> CheckNewChatMembers( long chatId, User[] users, Func <CallbackAnswer, Task <CallbackResult> > funcCallbackAnswer ) { _chatSetting = await _settingsService.GetSettingsByGroup(chatId); var newChatMembers = new NewChatMembers { AllNewChatMembers = users.AsEnumerable() }; _logger.LogDebug("Parsing new {Length} members..", users.Length); foreach (var user in users) { var callbackAnswerParam = new CallbackAnswer(); var userId = user.Id; var banResult = await _antiSpamService.CheckSpam(chatId, userId); callbackAnswerParam.TargetUserId = userId; if (banResult.IsAnyBanned) { newChatMembers.NewKickedChatMembers.Add(user); callbackAnswerParam.CallbackAnswerModes.Add(CallbackAnswerMode.KickMember); } else { if (_chatSetting.EnableHumanVerification) { newChatMembers.NewPassedChatMembers.Add(user); callbackAnswerParam.CallbackAnswerModes.Add(CallbackAnswerMode.MuteMember); callbackAnswerParam.CallbackAnswerModes.Add(CallbackAnswerMode.ScheduleKickMember); } newChatMembers.NewPassedChatMembers.Add(user); } await funcCallbackAnswer(callbackAnswerParam); } newChatMembers.AllNewChatMembersStr = users.Select(user => user.GetNameLink()); newChatMembers.NewPassedChatMembersStr = newChatMembers.NewPassedChatMembers.Select(user => user.GetNameLink()); newChatMembers.NewNoUsernameChatMembers = users.Where(user => user.Username.IsNullOrEmpty()); newChatMembers.NewNoUsernameChatMembersStr = newChatMembers.NewNoUsernameChatMembers.Select(user => user.GetNameLink()); newChatMembers.NewBotChatMembers = users.Where(user => user.IsBot); newChatMembers.NewBotChatMembersStr = newChatMembers.NewBotChatMembers.Select(user => user.GetNameLink()); return(newChatMembers); }
/// <summary> /// Answer on callback /// This method should be called to send an answer after a user has clicked the button. The answer may be an updated message or/and a one-time user notification. /// </summary> /// <param name="callbackAnswer">(required)</param> /// <param name="callbackId">Identifies a button clicked by user. Bot receives this identifier after user pressed button as part of MessageCallbackUpdate (required)</param> /// <returns>SimpleQueryResult</returns> public AnswerOnCallbackQuery AnswerOnCallback(CallbackAnswer callbackAnswer, string callbackId) { if (callbackId == null) { throw new RequiredParameterMissingException("Missing the required parameter 'callback_id' when calling answerOnCallback"); } if (callbackAnswer == null) { throw new RequiredParameterMissingException("Missing the required request body when calling answerOnCallback"); } return(new AnswerOnCallbackQuery(_client, callbackAnswer, callbackId)); }
/// <summary> /// This function is used to answer Callback Query /// </summary> /// <param name="callbackAnswer"></param> private async Task AnswerCallbackAsync(CallbackAnswer callbackAnswer) { var callbackQueryId = CallbackQuery.Id; var answerMode = callbackAnswer.CallbackAnswerMode; var answerCallback = callbackAnswer.CallbackAnswerText; switch (answerMode) { case CallbackAnswerMode.AnswerCallback: await Bot.AnswerCallbackQueryAsync( callbackQueryId, answerCallback, showAlert : true ); break; case CallbackAnswerMode.SendMessage: break; case CallbackAnswerMode.EditMessage: var messageText = callbackAnswer.CallbackAnswerText; var messageMarkup = callbackAnswer.CallbackAnswerInlineMarkup; await EditMessageTextAsync(messageText, messageMarkup); break; default: _logger.LogDebug( "No Callback Answer mode for CallBack {CallbackQueryId}. {V}", callbackQueryId, answerMode ); break; } }
public AnswerOnCallbackQuery(TamTamClient client, CallbackAnswer callbackAnswer, string callbackId) : base(client, "/answers", callbackAnswer, Method.POST) { _callbackId = new QueryParam <string>("callback_id", callbackId, this).Required(); }
/// <summary> /// Answer on callback. /// </summary> public async Task <IApiResponse <SimpleQueryResult> > AnswerOnCallbackAsync(string callbackId, CallbackAnswer answer, CancellationToken cancellationToken = default) { IApiResponse <SimpleQueryResult> result = null; result = await SenderApi.PostAsync <SimpleQueryResult>(_connectorClient, GetApiUri($"answers?access_token={_accessToken}&callback_id={callbackId}"), answer, cancellationToken); return(result); }