Exemplo n.º 1
0
def ViberIncoming():
    try:
        if not viber.verify_signature(
                request.get_data(),
                request.headers.get('X-Viber-Content-Signature')):
            return Response(status=403)
        logging.debug(f"Viber data: {request.get_data().decode('utf-8')}")
        viber_request = viber.parse_request(request.get_data())
        if viber_request.event_type == "message":
            user_update(viber_request, 'viber')
        if (isinstance(viber_request, ViberConversationStartedRequest)) or (isinstance(viber_request, ViberMessageRequest) and \
                                        viber_request.message.text.lower() == "привет"):
            # Пользователь который только что тыкнул на бота или написал привет
            out = """Welcome message Viber"""
            try:
                viber.send_messages(viber_request.user.id,
                                    [TextMessage(text=out)])
            except:
                viber.send_messages(viber_request.sender.id,
                                    [TextMessage(text=out)])
        elif isinstance(viber_request, ViberMessageRequest):
            # Пользователь написал что-то боту
            user = db_users.find_one({"_id": viber_request.sender.id})
            MessageBox.Message(bot, viber, viber_request, user)
    except Exception as Error:
        logging.error(Error)
        return abort(404)
    finally:
        return Response(status=200)
Exemplo n.º 2
0
def incoming():
    logger.debug("received request. post data: {0}".format(request.get_data()))
    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 comeone sents a message
    # Если кто-то отправляет сообщение
    if isinstance(viber_request, ViberMessageRequest):
        message = viber_request.message
        if message.text=="Ping":
            viber.send_messages(viber_request.sender.id, [TextMessage(text="Pong")])

    #if some one subscribes to you
    # если кто-то подписывается на вас
    elif isinstance(viber_request, ViberSubscribedRequest):
        viber.send_messages(viber_request.get_user.id, [
            TextMessage(text="thanks for subscribing stranger")
        ])

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

    return Response(status=200)
Exemplo n.º 3
0
    def send_reply(self, rep, reply_text, user_id):
        viber = self.api
        if rep.type == 'place':
            # Send the image and a button for the user to confirm or reject
            kbd = self.get_place_keyboard(user_id, rep.buttons)
            if rep.img:
                self.send_img(user_id, rep, keyboard=kbd)
            else:
                txtmsg = TextMessage(text=str(reply_text), keyboard=kbd)
                viber.send_messages(user_id, [txtmsg])

        elif rep.type == 'place_list':
            logging.info("Reply itinerary: %s", reply_text)
            txtmsg = TextMessage(text=str(reply_text),
                                 keyboard=buttons_to_keyboard(rep.buttons))
            viber.send_messages(user_id, [txtmsg])

        elif rep.type == 'interest_question':
            txtmsg = TextMessage(text=str(reply_text),
                                 keyboard=buttons_to_keyboard(rep.buttons))
            viber.send_messages(user_id, [txtmsg])
        else:
            rkbd = buttons_to_keyboard(rep.buttons)
            logging.info("KBD: %s", rkbd)
            txtmsg = TextMessage(text=str(reply_text), keyboard=rkbd)
            viber.send_messages(user_id, [txtmsg])
Exemplo n.º 4
0
def ViberMessage(viber, viber_request):
    file_io("read")
    if viber_request.sender.id in user_amator or viber_request.user.id in user_amator:

        if (user_amator[viber_request.sender.id]["subscrib"] == False
                and user_amator[viber_request.sender.id]["registered"] == False
                and user_amator[viber_request.sender.id]["phone_number"]
                == None):
            viber.send_messages(viber_request.sender.id, [
                TextMessage(text=msg_text.msg_text[1].format(user_amator[
                    viber_request.sender.id]["name"]))
            ])
            user_amator[viber_request.sender.id]["subscrib"] = True
            file_io("write")
            return

        if (user_amator[viber_request.sender.id]["subscrib"] == True
                and user_amator[viber_request.sender.id]["registered"] == False
                and user_amator[viber_request.sender.id]["phone_number"]
                == None):
            #viber.send_messages(viber_request.sender.id, [TextMessage(text=msg_text.msg_text[2])])
            viber.send_messages(viber_request.sender.id, [
                TextMessage(min_api_version=3,
                            keyboard=keyboard_dict["REG_KEYBOARD"],
                            text=msg_text.msg_text[2])
            ])
            user_amator[viber_request.sender.id][
                "phone_number"] = viber_request.message.contact.phone_number
            print("--------------------------------TELEPHONE---------",
                  user_amator[viber_request.sender.id]["phone_number"])
            file_io("write")
