Example #1
0
def checkAnswer(viber_id, text):
    print('checking answer')
    session = Session()
    user = session.query(User).filter(User.viber_id == viber_id).first()
    print('user was found')
    if text == (session.query(Word).join(User).filter(
            Word.id == user.currentword_id)).first().translation:
        print('finding')
        # обновление слова в таблице learning
        str = session.query(Learning).filter(Learning.user_id == user.id) \
            .filter(Learning.word == user.currentword_id).first()
        # user = session.query(User).filter(User.viber_id == viber_request.sender.id).first()
        if (str != None):
            str.last_time_answer_word = datetime.datetime.utcnow()
            str.right_answers += 1
            session.commit()
        else:
            user.words.append(
                Learning(word=user.currentword_id, right_answers=1))
            session.commit()
        user.correct_answers_session += 1
        session.commit()
        viber.send_messages(viber_id, [TextMessage(text=f"Верно!")])
    else:
        viber.send_messages(viber_id, [TextMessage(text=f"Неверно!")])
    user.questionCount_session += 1
    # обновление последнего времени ответа
    user.last_answer_time = datetime.datetime.utcnow()
    session.commit()
    session.close()
Example #2
0
File: view.py Project: Dima-31/AWS
def trx_bot(request, a1=None):
    if request.method == "POST":
        viber = json.loads(request.body.decode('utf-8'))
        print(viber)
        if viber['event'] == 'conversation_started':
            id = viber['sender']['id']
            viber_api.send_messages(
                id, [TextMessage(text='Рады видеть!'), START_KEYBOARD])
        elif viber['event'] == 'webhook':
            #print(viber)
            #print("Webhook успешно установлен")
            return HttpResponse(status=200)
        elif viber['event'] == 'message':
            id = viber['sender']['id']
            msg = viber['message']['text']
            # если полученный текст есть в списке команд
            if msg in all_cmdlist:
                exect_cmd(id, msg)
            else:
                viber_api.send_messages(id, [
                    TextMessage(text='Ваша команда не найдена'), START_KEYBOARD
                ])
            send_text(id, a1)
        else:
            # print("Это не Webhook - пробуй еще раз, или используй POSTMAN")
            return HttpResponse(status=200)
        return HttpResponse(status=200)
Example #3
0
def incoming():
    logger.debug("received request. post data: {0}".format(request.get_data()))
    print("received request. post data: {0}".format(request.get_data()))
    # every viber message is signed, you can verify the signature using this method
    if not viber.verify_signature(
            request.get_data(),
            request.headers.get('X-Viber-Content-Signature')):
        return Response(status=403)

    # this library supplies a simple way to receive a request object
    viber_request = viber.parse_request(request.get_data())

    if isinstance(viber_request, ViberMessageRequest):
        text_message = TextMessage(text="Ты заебал! Звони сюда!")
        message = viber_request.message

        contact = Contact(name="Bato Rinchinov",
                          phone_number="+79913693190",
                          avatar="http://link.to.avatar")
        contact_message = ContactMessage(contact=contact)

        viber.send_messages(viber_request.sender.id,
                            [text_message, contact_message])

    elif isinstance(viber_request, ViberSubscribedRequest):
        viber.send_messages(viber_request.get_user.id,
                            [TextMessage(text="thanks for subscribing!")])

    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn("client failed receiving message. failure: {0}".format(
            viber_request))

    return Response(status=200)
def answer(text, game):
    session = Session()
    text = eval(text)
    if text[0] == game.count_all:
        if text[1] == game.word["translation"]:
            # счётчик правильных ответов
            game.count_correct += 1
            user_id = session.query(
                Users.user_id).filter(Users.viber_id == game.viber_id)
            learning = session.query(Learning).filter(
                Learning.user_id == user_id).filter(
                    Learning.word == game.word["word"]).first()
            learning.correct_answer += 1
            session.commit()
            bot_response = TextMessage(
                text=
                f'Вопрос № {game.count_all + 1}. Ответ [{text[1]}] верный :)')
        else:
            bot_response = TextMessage(
                text=
                f'Вопрос № {game.count_all + 1}. Ответ [{text[1]}] неверный :('
            )
        # всего ответов
        game.count_all += 1
        viber.send_messages(game.viber_id, [bot_response])
        return True
    session.close()
    return False
