Example #1
0
def reply_astanaErc_quick_replies_with_delete(sender, astanaErc_accounts, text,
                                              status):
    main.reply(sender, text)
    data_text = "(Вы можете оплатить квитанцию, выбрать или ввести номер лицевого счёта Астана ЕРЦ, чтобы посмотреть " \
                "квитанции, либо нажать (y) для перехода в главное меню)"
    buttons = []
    if status == 'OK':
        buttons.append({
            "content_type": "text",
            "payload": "astanaErc.pay",
            "title": "Оплатить квитанцию"
        })
    for acc in astanaErc_accounts:
        buttons.append({
            "content_type": "text",
            "payload": "astanaErc.last",
            "title": acc
        })
    buttons.append({
        "content_type": "text",
        "payload": "astanaErc.delete",
        "title": "Удалить лицевой счёт"
    })
    data_quick_replies = {
        "recipient": {
            "id": sender
        },
        "message": {
            "text": data_text,
            "quick_replies": buttons
        }
    }
    requests.post(fb_url, json=data_quick_replies)
Example #2
0
def reply_card2cash_history_show(sender, last_sender_message, token):
    try:
        main.reply_typing_on(sender)
        headers = {
            'Content-Type':
            'application/x-www-form-urlencoded',
            'X-Channel-Id':
            x_channel_id,
            'X-IV-Authorization':
            'Identifier ' + last_sender_message['mobileNumber']
        }

        url_token_show = url + portal_id + '/payment/' + token
        r = requests.get(url_token_show, headers=headers)
        data = r.json()
        result = "Проверьте введённые данные:" \
                "\nКарта: " + data['src']['title'] + \
                "\nСумма: " + str(data['amount'] // 100) + \
                "\nКомиссия: " + str(data['commission'] // 100) + \
                "\nИтого: " + str((int(data['amount'])+int(data['commission'])) // 100) + \
                "\nФИО получателя: " + data['params']['rcpnLastname'] + " " + data['params']['rcpnName'] + \
                "\nАдрес получателя: " + data['params']['rcpnAddr'] + \
                "\nНомер телефона получателя: " + data['params']['rcpnPhone'] + \
                "\nКодовое слово: " + data['params']['codeWord'] + \
                "\n\nЧтобы подтвердить перевод, введите трехзначный код CSC/CVV2 на обратной стороне карты"
        main.reply(sender, result)
        last_sender_message['card2cash_token'] = token
        main.mongo_update_record(last_sender_message)
    except:
        main.reply(sender,
                   "Произошла непредвиденная ошибка, попробуйте позднее")
        logging.error(helper.PrintException())
Example #3
0
def reply_mobile_amount(sender, message, last_sender_message, is_voice=None):
    added_text = ''
    if is_voice:
        added_text = 'Вы продиктовали сумму ' + message + '.\n'
    amount = 0
    minAmount = last_sender_message['minAmount']
    try:
        amount = int(message)
    except:
        main.reply(sender, added_text + "Вы неправильно ввели сумму пополнения баланса. Введите сумму заново")
        return "again"

    if amount < minAmount:
        main.reply(sender, added_text + "Сумма пополнения баланса должна быть не менее " +
                   str(minAmount) + " тг. Введите сумму заново")
        return "again"
    if is_voice:
        main.reply_just_text(sender, added_text)

    main.reply_display_cards(sender, last_sender_message)
    operator = last_sender_message['mobileOperator']
    commission = 0
    if operator == 'Activ' or operator == 'Kcell':
        commission = amount / 10
        if commission > 70:
            commission = 70
    elif operator == 'Tele2' or operator == 'Beeline':
        commission = 50
    last_sender_message['commission'] = commission
    last_sender_message['payload'] = 'mobile.chooseCard'
    last_sender_message['amount'] = amount
    main.mongo_update_record(last_sender_message)
Example #4
0
def reply_pdd_shtrafy_iin_enter(sender, last_sender_message):
    pddIINs = []
    try:
        pddIINs = last_sender_message['pddIINs']
    except:
        last_sender_message['pddIINs'] = []

    try:
        assert len(pddIINs) > 0
        buttons = []
        for iin in pddIINs:
            buttons.append({
                "content_type": "text",
                "payload": "pddIIN.last",
                "title": iin
            })
        buttons.append({
            "content_type": "text",
            "payload": "pddIIN.delete",
            "title": "Удалить ИИН"
        })
        data_quick_replies = {
            "recipient": {
                "id": sender
            },
            "message": {
                "text": "Выберите ИИН или введите его\n" + hint_main_menu,
                "quick_replies": buttons
            }
        }
        requests.post(fb_url, json=data_quick_replies)
    except:
        main.reply(sender, "Введите 12-ти значный ИИН\n" + hint_main_menu)
    last_sender_message['payload'] = '4.IIN'
    main.mongo_update_record(last_sender_message)
Example #5
0
def reply_card2card_enter_cardDst(sender, last_sender_message):
    if main.check_login(sender, last_sender_message):
        try:
            cardDsts = last_sender_message['cardDsts']
            assert len(cardDsts) > 0
            buttons = []
            for card in cardDsts:
                card = helper.insert_4_spaces(card)
                buttons.append({"content_type": "text", "payload": "card2card.last", "title": card})
            buttons.append({"content_type": "text", "payload": "card2card.delete", "title": "Удалить карту"})
            buttons.append({"content_type": "text", "payload": "card2card.info", "title": "Информация"})
            data_quick_replies = {
                "recipient": {"id": sender},
                "message": {
                    "text": "Выберите номер карты получателя или введите его\n" + hint_main_menu,
                    "quick_replies": buttons
                }
            }
            requests.post(fb_url, json=data_quick_replies)
        except:
            main.reply(sender, card2card_info +
                       "\n\nВведите 16ти-значный номер карты, на который Вы хотите перевести деньги\n" + hint_main_menu)
        last_sender_message['lastCommand'] = 'card2card'
        last_sender_message['payload'] = 'card2card'
        main.mongo_update_record(last_sender_message)
Example #6
0
def reply_pdd_shtrafy_gosnomer_delete_gosnomer(sender, text,
                                               last_sender_message):
    last_sender_message['pddGosnomers'].remove(text)
    main.reply(sender, "Авто " + text + " успешно удалён")
    reply_pdd_shtrafy_gosnomer_enter(sender, last_sender_message)
    last_sender_message['payload'] = '4.GosNomer'
    main.mongo_update_record(last_sender_message)
Example #7
0
def handle_attachments(sender, last_sender_message, attachment):
    attachment_type = attachment['type']
    payload = last_sender_message['payload']
    if attachment_type == 'location':
        if payload == 'nearest.postamats' or payload == 'nearest.offices' or payload == 'nearest.atms':
            coordinates = attachment['payload']['coordinates']
            main.reply_nearest_find(sender, coordinates['long'],
                                    coordinates['lat'], payload)
        else:
            main.reply(sender,
                       "А для чего Вы мне отправили своё местоположение?")
    if attachment_type == 'audio':
        last_sender_message['sendVoice'] = True
        main.mongo_update_record(last_sender_message)
        try:
            t = threading.Thread(
                target=voice_assistant.handle_voice_message_yandex,
                args=(
                    sender,
                    attachment['payload']['url'],
                    last_sender_message,
                ))
            t.setDaemon(True)
            t.start()
        except:
            logging.error(helper.PrintException())
Example #8
0
def reply_tracking(sender, tracking_number, last_sender_message):
    tracking_number = tracking_number.upper()
    data = requests.get("https://post.kz/external-api/tracking/api/v2/" +
                        tracking_number + "/events").json()
    data2 = requests.get("https://post.kz/external-api/tracking/api/v2/" +
                         tracking_number).json()
    try:
        error = data2['error']
        main.reply(
            sender, error +
            '\n(Чтобы узнать статус другой посылки, отправьте её трек-номер либо нажмите (y) для перехода в главное меню)'
        )
        return "not found"
    except:
        new_mapping = requests.get(
            "https://post.kz/static/new_mappings.json").json()
        t_date = data['events'][0]['date']
        t_time = data['events'][0]['activity'][0]['time']
        t_datetime = t_date + " " + t_time
        t_status = data['events'][0]['activity'][0]['status'][0]
        t_address = data2['last']['address']
        t_status_mapping = new_mapping[t_status]['mapping']
        result = "Информация об отправлении " + tracking_number + '\n'
        result += "Статус: " + t_status_mapping + '\n' + t_address + '\n' + t_datetime + '\n'
        result += "(Чтобы узнать статус другой посылки, выберите или отправьте её трек-номер " \
                  "либо нажмите (y) для перехода в главное меню)" + '\n'

        if not tracking_number in last_sender_message['trackingNumbers'] and \
                        len(last_sender_message['trackingNumbers']) < 10:
            last_sender_message['trackingNumbers'].append(tracking_number)

        reply_tracking_quick_replies_with_delete(
            sender, last_sender_message['trackingNumbers'], result)
        main.mongo_update_record(last_sender_message)
        return "ok"
Example #9
0
def check_login_and_cards(sender, last_sender_message):
    try:
        encodedLoginPass = last_sender_message['encodedLoginPass']
        assert encodedLoginPass != None
        session = requests.Session()
        headers = {
            "Authorization": "Basic " + encodedLoginPass,
            'Content-Type': 'application/json'
        }
        url_login = '******'
        r = session.get(url_login, headers=headers)
        assert r.status_code != 401
    except:
        main.reply(
            sender,
            "Требуется авторизация, пожалуйста, отправьте логин и пароль профиля на post.kz через "
            "пробел. Если у вас нет аккаунта, то зарегистрируйтесь в https://post.kz/register"
        )
        last_sender_message['payload'] = 'auth'
        main.mongo_update_record(last_sender_message)
        return False

    hasCards = main.reply_has_cards(sender, last_sender_message)
    if not hasCards:
        main.reply(
            sender, "У вас отсутствуют добавленные карты в post.kz. "
            "Чтобы добавить, введите 16ти-значный номер карты")
        last_sender_message['payload'] = 'addcard'
        main.mongo_update_record(last_sender_message)
        return False

    return True
Example #10
0
def reply_onai(sender, message, last_sender_message, is_voice=None):
    added_text = ''
    if is_voice:
        added_text = 'Вы продиктовали номер ' + helper.insert_spaces_onai(message) + '.\n'
    url_login = '******'
    message = message.replace(' ', '')
    r = requests.post(url_login, json={"operatorId": "onai", "data": message})
    if r.status_code == 404:
        main.reply(sender, added_text + "Вы ввели неправильный номер карты Онай, введите еще раз")
        return "wrong onai number"

    if is_voice:
        buttons = [{"content_type": "text", "payload": "onai.again", "title": "Ввести номер заново"}]
        data_quick_replies = {
            "recipient": {"id": sender},
            "message": {
                "text": added_text + "Введите сумму пополнения баланса (не менее 100 тг, комиссия 0 тг)",
                "quick_replies": buttons
            }
        }
        requests.post(fb_url, json=data_quick_replies)
    else:
        main.reply(sender, added_text + "Введите сумму пополнения баланса (не менее 100 тг, комиссия 0 тг)")
    last_sender_message['onaiToRefill'] = message
    try:
        if not "onaisToRefill" in last_sender_message:
            last_sender_message['onaisToRefill'] = []
        if not message in last_sender_message['onaisToRefill'] and len(last_sender_message['onaisToRefill']) < 10:
            last_sender_message['onaisToRefill'].append(message)
    except:
        logging.error(helper.PrintException())

    last_sender_message['payload'] = 'onai.amount'
    main.mongo_update_record(last_sender_message)
Example #11
0
def reply_astanaErc_csc(sender, payload, last_sender_message):
    try:
        chosenCard = last_sender_message[payload]
        result = 'Проверьте суммы:\n'
        invoiceData = get_komuslugi_invoice(last_sender_message)
        c = 0
        sum = 0
        for i in invoiceData['details']:
            desc = i['description']
            invoiceData['details'][c]['amount'] = math.ceil(
                invoiceData['details'][c]['amount'])
            amount = i['amount']
            debt = i['debt']
            sum += amount + debt
            sum_str = ', сумма ' + str(amount + debt) + ' тг'
            result += desc + sum_str + '\n'
            c += 1
        result += "\nКарта: " + chosenCard
        result += "\nСумма: " + str(sum) + " тг"
        result += "\nКомиссия: 100 тг"
        result += "\nИтого: " + str(sum + 100.0) + " тг"
        result += "\n\nЕсли всё верно, введите трехзначный код CSC/CVV2 на обратной стороне карты"
        main.reply(sender, result)
    except:
        logging.error(helper.PrintException())
Example #12
0
def reply_intro(sender):
    fn, ln = get_firstname_lastname(sender)
    result = "Добро пожаловать в бот АО КазПочта, " + ln + " " + fn + "!\n"
    result += "Это небольшое видео о том, как пользоваться ботом.\n"
    result += "Чтобы открыть главное меню, нажмите (y)"
    main.reply_gif_desktop(sender)
    main.reply_gif_mobile(sender)
    main.reply(sender, result)
Example #13
0
    def raises_exception(self):
        start_time = time.time()
        with self.assertRaises(Exception):
            reply("A")
        end_time = time.time()

        elapsed_time = end_time - start_time

        print("test_perf took" + str(elapsed_time) + "seconds.")

        self.assertTrue(elapsed_time < 10)
Example #14
0
def reply_tracking_enter_number(sender, last_sender_message):
    if not 'trackingNumbers' in last_sender_message:
        last_sender_message['trackingNumbers'] = []
    trackingNumbers = last_sender_message['trackingNumbers']
    if len(trackingNumbers) > 0:
        text = "Выберите трек-номер или введите его\n" + hint_main_menu
        reply_tracking_quick_replies_with_delete(sender, trackingNumbers, text)
    else:
        main.reply(sender, "Введите трек-номер посылки\n" + hint_main_menu)
    last_sender_message['payload'] = 'tracking'
    main.mongo_update_record(last_sender_message)
Example #15
0
def reply_addcard_checkcardowner(sender, message, last_sender_message):
    last_sender_message['addcard_cardowner'] = message
    res = 'Проверьте данные:\n'
    res += 'Номер карты: ' + helper.insert_4_spaces(
        last_sender_message['addcard_cardnumber']) + '\n'
    res += 'Срок действия: ' + last_sender_message['addcard_expiredate'][:2] + '/' + \
                              last_sender_message['addcard_expiredate'][2:] + '\n'
    res += 'Имя на карте: ' + last_sender_message['addcard_cardowner'] + '\n'
    res += '\nЕсли всё верно, введите трехзначный код CSC/CVV2 на обратной стороне карты, чтобы добавить эту карту'
    last_sender_message['payload'] = 'addcard.csc'
    main.mongo_update_record(last_sender_message)
    main.reply(sender, res)
Example #16
0
def reply_onai_csc(sender, payload, last_sender_message):
    amount = last_sender_message['amount']
    onaiToRefill = last_sender_message['onaiToRefill']
    chosenCard = last_sender_message[payload]

    message = "Вы ввели:\n"
    message += "Номер карты Онай: " + onaiToRefill + '\n'
    message += "Сумма: " + str(amount) + " тг\n"
    message += "Карта: " + chosenCard + '\n\n'
    message += "Если всё верно, введите трехзначный код CSC/CVV2 на обратной стороне карты"

    main.reply(sender, message)
Example #17
0
def reply_mobile_csc(sender, payload, last_sender_message):
    amount = last_sender_message['amount']
    commission = last_sender_message['commission']
    phoneToRefill = last_sender_message['phoneToRefill']
    total = amount + commission
    chosenCard = last_sender_message[payload]

    message = "Вы ввели:\n"
    message += "Номер телефона: " + phoneToRefill + '\n'
    message += "Сумма: " + str(amount) + " тг\n"
    message += "Комиссия: " + str(commission) + " тг\n"
    message += "Итого: " + str(total) + " тг\n"
    message += "Карта: " + chosenCard + '\n\n'
    message += "Если всё верно, введите трехзначный код CSC/CVV2 на обратной стороне карты"

    main.reply(sender, message)
Example #18
0
def reply_addcard_entercard(sender, last_sender_message):
    cards = main.get_cards_json(sender, last_sender_message)
    if len(cards) > 0:
        res = 'Список добавленных карт:\n'
        for card in cards:
            if card['state'] != 'REGISTERED':
                continue
            card_title = card['title']
            if len(card_title) > 20:
                card_title = card['brand'] + ' *' + card['alias']
            res += card_title + '\n'
        res += '\nЕсли Вы хотите добавить карту, введите 16ти-значный номер карты'
        main.reply(sender, res)
    else:
        main.reply(sender,
                   'Чтобы добавить карту, введите 16ти-значный номер карты')
Example #19
0
def get_komuslugi(last_sender_message, data):
    message = data['data']
    result = ''
    session = requests.Session()
    status = 'FAILED'
    try:
        headers = {
            "Authorization":
            "Basic " + last_sender_message['encodedLoginPass'],
            'Content-Type': 'application/json'
        }
        url_login = '******'
        r = session.get(url_login, headers=headers)

        url_login = '******'
        r = session.post(url_login, json=data)
        data = r.json()
        status = data['responseInfo']['status']
        if status == 'FAILED':
            result = 'Квитанций по лицевому счёту ' + message + ' не найдено\n'
        else:
            sum = 0
            subscriptionId = str(r.json()['subscriptionData']['id'])
            url_login = '******' + subscriptionId + '/invoices'
            data = session.get(url_login).json()
            status = data['responseInfo']['status']
            invoiceData = data['invoiceData'][0]
            result = 'Информация по лицевому счёту ' + message + '\n'
            result += invoiceData['description'] + '\n\n'
            for i in invoiceData['details']:
                desc = i['description']
                amount = i['amount']
                amount_str = ', сумма ' + str(amount) + ' тг'
                debt = i['debt']
                sum += amount + debt
                debt_str = ''
                if debt > 0:
                    debt_str = ', долг ' + str(debt) + ' тг'
                result += desc + debt_str + amount_str + '\n'
            result += '\nИтого: ' + format(sum, '.2f') + ' тг'
    except:
        main.reply(last_sender_message['sender'],
                   "Произошла непредвиденная ошибка, попробуйте позднее")
        logging.error(helper.PrintException())
        return 'error', status
    return result, status
Example #20
0
def get_komuslugi_invoice(last_sender_message):
    message = last_sender_message['astanaErc_last_acc']
    data = {'operatorId': 'astanaErcWf', 'data': message}
    invoiceData = {}
    try:
        session = main.get_authorized_session(
            last_sender_message['encodedLoginPass'])
        url_login = '******'
        r = session.post(url_login, json=data)
        subscriptionId = str(r.json()['subscriptionData']['id'])
        url_login = '******' + subscriptionId + '/invoices'
        data = session.get(url_login).json()
        invoiceData = data['invoiceData'][0]
    except:
        main.reply(last_sender_message['sender'],
                   "Произошла непредвиденная ошибка, попробуйте позднее")
        logging.error(helper.PrintException())
    return invoiceData
Example #21
0
def reply_pdd_shtrafy_iin(sender, message, last_sender_message):
    main.reply_typing_on(sender)
    try:
        year = int(message[:2])
        month = int(message[2:4])
        day = int(message[4:6])
        century = int(message[6:7])
        assert month <= 12
        month31days = [1, 3, 5, 7, 8, 10, 12]
        month30days = [4, 6, 9, 11]
        if year % 4 == 0 and month == 2:
            assert day <= 28
        if month in month30days:
            assert day <= 30
        if month in month31days:
            assert day <= 31
        assert century <= 6
    except:
        main.reply(sender, "Вы ввели неправильный ИИН, введите еще раз")
        return "again"
    url_login = '******' + message
    r = requests.get(url_login).json()
    try:
        name = r['name']
    except:
        main.reply(sender, "Такой ИИН не найден, введите еще раз")
        return "again"

    data = {'operatorId': 'pddIin', 'data': message}
    result = check_penalties_pdd(last_sender_message, data)
    try:
        if not "pddIINs" in last_sender_message:
            last_sender_message['pddIINs'] = []
        if not message in last_sender_message['pddIINs'] and len(
                last_sender_message['pddIINs']) < 10:
            last_sender_message['pddIINs'].append(message)
    except:
        logging.error(helper.PrintException())

    result += "(Выберите или введите другой ИИН, чтобы посмотреть штрафы ПДД, " \
              "либо нажмите (y) для перехода в главное меню)"
    reply_pdd_shtrafy_iin_quick_replies_with_delete(
        sender, last_sender_message['pddIINs'], result)
    main.mongo_update_record(last_sender_message)
Example #22
0
def handle_voice_message(sender, voice_url, last_sender_message):
    logging.info("Handling audio")
    try:
        main.reply_typing_on(sender)
        start = time.time()
        g = requests.get(voice_url, stream=True)
        logging.info('requests.get(voice_url) time = ' +
                     str(time.time() - start))
        voice_filename = "voice_" + sender + ".mp4"
        #voice_filename_mp3 = "voice_" + sender + ".mp3"
        voice_filename_wav = "voice_" + sender + ".wav"
        with open(voice_filename, "wb") as o:
            start = time.time()
            o.write(g.content)
            logging.info('o.write(g.content) time = ' +
                         str(time.time() - start))
        start = time.time()
        #AudioSegment.from_file(voice_filename, "mp4").export(voice_filename_mp3, format="mp3")
        AudioSegment.from_file(voice_filename,
                               "mp4").export(voice_filename_wav, format="wav")
        logging.info('AudioSegment export time = ' + str(time.time() - start))
        with open(voice_filename_wav, 'rb') as f:
            try:
                start = time.time()
                resp = client.speech(f, None, {'Content-Type': 'audio/wav'})
                if "_text" in resp:
                    main.reply(sender, resp['_text'])
                logging.info('Wit.ai client.speech response time = ' +
                             str(time.time() - start))
                logging.info('Yay, got Wit.ai response: ' + str(resp))
                handle_entities(sender, last_sender_message, resp)
            except:
                logging.info(helper.PrintException())
                main.reply(sender, "Извините, я не поняла что Вы сказали")
        main.reply_typing_off(sender)
        try:
            os.remove(voice_filename)
            #os.remove(voice_filename_mp3)
            os.remove(voice_filename_wav)
        except:
            pass
    except:
        logging.error(helper.PrintException())
Example #23
0
def reply_onai_enter_number(sender, last_sender_message):
    try:
        onaisToRefill = last_sender_message['onaisToRefill']
        assert len(onaisToRefill) > 0
        buttons = []
        for onai in onaisToRefill:
            onai = helper.insert_space_onai(onai)
            buttons.append({"content_type": "text", "payload": "onai.last", "title": onai})
        buttons.append({"content_type": "text", "payload": "onai.delete", "title": "Удалить карту"})
        data_quick_replies = {
            "recipient": {"id": sender},
            "message": {
                "text": "Выберите карту Онай или введите его\n" + hint_main_menu,
                "quick_replies": buttons
            }
        }
        requests.post(fb_url, json=data_quick_replies)
    except:
        main.reply(sender, "Введите 19ти-значный номер карты Онай\n" + hint_main_menu)
Example #24
0
def reply_card2card_csc(sender, payload, last_sender_message):
    amount = last_sender_message['amount']
    commission = amount * 1.2 / 100;
    if commission < 300:
        commission = 300
    lastCardDst = helper.insert_4_spaces(last_sender_message['lastCardDst'])
    total = amount + commission
    last_sender_message['commission'] = commission
    last_sender_message['total'] = commission
    chosenCard = last_sender_message[payload]

    message = "Вы ввели:\n"
    message += "Номер карты пополнения: " + lastCardDst + '\n'
    message += "Сумма: " + str(amount) + " тг\n"
    message += "Комиссия: " + str(commission) + " тг\n"
    message += "Итого: " + str(total) + " тг\n"
    message += "Карта: " + chosenCard + '\n\n'
    message += "Если всё верно, введите трехзначный код CSC/CVV2 на обратной стороне карты"

    main.reply(sender, message)
Example #25
0
def card_registration_confirm(sender, message, last_sender_message):
    message = message.replace('.', '')
    message = message.replace(' ', '')
    session = main.get_authorized_session(
        last_sender_message['encodedLoginPass'])

    phone = last_sender_message['mobileNumber']
    token = last_sender_message['token']
    url_confirmation = 'https://post.kz/mail-app/api/intervale/card/registration/confirm/' + token
    data = {'blockedAmount': message, 'phone': phone}
    r = session.post(url_confirmation, json=data)
    d = r.json()
    if d['state'] == 'confirmation':
        main.reply(
            sender, "Вы ввели неправильную сумму, осталось " +
            str(d['attempts']) + " попытки. Введите сумму ещё раз")
        return "wrongamount"
    if d['state'] == 'result':
        status = d['result']['status']
        if status == 'success':
            res = "Поздравляю! Карта успешно добавлена!"
            main.reply(sender, res)
        if status == 'fail':
            main.reply(sender, "Карта не была добавлена. Попробуйте снова")
        main.reply_main_menu_buttons(sender, last_sender_message)
        return "ok"
Example #26
0
def handle_messages_when_deactivated(sender, data, last_sender_message):
    try:
        sticker_id = data['entry'][0]['messaging'][0]['message']['sticker_id']
        data_quick_replies = {
            "recipient": {
                "id": sender
            },
            "message": {
                "text":
                "Вы хотите включить бота?",
                "quick_replies": [{
                    "content_type": "text",
                    "title": "Да, включить бота",
                    "payload": "activate.bot"
                }, {
                    "content_type": "text",
                    "title": "Нет",
                    "payload": "deactivate.bot"
                }]
            }
        }
        requests.post(fb_url, json=data_quick_replies)
        return
    except:
        pass

    try:
        payload = data['entry'][0]['messaging'][0]['message']['quick_reply'][
            'payload']
        if payload == 'activate.bot':
            last_sender_message['isBotActive'] = True
            main.mongo_update_record(last_sender_message)
            main.reply(sender, "Бот включен")
            main.reply_main_menu_buttons(sender, last_sender_message)
        if payload == 'deactivate.bot':
            main.reply(
                sender,
                "Хорошо! Если Вы хотите включить бота, нажмите кнопку (y)")
    except:
        return
Example #27
0
def reply_card2card_check_cardDst(sender, message, last_sender_message, is_voice=None):
    added_text = ''
    if is_voice:
        added_text = 'Вы продиктовали номер карты ' + helper.insert_4_spaces(message) + '.\n'
    message = message.replace(' ', '')
    if len(message) != 16:
        main.reply(sender, added_text + "Вы ввели не все 16 цифр карты, попробуйте ещё раз")
        return "cardDst.again"
    if not message.isdigit():
        main.reply(sender, added_text + "Некоторые введенные Вами цифры не являются цифрами, попробуйте ещё раз")
        return "cardDst.again"
    if is_voice:
        buttons = [{"content_type": "text", "payload": "card2card.again", "title": "Ввести номер заново"}]
        data_quick_replies = {
            "recipient": {"id": sender},
            "message": {
                "text": added_text + "Введите сумму перевода (от 500 до 494070; комиссия 1,2%, минимум 300 тенге)\n" + hint_main_menu,
                "quick_replies": buttons
            }
        }
        requests.post(fb_url, json=data_quick_replies)
    else:
        main.reply(sender, "Введите сумму перевода (от 500 до 494070; комиссия 1,2%, минимум 300 тенге)\n" + hint_main_menu)

    last_sender_message['lastCardDst'] = message
    last_sender_message['payload'] = 'card2card.amount'
    try:
        if not "cardDsts" in last_sender_message:
            last_sender_message['cardDsts'] = []
        if not message in last_sender_message['cardDsts'] and len(last_sender_message['cardDsts']) < 9:
            last_sender_message['cardDsts'].append(message)
    except:
        logging.error(helper.PrintException())
    main.mongo_update_record(last_sender_message)
Example #28
0
def reply_card2card_amount(sender, message, last_sender_message, is_voice=None):
    added_text = ''
    if is_voice:
        added_text = 'Вы продиктовали сумму ' + message + '.\n'
    amount = 0
    minAmount = 500
    maxAmount = 494070
    try:
        amount = int(message)
    except:
        main.reply(sender, added_text + "Вы неправильно ввели сумму перевода. Введите сумму заново")
        return "again"

    if amount < minAmount:
        main.reply(sender, added_text + "Сумма перевода должна быть не менее " + str(minAmount) + " тг. Введите сумму заново")
        return "again"

    if amount > maxAmount:
        main.reply(sender, added_text + "Сумма перевода должна быть не более " + str(maxAmount) + " тг. Введите сумму заново")
        return "again"
    if is_voice:
        main.reply_just_text(sender, added_text)
    last_sender_message['payload'] = 'card2card.chooseCard'
    last_sender_message['amount'] = amount
    main.mongo_update_record(last_sender_message)
    main.reply_display_cards(sender, last_sender_message)
Example #29
0
def reply_astanaErc_enter(sender, last_sender_message):
    astanaErc_accounts = []
    try:
        astanaErc_accounts = last_sender_message['astanaErc_accounts']
    except:
        last_sender_message['astanaErc_accounts'] = []

    try:
        assert len(astanaErc_accounts) > 0
        buttons = []
        for acc in astanaErc_accounts:
            buttons.append({
                "content_type": "text",
                "payload": "astanaErc.last",
                "title": acc
            })
        buttons.append({
            "content_type": "text",
            "payload": "astanaErc.delete",
            "title": "Удалить лицевой счёт"
        })
        data_quick_replies = {
            "recipient": {
                "id": sender
            },
            "message": {
                "text":
                "Выберите номер лицевого счёта Астана ЕРЦ или введите его\n" +
                main.hint_main_menu,
                "quick_replies":
                buttons
            }
        }
        requests.post(fb_url, json=data_quick_replies)
    except:
        main.reply(
            sender,
            "Введите номер лицевого счёта Астана ЕРЦ\n" + main.hint_main_menu)
    last_sender_message['payload'] = 'astanaErc.enter'
    main.mongo_update_record(last_sender_message)
Example #30
0
def reply_pdd_shtrafy_gosnomer_enter(sender, last_sender_message):
    pddGosnomers = []
    try:
        pddGosnomers = last_sender_message['pddGosnomers']
    except:
        last_sender_message['pddGosnomers'] = []

    try:
        assert len(pddGosnomers) > 0
        buttons = []
        for gn in pddGosnomers:
            buttons.append({
                "content_type": "text",
                "payload": "pddGosnomer.last",
                "title": gn
            })
        buttons.append({
            "content_type": "text",
            "payload": "pddGosnomer.delete",
            "title": "Удалить авто"
        })
        data_quick_replies = {
            "recipient": {
                "id": sender
            },
            "message": {
                "text":
                "Выберите номер авто/техпаспорт или введите из через пробел (пример: 123AAA01 AA00000000)\n"
                + hint_main_menu,
                "quick_replies":
                buttons
            }
        }
        requests.post(fb_url, json=data_quick_replies)
    except:
        main.reply(sender, gosnomer_text + "\n" + hint_main_menu)
    last_sender_message['payload'] = '4.GosNomer'
    main.mongo_update_record(last_sender_message)