Exemplo n.º 5
0
def incoming():
    """Catching all requests to bot and defining the request type."""
    create_table()
    viber_request = viber.parse_request(request.get_data())
    # Defining type of the request and replying to it
    if isinstance(viber_request, ViberMessageRequest):
        # Passing any message from user to message handler in handlers.py
        user_message_handler(viber, viber_request)
    elif isinstance(viber_request, ViberSubscribedRequest):
        viber.send_messages(viber_request.user.id, [
            TextMessage(text="Спасибо за подписку!")
        ])
    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn("client failed receiving message. failure: {0}"
                    .format(viber_request))
    elif isinstance(viber_request, ViberConversationStartedRequest):
        # First touch, sending to user keyboard with phone sharing button
        keyboard = kb.SHARE_PHONE_KEYBOARD
        viber.send_messages(viber_request.user.id, [
            TextMessage(
                text=txt.GREETING,
                keyboard=keyboard,
                min_api_version=3)
            ]
        )
    return Response(status=200)
Exemplo n.º 6
0
def incoming():
    logger.debug("received request. post data: {0}".format(request.get_data()))
    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):

        # if viber_request.message.text == 'clue':
        #send out setence to correct
        # else:
        message = TextMessage(text=sentences)

        viber.send_messages(viber_request.sender.id, [message])

    elif isinstance(viber_request, ViberSubscribedRequest):
        viber.send_messages(viber_request.get_user.id,
                            [TextMessage(text='welcome to the sentence bot!')])
    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn('client failed receiving message. failure: {0}'.format(
            viber_request))

    return Response(status=200)
Exemplo n.º 7
0
def incoming():
    keyboarddate ={
        "DefaultHeight": True,
        "BgColor": "#FFFFFF",
        "Buttons": [{
            "Columns": 6,
            "Rows": 1,
            "BgColor": "#2db9b9",
            "BgMediaType": "gif",
            "BgLoop": True,
            "ActionType": "open-url",
            "ActionBody": "www.tut.by",
            "Text": "Key text",
            "TextVAlign": "middle",
            "TextHAlign": "center",
            "TextOpacity": 60,
            "TextSize": "regular"
        }]
    }
    diser = jsonify(keyboarddate)
    keyboard=json.dumps(keyboarddate)
    keyb={"DefaultHeight": True}

    logger.debug("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, ViberConversationStartedRequest):
        viber.send_messages(viber_request.user.id, [TextMessage(text="Здравствуйте! Вас приветствует бот helpegisso.")])
        logger.debug(" viber_request.get_user().get_id()-{0}".format(viber_request.user.id))
        logger.debug("keyboard:{0}".format(keyboard))
    if isinstance(viber_request, ViberSubscribedRequest):
             viber.send_messages(viber_request.user,[TextMessage(text="Спасибо за подписку!")])
             logger.debug("_viber_request.get_event_type():{0}".format(viber_request.get_event_type()))

    elif isinstance(viber_request, ViberUnsubscribedRequest):
        #viber.send_messages(viber_request.user_id, viber_request.get_event_type())
        viber.send_messages(viber_request.user_id, [TextMessage(text="Вы отписались!")])
        logger.debug("1_viber_request.get_event_type():{0}".format(viber_request.get_event_type()))

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


    if isinstance(viber_request, ViberMessageRequest):
        messages_echo = viber_request.message
        #logger.debug("keyboard:{0}".format(keyboard))
        #account_info = TextMessage(text=str(viber_request.sender.name))
        viber.send_messages(to=viber_request.sender.id, messages=[messages_echo])
        if messages_echo=="@1":
                text=TextMessage(text="test")
                viber.send_messages(to=viber_request.sender.id, messages=[text])
        # viber.post_messages_to_public_account(sender=viber_request., messages=[TextMessage(text="sample message")])

    return Response(status=200)
Exemplo n.º 8
0
def incoming():
    logger.debug("received request. post data: {0}".format(request.get_data()))
    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):
        if viber_request.sender.id in db.getall():
            if viber_request.message.text is '?':
                report_status()
            pass
        else:
            db.set(viber_request.sender.id, viber_request.sender.id)
            viber.send_messages(viber_request.sender.id,
                                [TextMessage(text="Welcome to Trojanda")])
    elif isinstance(viber_request, ViberSubscribedRequest):
        db.set(viber_request.user.id, viber_request.user.id)
        viber.send_messages(viber_request.user.id,
                            [TextMessage(text="Welcome to Trojanada")])
    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn("client failed receiving message. failure: {0}".format(
            viber_request))

    return Response(status=200)
