Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
        /// <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));
        }
Exemplo n.º 3
0
        /// <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;
            }
        }
Exemplo n.º 4
0
 public AnswerOnCallbackQuery(TamTamClient client, CallbackAnswer callbackAnswer, string callbackId)
     : base(client, "/answers", callbackAnswer, Method.POST)
 {
     _callbackId = new QueryParam <string>("callback_id", callbackId, this).Required();
 }
Exemplo n.º 5
0
        /// <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);
        }