Example #5
0
def accept_task(r, user):
    task_id = r.message.text.split('#')[-1]
    task = Task.objects.get(id=task_id)
    TaskEmployee.objects.update_or_create({'accepted': True},
                                          task=task,
                                          employee=user.employee)
    messages = [
        TextMessage(text=f"Вы приняли задачу \"{task.name}\""),
        TextMessage(text=f"{task.name}\n\n{task.text}")
    ]
    if task.file:
        messages.append(
            FileMessage(media=settings.VIBER_MEDIA_HOST + task.file.url,
                        file_name=task.file.name,
                        size=task.file.size,
                        min_api_version=MIN_API_VERSION))
    rich_media = {
        "ButtonsGroupRows":
        1,
        "ButtonsGroupColumns":
        3,
        "Buttons": [{
            **DEFAULT_BUTTON,
            "Columns": 3,
            "ActionType": "reply",
            "Silent": "true",
            "ActionBody": f"/start_report_task#{task.id}",
            "Text": "<b>Отчёт</b>",
        }]
    }
    messages.append(
        RichMediaMessage(rich_media=rich_media,
                         min_api_version=MIN_API_VERSION,
                         keyboard=get_default_keyboard(user.employee)))
    viber.send_messages(r.sender.id, messages)
Example #6
0
def send_message(round, correct):
    """
    отправка вопроса пользователю и
    :param round: раунд пользователя, которому отправляется вопрос
    :param correct: правильность введенного перевода слова
    """
    # отправка сообщения о правильности введенного перевода слова
    if correct is not None:
        viber.send_messages(round.viber_id, TextMessage(text=correct))
    # отправка вопроса о переводе слова
    if round.count_answers < 10:
        choose_word(round)
        bot_response = TextMessage(
            text=
            f"{round.count_answers + 1}. Как переводится слово {round.word['word']}",
            keyboard=CreateKeyboard(round),
            tracking_data='tracking_data')
        viber.send_messages(round.viber_id, [bot_response])
    # отправка о результате раунда
    else:
        bot_response = TextMessage(
            text=
            f"{round.correct_count} верных из {round.count_answers} заданных",
            keyboard=START_KEYBOARD,
            tracking_data='tracking_data')
        viber.send_messages(round.viber_id, [bot_response])
Example #7
0
 def post(self, request):
     viber_request = viber.parse_request(request.body)
     print(viber_request)
     if isinstance(viber_request, ViberMessageRequest):
         viber_user = ViberUser.objects.get_or_create(
             viber_id=viber_request.sender.id,
             defaults={
                 'name': viber_request.sender.name,
                 'avatar': viber_request.sender.avatar
             })
         if isinstance(viber_request.message, TextMessage):
             viber.send_messages(viber_request.sender.id,
                                 viber_request.message)
         elif isinstance(viber_request.message, PictureMessage):
             viber.send_messages(viber_request.sender.id,
                                 TextMessage(text='Спасибо за картинку!'))
     elif isinstance(viber_request, ViberUnsubscribedRequest):
         ViberUser.objects.update_or_create(viber_id=viber_request.user_id,
                                            defaults={'is_active': False})
     elif isinstance(viber_request, ViberSubscribedRequest):
         ViberUser.objects.update_or_create(viber_id=viber_request.user.id,
                                            defaults={
                                                'is_active':
                                                True,
                                                'name':
                                                viber_request.user.name,
                                                'avatar':
                                                viber_request.user.avatar
                                            })
         viber.send_messages(
             viber_request.user.id,
             TextMessage(text='Спасибо за подписку!',
                         tracking_data='пользователь подписался'))
     return HttpResponse(status=200)
Example #8
0
def incoming():
    logger.debug("received request. post data: {0}".format(request.get_data()))

    #All messages must be signed (it is by default)
    if not viber.verify_signature(
            request.get_data(),
            request.headers.get('X-Viber-Content-Signature')):
        #Error if not signed
        return Response(status=403)

    viber_request = viber.parse_request(request.get_data())

    #Check type of request

    #Answer any message
    if isinstance(viber_request, ViberMessageRequest):
        text_message = TextMessage(text=random.choice(
            ['Foo', 'Lumberjack', 'Спасибо Кириллу за Кириллицу!']))
        viber.send_messages(viber_request.sender.id, [text_message])

    #Thank user for subscription
    elif isinstance(viber_request, ViberSubscribedRequest):
        viber.send_messages(viber_request.sender.id,
                            [TextMessage(text='Thaks for subscription!')])

    #Errors should never pass silently
    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn("client failed receiving message. failure: {0}".format(
            viber_request))

    return Response(status=200)