Exemplo n.º 9
0
def AdminStart(message):
    if not re.search("\/start (\d+)", message.text):
        markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
        buttons = [types.KeyboardButton('🎓 Персонал')]
        buttons.append(types.KeyboardButton('🔥 Сессии'))
        buttons.append(types.KeyboardButton('⚙️ Сменить имя'))
        markup.add(*buttons)
        bot.send_message(message.chat.id,
                         'Панель управления',
                         reply_markup=markup)
        return
    system_id = int(re.search("(\d+)", message.text).group(1))
    user = db_users.find_one({"_id": message.from_user.id})
    tolker = db_users.find_one({"system id": system_id})
    if tolker['operator']['active session'] is not None:
        bot.send_message(message.chat.id,
                         'Пользователь сейчас занят другим оператором')
        return
    tolker['operator']['active session'] = user['system id']
    if user['operator']["sessions"] is None:
        user['operator']["sessions"] = []
    if user['operator']['active session'] is None:
        user['operator']['active session'] = system_id
        if system_id in user['operator']["sessions"]:
            user['operator']["sessions"].remove(system_id)
        db_users.replace_one({"_id": message.from_user.id}, user, True)
        db_users.replace_one({"system id": system_id}, tolker, True)
        bot.send_message(message.chat.id, f'Диалог с {tolker["name"]} активен')
        if tolker["messenger"] == "viber":
            viber = Api(
                BotConfiguration(name=user['operator']['name'],
                                 avatar=cfg.v_avatar,
                                 auth_token=cfg.v_token))
            viber.send_messages(tolker["_id"],
                                [TextMessage(text='Оператор подключился')])
        elif tolker["messenger"] == "telegram":
            bot.send_message(
                tolker["_id"],
                f"{user['operator']['name']} Оператор подключился")
        return
    if system_id in user['operator']["sessions"]:
        user['operator']["sessions"].remove(system_id)
    if user['operator']['active session'] is not None:
        user['operator']["sessions"].append(user['operator']['active session'])
    user['operator']['active session'] = system_id
    db_users.replace_one({"_id": message.from_user.id}, user, True)
    db_users.replace_one({"system id": system_id}, tolker, True)
    bot.send_message(message.chat.id, f'Диалог с {tolker["name"]} активен')
    if tolker["messenger"] == "viber":
        viber = Api(
            BotConfiguration(name=user['operator']['name'],
                             avatar=cfg.v_avatar,
                             auth_token=cfg.v_token))
        viber.send_messages(tolker["_id"],
                            [TextMessage(text='Оператор подключился')])
    elif tolker["messenger"] == "telegram":
        bot.send_message(tolker["_id"],
                         f"{user['operator']['name']} Оператор подключился")
