Esempio n. 1
0
def notify_room_participants(message):
    user = User.query.filter_by(id=message.from_user.id).first()
    # отправлять уведомления тем кто в комнате
    if user.state in [BotSate.IN_ROOM_CREATOR, BotSate.IN_ROOM_USER, BotSate.IN_ROOM_USER_READY]:
        if message.text == '/notify':
            telegram_bot.send_message(user.id, proper_usage_of_notify_text, parse_mode='Markdown')
            return
        telegram_bot.delete_message(message.chat.id, message.message_id)  # удалить сообщение со слэшем
        for room_user in user.participant.users:
            telegram_bot.send_message(chat_id=room_user.id,
                                      text='💬 {}: {}'.format(concatenate_name(user), message.text[8:]),
                                      disable_notification=True)
    else:
        check_state(message)
Esempio n. 2
0
def send_or_update_course_option(chat_id, message_id=None, update=False):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton(text='Умный дом на Arduino С++',
                                          callback_data=json.dumps({'crs': Course.SMART_HOUSE})))
    markup.add(types.InlineKeyboardButton(text='Python Джедай', callback_data=json.dumps({'crs': Course.PYTHON})))
    markup.add(types.InlineKeyboardButton(text='Получи Бонус', callback_data=json.dumps({'crs': Course.BONUS})))

    if update:
        telegram_bot.delete_message(chat_id=chat_id, message_id=message_id)
        telegram_bot.send_message(chat_id=chat_id, text=course_choice_message,
                                  reply_markup=markup, parse_mode='Markdown')

    else:
        telegram_bot.send_message(chat_id=chat_id, text=course_choice_message,
                                  reply_markup=markup, parse_mode='Markdown')
Esempio n. 3
0
def handle_room_ready(query):
    ready = json.loads(query.data).get('rdy')
    user = User.query.get(query.message.chat.id)
    if ready and user.state == BotSate.IN_ROOM_USER:
        db.session.query(User).filter_by(id=user.id).update({"ready": True})
        user.state = BotSate.IN_ROOM_USER_READY
        db.session.commit()
        for u in user.participant.users:
            if u.id != user.id:
                telegram_bot.send_message(chat_id=u.id,
                                          text=user_ready_alert_message.format(user.first_name),
                                          disable_notification=True)
            else:
                telegram_bot.delete_message(chat_id=u.id, message_id=query.message.message_id)
                telegram_bot.send_message(chat_id=u.id, text=user_ready_message, parse_mode='Markdown',
                                          disable_notification=True)
Esempio n. 4
0
def validate_address(query):
    choice = json.loads(query.data).get('addr')
    user = User.query.get(query.message.chat.id)
    if user.state != BotSate.ADDRESS:
        return
    if choice:
        user.state = BotSate.PRESENT
        db.session.commit()
        telegram_bot.delete_message(chat_id=query.message.chat.id,
                                    message_id=query.message.message_id)
        request_present(query.message.chat.id)
    else:
        user.address = None
        db.session.commit()
        telegram_bot.delete_message(chat_id=query.message.chat.id,
                                    message_id=query.message.message_id)
        request_address(query.message.chat.id, user.first_name)