Example #9
0
def incoming():
    # Base.metadata.create_all(engine)
    session = Session()
    viber_request = viber.parse_request(request.get_data())
    # отправка приветственного сообщения и стартовой клавиатуры
    if isinstance(viber_request, ViberConversationStartedRequest):
        viber_user = viber_request.user.id
        if len(session.query(User).filter(
                User.viber_id == viber_user).all()) == 0:
            add_user = User(name=viber_request.user.name,
                            viber_id=viber_user,
                            last_time_visit=datetime.datetime.utcnow())
            session.add(add_user)
            session.commit()
        new_round = Round(viber_user)
        user_round[viber_user] = new_round
        viber.send_messages(viber_user, [
            TextMessage(text=CreateStartInfo(
                session.query(User).filter(
                    User.viber_id == viber_user).first()),
                        keyboard=START_KEYBOARD,
                        tracking_data='tracking_data')
        ])
    if isinstance(viber_request, ViberMessageRequest):
        user = session.query(User).filter(
            User.viber_id == viber_request.sender.id).first()
        round = get_round(user.viber_id)
        message = viber_request.message
        if isinstance(message, TextMessage):
            # получаем сообщение от пользователя
            text = message.text
            if text == 'Старт':
                user.last_time_visit = datetime.datetime.utcnow()
                user.time_reminder = datetime.datetime.utcnow(
                ) + datetime.timedelta(minutes=30)
                session.commit()
                round.correct_count = 0
                round.count_answers = 0
                send_message(round, None)
            elif text == "Информация":
                viber.send_messages(user.viber_id, [
                    TextMessage(text=CreateStartInfo(
                        session.query(User).filter(
                            User.viber_id == user.viber_id).first()),
                                keyboard=START_KEYBOARD,
                                tracking_data='tracking_data')
                ])
            elif text == 'Пример использования':
                send_example(round)
            elif text == 'Напомнить  через 30 минут':
                user.time_reminder = datetime.datetime.utcnow(
                ) + datetime.timedelta(minutes=30)
                session.commit()
            else:
                get_answer(text, round)
    session.close()
    return Response(status=200)
Example #10
0
def dispatchUnifiedMessage(unified_message):
    if __MESSENGER_TYPE__ != unified_message['bot_config']['type']:
        return None
    try:
        bot = getCurBotAPIRuntime(unified_message['bot_config'])

        # Если есть адресат, то осмысленно отвечаем ему
        if unified_message['chat_id'] != "":
            # Инициализация клавиатуры
            response_keyboard = copy.deepcopy(__KEYBOARD_TEMPLATE__)

            # Подготовка текстового сообщения
            response_text = ""
            response_command_text = ""
            for text in unified_message['response_text']:
                response_text = response_text + u'\r\n' + text

            # Подготовка комманд (кнопок)
            for response_command in unified_message['response_commands']:
                if response_command.lower() not in response_command_text.lower(
                ):
                    response_keyboard_button = copy.deepcopy(
                        __KEYBOARD_BUTTON_TEMPLATE__)
                    response_keyboard_button['Text'] = response_command
                    response_keyboard_button['ActionBody'] = response_command
                    response_keyboard['Buttons'] = response_keyboard[
                        'Buttons'] + [response_keyboard_button]
                response_command_text = response_command_text + response_command

            # Отправка сообщения боту
            if len(response_keyboard['Buttons']) > 0:
                bot.send_messages(unified_message['chat_id'], [
                    TextMessage(text=response_text, keyboard=response_keyboard)
                ])
            else:
                bot.send_messages(unified_message['chat_id'],
                                  [TextMessage(text=response_text)])

# Если прищло нечто без адресата (скорее всего событие), то ответим только статусом 200 ОК
        if unified_message['chat_id'] == "":
            return unified_message

    except Exception as exc:
        exc_type, exc_obj, tb = sys.exc_info()
        app_log.appendLog(u"*** Exception caught during message dispatch: " +
                          str(exc) + ", line " + str(tb.tb_lineno))
        bot.send_messages(unified_message['chat_id'], [
            TextMessage(
                text=
                "Ууууп-с.. похоже что-то пошло не так.. дай-ка мне немного времени, я смогу ответить на твои вопросы позже."
            )
        ])

    return unified_message