Exemplo n.º 10
0
def listen(viber):

    sock = socket.socket()
    sock.bind(('172.31.53.92', 9090))
    sock.listen(1)
    conn, addr = sock.accept()

    print('connected:', addr)
    try:
        while True:
            data = conn.recv(1024).decode()
            jsonData = json.loads(data)
            print(jsonData)
            if jsonData['wparname'] != 'none':
                print("trueeee")
                #+str(jsonData['action'])
                if jsonData['action'] == 'start':
                    viber.send_messages(jsonData['user_id'], [
                        TextMessage(text=str(jsonData['wparname']) +
                                    " успішно запущено (checkmark)"),
                        KeyboardMessage(keyboard=buttons.student_account)
                    ])
                elif jsonData['action'] == 'stop':
                    viber.send_messages(jsonData['user_id'], [
                        TextMessage(text=str(jsonData['wparname']) +
                                    " успішно зупинено (checkmark)"),
                        KeyboardMessage(keyboard=buttons.student_account)
                    ])
            #global wparData
            #if wparData!="none":
            #print(wparQueue.qsize())
            if wparQueue.qsize() > 0:
                wparEntity = wparQueue.get()
                print(wparEntity["wparname"])
                sendingData = {
                    'wparname': wparEntity['wparname'],
                    'action': wparEntity['action'],
                    'user_id': wparEntity['user_id']
                }
                conn.send(json.dumps(sendingData).encode())
            else:
                sendingData = {
                    'wparname': 'none',
                    'action': 'none',
                    'user_id': 'none'
                }
                conn.send(json.dumps(sendingData).encode())
            #print(wparData)
            #if wparData.qsize() == 0:
            #    wparData.put("none")
            #    print("none")
            #print(wparData)
            time.sleep(2)
    except Exception as e:
        conn.close()
        print("Server error:", e)
Exemplo n.º 11
0
def incoming():
    viber_request = viber.parse_request(request.get_data())

    if isinstance(viber_request, ViberMessageRequest):
        # lets echo back
        get_user_id(viber_request.sender.id)
        request_content = str(viber_request.message.text).lower()
        if request_content.__eq__(Constants.QUERY_BIRTHDAY_MONTH):
            list_user = get_list_users_in_month()
            if list_user is None or len(list_user) == 0:
                viber.send_messages(viber_request.sender.id, [
                    TextMessage(
                        text=
                        "Tháng này không có nhân viên có sinh nhật \n --end--")
                ])
            else:
                now_date = datetime.datetime.now()
                viber.send_messages(viber_request.sender.id, [
                    TextMessage(
                        text="Danh sách nhân viên sinh nhật tháng {0} :".
                        format(now_date.month))
                ])
                send_list_users(viber_request.sender.id, list_user)
                viber.send_messages(viber_request.sender.id,
                                    [TextMessage(text="--end--")])

        elif request_content.__eq__(Constants.QUERY_BIRTHDAY_TODAY):
            list_user = get_list_users_today()
            if list_user is None or len(list_user) == 0:
                viber.send_messages(viber_request.sender.id, [
                    TextMessage(
                        text=
                        "Hôm nay không có nhân viên có sinh nhật \n --end--")
                ])
            else:
                now_date = datetime.datetime.now()
                viber.send_messages(viber_request.sender.id, [
                    TextMessage(text="Danh sách nhân viên sinh nhật ngày {0} :"
                                .format(now_date.date().strftime("%d/%m/%Y")))
                ])
                send_list_users(viber_request.sender.id, list_user)
            viber.send_messages(viber_request.sender.id,
                                [TextMessage(text="--end--")])
        elif request_content.__eq__(Constants.QUERY_GET_USER_ID):
            message = viber_request.message
            viber.send_messages(viber_request.sender.id, [message])
        else:
            viber.send_messages(viber_request.sender.id, [
                TextMessage(
                    text="Xin chào " + str(viber_request.sender.name) +
                    "\n - Để lấy danh sách sinh nhật tháng này, gửi:{0}".
                    format(Constants.QUERY_BIRTHDAY_MONTH) +
                    "\n - Để lấy danh sách sinh nhật hôm nay, gửi: {0}".format(
                        Constants.QUERY_BIRTHDAY_TODAY) + "\n --end--")
            ])
    elif isinstance(viber_request, ViberSubscribedRequest):
        get_user_id(viber_request.sender.id)
        viber.send_messages(viber_request.get_user.id,
                            [TextMessage(text="thanks for subscribing!")])
    return Response(status=200)