Esempio n. 5
0
def request_course(course, chat_id, message_id=None, update=False,):
    if not (course in [Course.SMART_HOUSE, Course.PYTHON, Course.BONUS]):
        raise Exception('Invalid Course was given.')

    markup = types.InlineKeyboardMarkup()

    markup.add(types.InlineKeyboardButton(text='Записаться на пробный урок',
                                          callback_data=json.dumps({'prb': course})))
    markup.add(types.InlineKeyboardButton(text='Подпишись на Telegram канал',
                                          url='https://t.me/robohousekb'))
    markup.add(types.InlineKeyboardButton(text='Автономное обучение в IT',
                                          callback_data=json.dumps({'aut': True})))
    markup.add(types.InlineKeyboardButton(text='🔙',
                                          callback_data=json.dumps({'prb': 'back'})))

    if course == Course.SMART_HOUSE:
        photo = open('app/static/sh-pic.jpg', 'rb')
        message_text = smart_house_message
    elif course == Course.PYTHON:
        photo = open('app/static/py-pic.jpg', 'rb')
        message_text = python_message
    elif course == Course.BONUS:
        message_text = bonus_text

    if course != Course.BONUS:
        if update:
            telegram_bot.delete_message(chat_id, message_id)
            telegram_bot.send_photo(caption=message_text, chat_id=chat_id,
                                    parse_mode='Markdown', reply_markup=markup, photo=photo)
        else:
            telegram_bot.send_photo(caption=message_text, chat_id=chat_id,
                                    parse_mode='Markdown', reply_markup=markup, photo=photo)
    else:
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton(text='🔙',
                                              callback_data=json.dumps({'prb': 'back'})))
        doc = open('app/static/top_programming_languages.pdf', 'rb')
        if update:
            telegram_bot.delete_message(chat_id, message_id)
            telegram_bot.send_document(caption=message_text, chat_id=chat_id,
                                       parse_mode='Markdown', reply_markup=markup, data=doc)
        else:
            telegram_bot.send_document(caption=message_text, chat_id=chat_id,
                                       parse_mode='Markdown', reply_markup=markup, data=doc)
Esempio n. 6
0
def validate_present(query):
    choice = json.loads(query.data).get('prz')
    user = User.query.get(query.message.chat.id)
    if user.state != BotSate.PRESENT:
        return
    if choice:
        user.state = BotSate.ROOM_CHOICE
        db.session.commit()
        telegram_bot.delete_message(chat_id=query.message.chat.id,
                                    message_id=query.message.message_id)
        # telegram_bot.send_message(chat_id=query.message.chat.id, text='Пока что думаем над реализацией')
        # telegram_bot.send_sticker(chat_id=query.message.chat.id,
        #                          data='CAACAgIAAxkBAAIHP1-exwjIqmwebjY-1nACsJOqWG4gAAIaAANaDDcVO0MG9OddsLIeBA')
        request_room_invitation(query.message.chat.id)
    else:
        user.present = None
        db.session.commit()
        telegram_bot.delete_message(chat_id=query.message.chat.id,
                                    message_id=query.message.message_id)
        request_present(query.message.chat.id)
Esempio n. 7
0
def handle_room_joining(query):
    choice = json.loads(query.data).get('inv')  # True - кнопка создания, False - кнопка присоединения
    user = User.query.get(query.message.chat.id)
    if user.state < BotSate.ROOM_CHOICE:  # ничего не делать если не в меню выбора кнопок или не в комнате
        return
    if choice:
        if not user.room:
            room = Room(owner_id=user.id)
            user.participant = room
            user.state = BotSate.IN_ROOM_CREATOR
            # создатель комнаты готов по-умолчанию
            db.session.query(User).filter_by(id=query.message.chat.id).update({"ready": True})
            db.session.add(room)
            db.session.commit()

            request_room_owner_panel(query.message.chat.id, user.first_name, room.identifier)
            telegram_bot.delete_message(chat_id=query.message.chat.id,
                                        message_id=query.message.message_id)
        else:
            if user.id == user.participant.owner_id:
                telegram_bot.send_message(text=already_in_room_message.format(user.participant.identifier),
                                          chat_id=query.message.chat.id, disable_notification=True)
            else:
                telegram_bot.send_message(text=already_in_room_message2.format(user.participant.identifier),
                                          chat_id=query.message.chat.id, disable_notification=True)
    else:
        if not user.room:
            telegram_bot.send_message(text=room_exists_message,
                                      chat_id=query.message.chat.id,
                                      parse_mode='Markdown', disable_notification=True)
            telegram_bot.delete_message(chat_id=query.message.chat.id,
                                        message_id=query.message.message_id)
        else:
            if user.id == user.participant.owner_id:
                telegram_bot.send_message(text=already_in_room_message.format(user.participant.identifier),
                                          chat_id=query.message.chat.id, disable_notification=True)
            else:
                telegram_bot.send_message(text=already_in_room_message2.format(user.participant.identifier),
                                          chat_id=query.message.chat.id, disable_notification=True)