Example #11
0
def process(id, msg) -> bool:
    # Мы обрабатываем ТОЛЬКО свои метки и шлем команды. Возвращает True если надо отправить главное меню.
    if msg == cmd_main:
        viber_api.send_messages(id, [TextMessage(text='Какой вид отдыха вас интересует?'), MAIN_KEYBOARD])
        return False

    if msg == cmd_rost_v1:
        viber_api.send_messages(id, [TextMessage(text=rost()+' :)'),])
        return True

    elif msg == cmd_rost_v2:
        viber_api.send_messages(id, [TextMessage(text=rost_2()+' :)')])
        return True
Example #12
0
def message_task():
    messages = Message.objects.filter(status='READY')
    for message in messages:
        if message.key is not None:
            viber.send_messages(to=message.user.viber_id,
                                messages=[
                                    TextMessage(text=message.text,
                                                keyboard=message.key)
                                ])
        else:
            viber.send_messages(to=message.user.viber_id,
                                messages=[TextMessage(text=message.text)])
        message.status = 'POST'
        message.date_status = timezone.now()
        message.save()
Example #13
0
def send_example(viber_id):
    session = Session()
    select_query = session.query(Users.question).filter(Users.viber_id == viber_id).one()
    session.close()
    question = eval(select_query[0])
    return TextMessage(text=f'{random.choice(question["examples"])}',
                       keyboard=KEYBOARD2, tracking_data='tracking_data')
Example #14
0
def report_task(r, user):
    task_id = r.message.text.split('#')[-1]
    task = Task.objects.get(id=task_id)
    viber.send_messages(r.sender.id, [TextMessage(text='Введите текст')])
    data = {'id': task.id}
    user.state = f'report_task#w-text#{json.dumps(data)}'
    user.save()
Example #15
0
def update_time(viber_id):
    session = Session()
    update_query = session.query(Users).filter(Users.viber_id == viber_id).one()
    update_query.dt_last_answer = datetime.utcnow()
    session.commit()
    session.close()
    return TextMessage(text='Оки-доки, напомню тебе чуть позже!')
Example #16
0
 def message(self):
     return TextMessage(
         tracking_data=self.tracking_data,
         keyboard=self.keyboard,
         text=self.text,
         min_api_version=self.min_api_version,
     )
Example #17
0
    def thread_save_to_disk(self, user_id, note, file_url):
        """Saves data to Yandex Disk and sends report to user_id"""
        logging.debug("Saving Thread started")
        response_text = 'Saved'
        # if text note provided
        if note:
            logging.debug("Saving note")
            if not self.disk.save_note(note):
                response_text = 'Cannot save note.'
        # if file provided
        if file_url:
            logging.debug("Saving file")
            # extract filename from URL
            url_parsed = urlparse(file_url)
            filename = os.path.basename(url_parsed.path)
            # download file to temp directory
            with urllib.request.urlopen(file_url) as response:
                logging.debug("Downloading file from Viber server")
                data = response.read()
                logging.debug("Uploading file to Disk")
                # upload file to Disk
                if not self.disk.save_file(filename, data):
                    response_text = 'Cannot save file.'

        message = TextMessage(text=response_text)
        self.viber.send_messages(user_id, [message])
        return
Example #18
0
def test_send_message_sanity():
    to = "012345A="
    text = "hi!"
    message_token = "a token"
    chat_id = 'my chat id sample'

    def post_request(endpoint, payload):
        data = json.loads(payload)
        assert endpoint == BOT_API_ENDPOINT.SEND_MESSAGE
        assert data['auth_token'] == VIBER_BOT_CONFIGURATION.auth_token
        assert data['receiver'] == to
        assert data['sender']['name'] == VIBER_BOT_CONFIGURATION.name
        assert data['sender']['avatar'] == VIBER_BOT_CONFIGURATION.avatar
        assert data['text'] == text
        assert data['chat_id'] == chat_id
        return dict(status=0, message_token=message_token)

    request_sender = Stub()
    request_sender.post_request = post_request

    text_message = TextMessage(text=text)

    message_sender = MessageSender(LOGGER, request_sender,
                                   VIBER_BOT_CONFIGURATION)
    token = message_sender.send_message(to, VIBER_BOT_CONFIGURATION.name,
                                        VIBER_BOT_CONFIGURATION.avatar,
                                        text_message, chat_id)
    assert token == message_token