Exemplo n.º 12
0
def answer(text, game):
    db = MyDataBase('database.db')
    user_id = db.find_user(game.viber_id)[0]
    if text == game.word["translation"]:
        # счётчик правильных ответов
        game.count_correct += 1
        db.update_learning(user_id, game.word['word'])
        bot_response = TextMessage(text='Правильно')
    else:
        bot_response = TextMessage(text='Неправильно')
    # всего ответов
    game.count_all += 1
    viber.send_messages(game.viber_id, [bot_response])
    question(game)
Exemplo n.º 13
0
def main(viber, viber_request, condition):
    if re.match(r'(?i).*(лабораторн).*\d.*', condition):
        viber.send_messages(viber_request.sender.id, [
            URLMessage(media=functions.send_task_for_lab(
                functions.parse_digits_from_text(condition)))
        ])
    elif re.match(r'(?i).*(дякую).*', condition):
        viber.send_messages(viber_request.sender.id,
                            [TextMessage(text="Нема за що, звертайся ще 😉.")])
    elif re.match(r'(?i).*не можу зробити лабораторну.*', condition):
        viber.send_messages(viber_request.sender.id, [
            TextMessage(
                text="У тебе все вийде 😉, я у тебе вірю 😘. Тримай шоколадку 🍫")
        ])
Exemplo n.º 14
0
def incoming():
    logger.debug("Получил запрос. Отправка данных: {0}".format(
        request.get_data()))

    viber_request = viber.parse_request(request.get_data())
    viber_request = viber.parse_request(request.get_data().decode('utf8'))

    if isinstance(viber_request, ViberMessageRequest):
        message_vmr = viber_request.message
        viber.send_messages(viber_request.sender.id, [message_vmr])
        print(
            "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ТЕКСТОВОЕ СООБЩЕНИЕ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
        )

    elif isinstance(viber_request, ViberConversationStartedRequest):
        message_vcsr = '''Рады приветствовать Вас, {0}!
         Вы вошли на главную страницу бота СТ "АМАТОР". Созданного для обмена информацией между членами товарищества и правлением.  
         НАПИШИТЕ ЛЮБОЕ СООБЩЕНИЕ для того чтоб подписаться и получить доступ к основному функционалу нашего бота.'''.format(
            viber_request.user.name)
        viber.send_messages(viber_request.user.id,
                            [TextMessage(text=message_vcsr)])
        print(
            "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ПРИВЕТСТВЕННОЕ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
        )

    elif isinstance(viber_request, ViberSubscribedRequest):
        message_vsubsc = '''Отлично, {0}! Вы успешно подписались на наш публичный канал СТ "АМАТОР", 
         и теперь вам доступен весь функционал нашего чат бота.'''.format(
            viber_request.user.name)
        viber.send_messages(viber_request.user.id,
                            [TextMessage(text=message_vsubsc)])
        logger.debug("Получил запрос: ПОДПИСАТЬСЯ")
        print(
            "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ПОДПИСАТЬСЯ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
        )

    elif isinstance(viber_request, ViberUnsubscribedRequest):
        #message_vunsubsc='''{0}, Вы успешно отписались от нашего публичного канала СТ "АМАТОР"'''.format(viber_request.user_id)
        #viber.send_messages(viber_request.user_id, [TextMessage(text=message_vunsubsc)])
        logger.debug("Получил запрос. ОТПИСАТЬСЯ")
        print(
            "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ОТПИСАТЬСЯ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
        )

    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn(
            "Клиент не получил сообщение. Ошибка: {0}".format(viber_request))

    return Response(status=200)
Exemplo n.º 15
0
def question(game):
    session = Session()

    if game.count_all <= 3:
        # вывести вопрос
        next_word(game)
        bot_response = TextMessage(text=f'{game.count_all + 1}. Перевод слова: {game.word["word"]}',
                                   keyboard=CreateKBD(game), tracking_data='tracking_data')
        viber.send_messages(game.viber_id, [bot_response])
    else:
        # вывести итоги раунда
        bot_response = TextMessage(text=f"Верно {game.count_correct} из {game.count_all}", keyboard=START_KBD,
                                   tracking_data='tracking_data')
        viber.send_messages(game.viber_id, [bot_response])
    session.close()