Example #19
0
def incoming():
    viber_request = viber.parse_request(request.get_data())
    print(viber_request)
    if isinstance(viber_request, ViberConversationStartedRequest):
        # идентификация/добавление нового пользователя
        new_current_id = viber_request.user.id
        db.add_user(new_current_id)
        viber.send_messages(viber_request.user.id, [
            TextMessage(
                text=
                'Бот предназначен для заучивания английских слов, для начала нажмите кнопку снизу.',
                keyboard=KEYBOARD1,
                tracking_data='tracking_data')
        ])
    if isinstance(viber_request, ViberMessageRequest):
        current_id = viber_request.sender.id
        message = viber_request.message
        if isinstance(message, TextMessage):
            text = message.text
            print(text)
            # чтение введёного текста
            if text == "Давай начнём!":
                bot_response = db.send_question(current_id)
                viber.send_messages(current_id, bot_response)
            elif text == "Показать пример":
                bot_response = db.send_example(current_id)
                viber.send_messages(current_id, bot_response)
            else:
                bot_response_1 = db.check_answer(current_id, text)
                bot_response_2 = db.send_question(current_id)
                viber.send_messages(current_id,
                                    [bot_response_1, bot_response_2])
    return Response(status=200)
Example #20
0
 def check_answer(self, viber_id, user_answer):
     check = 'Неверно'
     select_query = """
             select question, user_id
             from users
             where viber_id = ?
             """
     ret_value = self.conn.execute(select_query, (viber_id,)).fetchone()
     question = eval(ret_value['question'])
     update_query = """
             update users set all_answers = all_answers + 1, dt_last_answer = ?
             where viber_id = ?
             """
     self.conn.execute(update_query, (datetime.now(), viber_id))
     self.conn.commit()
     if user_answer == question['translation']:
         update_query1 = """
                         update users set correct_answers = correct_answers + 1
                         where viber_id = ?
                         """
         self.conn.execute(update_query1, (viber_id,))
         self.conn.commit()
         update_query2 = """
                         update learning set right_answer = right_answer + 1, dt_last_answer = ?
                         where word = ? and user_id = ?
                         """
         self.conn.execute(update_query2, (datetime.now(), question['word'], ret_value['user_id']))
         self.conn.commit()
         select_query = """
                         select right_answer from learning
                         where word = ? and user_id = ?
                         """
         ret_value2 = self.conn.execute(select_query, (question['word'], ret_value['user_id'])).fetchone()
         check = f'Верно. Количество правильных ответов: {ret_value2["right_answer"]}'
     return TextMessage(text=check, keyboard=KEYBOARD2, tracking_data='tracking_data')
Example #21
0
 def language_uk(self, viber_request):
     vuser = ViberUser.objects.get(viber_id=viber_request.sender.id)
     vuser.language = "uk"
     vuser.save()
     viber.send_messages(viber_request.sender.id, [TextMessage(text='Мову змінено на Українську')])
     activate(vuser.language)
     botton_main_disp(viber_request)
Example #22
0
 def language_en(self, viber_request):
     vuser = ViberUser.objects.get(viber_id=viber_request.sender.id)
     vuser.language = "en"
     vuser.save()
     viber.send_messages(viber_request.sender.id, [TextMessage(text='Language changed to English')])
     activate(vuser.language)
     botton_main_disp(viber_request)
Example #23
0
 def language_ru(self, viber_request):
     vuser = ViberUser.objects.get(viber_id=viber_request.sender.id)
     vuser.language = "ru"
     vuser.save()
     viber.send_messages(viber_request.sender.id, [TextMessage(text='Язык изменен на Русский')])
     activate(vuser.language)
     botton_main_disp(viber_request)
Example #24
0
def test_post_to_public_account_sanity():
    sender = "012345A="
    text = "hi!"
    message_token = "a token"

    def post_request(endpoint, payload):
        data = json.loads(payload)
        assert endpoint == BOT_API_ENDPOINT.POST
        assert data['auth_token'] == VIBER_BOT_CONFIGURATION.auth_token
        assert data['from'] == sender
        assert data['sender']['name'] == VIBER_BOT_CONFIGURATION.name
        assert data['sender']['avatar'] == VIBER_BOT_CONFIGURATION.avatar
        assert data['text'] == text
        return dict(status=0, message_token=message_token)

    request_sender = Stub()
    request_sender.post_request = post_request

    text_message = TextMessage(text=text)

    message_sender = MessageSender(LOGGER, request_sender,
                                   VIBER_BOT_CONFIGURATION)
    token = message_sender.post_to_public_account(
        sender, VIBER_BOT_CONFIGURATION.name, VIBER_BOT_CONFIGURATION.avatar,
        text_message)
    assert token == message_token