Exemplo n.º 16
0
 def _callback_on_searching(self, user_id, details):
     viber = self.api
     logging.info("Starting search at %s", details)
     place = details['location'].capitalize()
     t = details['type']
     if len(t) == 0:
         txtmsg = TextMessage(
             text="Great. Here are a few places for you to stay in {0}..".
             format(place))
         viber.send_messages(user_id, [txtmsg])
     else:
         txtmsg = TextMessage(
             text="Great. I'll start searching for {0} in {1}..".format(
                 'placest to stay', place))
         viber.send_messages(user_id, [txtmsg])
Exemplo n.º 17
0
def incoming():
    logger.debug("received request. post data: {0}".format(request.get_data()))
    # handle the request here
    return Response(status=200)

    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):
        message = viber_request.message
        viber.send_messages(viber_request.sender.id, [message])

    elif isinstance(viber_request, ViberSubscribedRequest):
        viber.send_messages(viber_request.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)
Exemplo n.º 18
0
def notify_users():
    logger.debug("received request for send_message. post data: {0}".format(
        request.get_data()))
    data = json.loads(request.get_data().decode())
    users = data['users']
    rule_id = data['rule_id']
    time = data['time']
    timeout = data['timeout']
    user_friendly_name = data['user_friendly_name']

    for user in users:
        logger.info("Sending message to {0}. id: {1}".format(
            user['name'], user['id']))
        viber.send_messages(
            user['id'],
            [
                # TextMessage(text='Через {0} хвилин {1} будут поливатися {2}хв.\nДля того, щоб відмнінити правило, наберіть \'Відмінити {3}\' або перейдіть за посиланням з наступного повідомлення'.format(timeout, user_friendly_name, time, rule_id))
                TextMessage(
                    text=
                    "Через {0} хвилин почнеться полив гілки '{1}'. Триватиме {2} хвилин.\nДля того, щоб відмнінити цей полив, відправте мені повідомлення \n'Відмінити {3}'"
                    .format(timeout, user_friendly_name, time, rule_id))
                # URLMessage(media="http://185.20.216.94:7542/cancel_rule?id={0}".format(rule_id))
            ])

    logger.info("Done")
    return Response(status=200)
Exemplo n.º 19
0
def example(game, number):
    bot_response = TextMessage(text=f'{game.word["examples"][number]}',
                               keyboard=CreateKBD(game),
                               tracking_data='tracking_data')
    keyboard = KeyboardMessage(tracking_data='tracking_data',
                               keyboard=CreateKBD(game))
    viber.send_messages(game.viber_id, [bot_response])
Exemplo n.º 20
0
def incoming():
    logger.debug("received request. post data: {0}".format(request.get_data()))

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

    subscriptions = [
    ]  # contains instances of classes on which other processes are signed

    # --- simple request handling bloc start ---
    if isinstance(viber_request, ViberMessageRequest):
        message = viber_request.get_message()
        viber.send_messages(viber_request.get_sender().get_id(), [message])
    elif isinstance(viber_request, ViberConversationStartedRequest) \
            or isinstance(viber_request, ViberSubscribedRequest) \
            or isinstance(viber_request, ViberUnsubscribedRequest):
        viber.send_messages(
            viber_request.get_user().get_id(),
            [TextMessage(None, None, viber_request.get_event_type())])
    elif isinstance(viber_request, ViberFailedRequest):
        logger.warn("client failed receiving message. failure: {0}".format(
            viber_request))
    # --- simple request handling bloc end ---

    # event processor cycle
    for subscription in subscriptions:
        for class_key, subscribers in subscribers_dict.iteritems():
            if isinstance(subscription, class_key):
                for subscriber in subscribers:
                    event_queues_dict.get(subscriber).put_nowait(subscription)

    return Response(status=200)
Exemplo n.º 21
0
    def __get__disable__(self):

        if self.current_user.id not in KeysWords:
            keyboard = self.__get__keys_start__()
        else:
            keyboard = KeysWords[self.current_user.id]['keyboard']
        if self.current_user.is_notice_need:
            message = \
                [TextMessage(text="Включить напоминание можно будет в конце каждого раунда"),
                 KeyboardMessage(keyboard=keyboard)]
        else:
            message = \
                [TextMessage(text="Я о вас не забуду."),
                 KeyboardMessage(keyboard=keyboard)]
        self.current_user.is_notice_need = not self.current_user.is_notice_need
        self.session.commit()
        return message
Exemplo n.º 22
0
    def handle_message_request(self, viber_request):
        message = viber_request.message
        userid = viber_request.sender.id

        response = self.ask_question(userid, message)

        self._viber_bot.send_messages(viber_request.sender.id,
                                      [TextMessage(text=response)])
Exemplo n.º 23
0
def faq_options(viber, viber_request, condition):
    print("faq", condition)
    if re.match(r'(?i)(^завдання.*)|(.*(лаб).*(роб).*)', condition):
        viber.send_messages(viber_request.sender.id, [
            RichMediaMessage(rich_media=buttons.carousel_contentFirstLabs,
                             min_api_version=2,
                             alt_text="Обери потрібну лабораторну роботу"),
            RichMediaMessage(rich_media=buttons.carousel_contentSecondLabs,
                             min_api_version=2,
                             alt_text="Обери потрібну лабораторну роботу"),
            KeyboardMessage(keyboard=buttons.faq_keyboard)
        ])

    elif re.match(r'(?i).*(розклад).*', condition):
        viber.send_messages(viber_request.sender.id, [
            TextMessage(text=texts.schedule),
            KeyboardMessage(keyboard=buttons.faq_keyboard)
        ])
    elif re.match(r'(?i).*((вимоги)|(звіт)).*', condition):
        viber.send_messages(viber_request.sender.id, [
            TextMessage(text=texts.requirements),
            KeyboardMessage(keyboard=buttons.faq_keyboard)
        ])
    elif re.match(r'(?i)(.*цікав.*факт.*)', condition):
        viber.send_messages(viber_request.sender.id, [
            TextMessage(text=choice(texts.interesting_facts)),
            KeyboardMessage(keyboard=buttons.faq_keyboard)
        ])
    elif re.match(r'(?i).*((ssh.*)|(з wpar)).*', condition):
        viber.send_messages(viber_request.sender.id, [
            TextMessage(text=texts.connect_ssh),
            URLMessage(
                media=
                "https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html"
            ),
            KeyboardMessage(keyboard=buttons.faq_keyboard)
        ])
    elif condition == "До головного меню":
        #keyboard = KeyboardMessage(tracking_data='tracking_data', keyboard=buttons.main_menu())
        viber.send_messages(viber_request.sender.id, [
            TextMessage(text="Чим я можу тобі допомогти? (eyes)"),
            KeyboardMessage(keyboard=buttons.main_keyboard)
        ])
    else:
        dialog.main(viber, viber_request, condition)
Exemplo n.º 24
0
def answer(text, game):
    session = Session()
    if text == 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='Правильно')
    else:
        bot_response = TextMessage(text='Неправильно')
    # всего ответов
    game.count_all += 1
    viber.send_messages(game.viber_id, [bot_response])
    session.close()
    question(game)
Exemplo n.º 25
0
def Subscribed(viber, viber_request):
    file_io("read")
    viber.send_messages(viber_request.user.id, [
        TextMessage(text=msg_text.msg_text[1].format(viber_request.user.name))
    ])
    user_amator[viber_request.user.id]["subscrib"] = True
    print(
        "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ПОДПИСАТЬСЯ *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
    )