Example #25
0
def check_answer(viber_id, user_answer):
    check = 'К сожалению, ответ не верный'
    session = Session()
    select_query = session.query(Users.question, Users.user_id, Users.all_answers).filter(Users.viber_id == viber_id).one()
    session.close()
    question = eval(select_query[0])

    session = Session()
    update_query = session.query(Users).filter(Users.viber_id == viber_id).one()
    update_query.all_answers += 1
    update_query.dt_last_answer = datetime.utcnow()
    session.commit()
    session.close()

    if user_answer == question['translation']:
        session = Session()
        update_query1 = session.query(Users).filter(Users.viber_id == viber_id).one()
        update_query1.correct_answers += 1
        session.commit()
        session.close()

        session = Session()
        update_query2 = session.query(Learning).filter(Learning.word == question['word']).filter(
            Learning.user_id == select_query[1]).one()
        update_query2.right_answer += 1
        update_query2.dt_last_answer = datetime.utcnow()
        session.commit()
        session.close()

        session = Session()
        select_query2 = session.query(Learning.right_answer).filter(Learning.word == question['word']).filter(
            Learning.user_id == select_query[1]).one()
        session.close()
        check = f'Правильно! У вас уже {select_query2[0]} правильных ответов!'
    return TextMessage(text=check, keyboard=KEYBOARD2, tracking_data='tracking_data')
Example #26
0
def incoming():
    if not viber.verify_signature(
            request.get_data(),
            request.headers.get('X-Viber-Content-Signature')):
        return Response(status=403)

    viber_request = viber.parse_request(request.get_data())

    if isinstance(viber_request, ViberMessageRequest):
        #handle text
        if type(viber_request.message) is TextMessage:
            viber.send_messages(viber_request.sender.id,
                                [HandleText(viber_request)])

        #handle location
        elif type(viber_request.message) is LocationMessage:
            viber.send_messages(viber_request.sender.id,
                                [HandleLocation(viber_request)])

    elif isinstance(viber_request, ViberConversationStartedRequest):
        viber.send_messages(viber_request.user.id, [
            TextMessage(
                text='Здравствуйте, ' + viber_request.user.name +
                '!\nЧтобы заказать такси, воспользуйтесь клавиатурой ниже',
                keyboard=config.main_kb)
        ])

    return Response(status=200)
Example #27
0
def update_time(viber_id):
    session = Session()
    update_query = session.query(Users).filter(
        Users.viber_id == viber_id).one()
    update_query.dt_last_answer = datetime.utcnow()
    session.commit()
    session.close()
    return TextMessage(text='Прохождение теста отложено на полчаса')
Example #28
0
def process(id, msg) -> bool:
    # Мы обрабатываем ТОЛЬКО свои метки и шлем команды. Возвращает True если надо отправить главное меню.
    if msg == cmd_main:
        viber_api.send_messages(
            id, [TextMessage(text='Какой анекдот?'), MAIN_KEYBOARD])
        return False

    if msg == cmd_anekdot_v1:
        viber_api.send_messages(id, [
            TextMessage(text=anekdot() + ' :)' + '(crazy)'),
        ])
        return True

    elif msg == cmd_anekdot_v2:
        viber_api.send_messages(
            id, [TextMessage(text=anekdot() + ' :)' + '(crazy)')])
        return True
Example #29
0
def timed_job():
    session = Session()
    users = session.query(Users)
    for u in users:
        if datetime.datetime.now() >= u.time_remind:
            viber.send_messages(u.viber_id, [TextMessage(text="Пора учить слова", keyboard=KEYBOARD,
                                                         tracking_data='tracking_data')])
	session.close()
Example #30
0
def update_time(viber_id):
    session = Session()
    update_query = session.query(Users).filter(
        Users.viber_id == viber_id).one()
    update_query.dt_last_answer = datetime.utcnow()
    session.commit()
    session.close()
    return TextMessage(text='Напоминание создано')