Exemplo n.º 26
0
def incoming():
    logging.debug("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):
        message = viber_request.message

        subscribers = load_subscribers()
        if 'unsubscribe' in message.text:
            if viber_request.sender.id in subscribers:
                subscribers.pop(subscribers.index(viber_request.sender.id))
            message = TextMessage(text='Unsubscribed!')
        else:
            message = TextMessage(text='Thanks For Subscribing!')
            subscribers.append(viber_request.sender.id)

        viber.send_messages(viber_request.sender.id, [message])

        subscribers = list(set(subscribers))

        with open('subscribers.json', 'w') as fp:
            json.dump(subscribers, fp)

    elif isinstance(viber_request, ViberUnsubscribedRequest):
        subscribers = load_subscribers()
        if viber_request.sender.id in subscribers:
            subscribers.pop(subscribers.index(viber_request.sender.id))

        with open('subscribers.json', 'w') as fp:
            json.dump(subscribers, fp)

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

    return Response(status=200)
Exemplo n.º 27
0
def SessionClose(message):
    system_id = int(re.search("(\d+)", message.text).group(1))
    user = db_users.find_one({"_id": message.from_user.id})
    if not db_users.find_one({"system id": system_id}):
        bot.send_message(message.chat.id, 'Такого пользователя нет')
        return
    tolker = db_users.find_one({"system id": system_id})
    if user['operator']['active session'] == system_id:
        user['operator']['active session'] = None
        tolker['operator']['active session'] = None
        db_users.replace_one({"_id": message.from_user.id}, user, True)
        db_users.replace_one({"_id": tolker["_id"]}, tolker, True)
        bot.send_message(message.chat.id,
                         f'Активная сессия с {tolker["name"]} закрыта')
        if tolker["messenger"] == "viber":
            viber = Api(
                BotConfiguration(name=user['operator']['name'],
                                 avatar=cfg.v_avatar,
                                 auth_token=cfg.v_token))
            viber.send_messages(tolker["_id"],
                                [TextMessage(text='Оператор отключился')])
        elif tolker["messenger"] == "telegram":
            bot.send_message(tolker["_id"],
                             f"{user['operator']['name']}\nОтключился")
        return
    if system_id in user['operator']["sessions"]:
        user['operator']['sessions'].remove(system_id)
        tolker['operator']['active session'] = None
        if len(user['operator']["sessions"]) == 0:
            user['operator']["sessions"] = None
        db_users.replace_one({"_id": message.from_user.id}, user, True)
        db_users.replace_one({"_id": tolker["_id"]}, tolker, True)
        bot.send_message(message.chat.id, f'Сессия с {tolker["name"]} закрыта')
        if tolker["messenger"] == "viber":
            viber = Api(
                BotConfiguration(name=user['operator']['name'],
                                 avatar=cfg.v_avatar,
                                 auth_token=cfg.v_token))
            viber.send_messages(tolker["_id"],
                                [TextMessage(text='Оператор отключился')])
        elif tolker["messenger"] == "telegram":
            bot.send_message(tolker["_id"],
                             f"{user['operator']['name']}\nОтключился")
        return
Exemplo n.º 28
0
 def _on_start(self, user_id):
     viber = self.api
     d = self.get_dialog(user_id)
     g = d.start()
     d.on_searching(
         lambda details: self._callback_on_searching(user_id, details))
     keyboard_msg = self.get_initial_keyboard(user_id)._keyboard
     viber.send_messages(user_id, [
         TextMessage(text=g, keyboard=keyboard_msg),
     ])
Exemplo n.º 29
0
def main(viber, id):
    switchTrue2 = True
    while True:
        response = json.loads(requests.get(url).content)
        description=response["details"]
        picture=response["links"]["patch"]["small"]
        launch_time=int(response["static_fire_date_unix"])
        print("launch date: ", datetime.utcfromtimestamp(launch_time).strftime('%Y-%m-%d %H:%M:%S'))
        current_time = int(time.time())
        print("current date: ", datetime.utcfromtimestamp(current_time).strftime('%Y-%m-%d %H:%M:%S'))
        if launch_time<=current_time and switchTrue2==True: #and launch_time+14400>=current_time and switchTrue:
            switchTrue2=False
            print(response)
            print(description)
            pictureSpacex = PictureMessage(media=picture)
            viber.send_messages(id, [TextMessage(text="Ілон Маск сьогодні запустив ракету (rocket), а що за сьогодні зробив корисного ти? (what)"),
                                 pictureSpacex])
            viber.send_messages(id, [TextMessage(text=description), KeyboardMessage(keyboard=buttons.main_keyboard)])
        time.sleep(60)
Exemplo n.º 30
0
def postMessages():
    logger.debug("received request. post data: {0}".format(request.get_data()))
    req_data = request.get_json()
    message = req_data['text']
    userDtl = db.subusers
    subscribedUsrs = userDtl.find({'subscribed': True})
    for subuser in subscribedUsrs:
        viber.send_messages(subuser['userId'], [TextMessage(text=message)])

    return Response(status=200)