def callback_inline(call):
    user = session.query(User).filter_by(user_id=call.message.chat.id).first()

    if not call.message:
        bot.delete_message(call.message.chat.id, call.message.message_id)
        user.state = 'main_menu_state'
        session.commit()
        get_state_and_process(call.message, user, True)

    if call.data == "save_categories":
        user.state = 'set_city_state'
        session.commit()
        get_state_and_process(call.message, user, True)
    else:
        subscription = session.query(UserSubscription).filter_by(name=call.data.replace("_on", ""), user_id=user.id).first()
        if not subscription:
            subscription = UserSubscription(name=call.data.replace("_on", ""), user_id=user.id)
            session.add(subscription)
        else:
            session.delete(subscription)
        session.commit()
        bot.edit_message_reply_markup(
            call.message.chat.id,
            call.message.message_id,
            call.message.message_id,
            reply_markup=categories_inline_keyboard(user=user)
        )
Esempio n. 2
0
def send_welcome(message):
    try:
        logger.debug(f"/start | user_id: {message.from_user.id}")
        user = session.query(User).filter_by(
            user_id=message.from_user.id).first()

        role = Roles.user.value  # common user
        if str(message.from_user.id) in ADMINS:
            logger.info("ADMIN is here")
            role = Roles.user.admin

        if user is None:
            user = User(user_id=message.from_user.id,
                        username=message.from_user.username,
                        first_name=message.from_user.first_name,
                        last_name=message.from_user.last_name,
                        state='set_language_state',
                        role=role)
            session.add(user)
            session.commit()
        else:
            if not user.user_id:
                user.user_id = message.from_user.id
                user.first_name = message.from_user.first_name
                user.last_name = message.from_user.last_name
            else:
                user.state = 'main_menu_state'
            session.commit()

        get_state_and_process(message, user, True)
    except Exception as e:
        logger.error(e, exc_info=True)
Esempio n. 3
0
def handle_message(message):
    try:
        user = User.objects(user_id=message.from_user.id).first()
        if user is None:
            user = User(user_id=message.from_user.id,
                        username=message.from_user.username,
                        first_name=message.from_user.first_name,
                        last_name=message.from_user.last_name,
                        state='main_menu_state')
            user.save()
        get_state_and_process(message, user)
    except Exception as e:
        print(e)
def handle_message(message):
    try:
        user = session.query(User).filter_by(user_id=message.from_user.id).first()
        if user is None:
            user = User(user_id=message.from_user.id,
                        username=message.from_user.username,
                        first_name=message.from_user.first_name,
                        last_name=message.from_user.last_name,
                        state='main_menu_state'
                        )
            session.commit()
        get_state_and_process(message, user)
    except Exception as e:
        logger.error(e, exc_info=True)
Esempio n. 5
0
def handle_message(message):
#     try:
        if str(message.chat.id) == config.ADMIN_CHAT_ID:
            process_without_state_message(message)
        user = User.objects(user_id=message.from_user.id).first()
        if user is None:
            user = User(user_id=message.from_user.id,
                        username=message.from_user.username,
                        first_name=message.from_user.first_name,
                        last_name=message.from_user.last_name,
                        state='choose_language_state'
                        )
            user.save()
        get_state_and_process(message, user)
Esempio n. 6
0
def send_welcome(message):
    try:
        user = User.objects(user_id=message.from_user.id).first()
        if user is None:
            user = User(user_id=message.from_user.id,
                        username=message.from_user.username,
                        first_name=message.from_user.first_name,
                        last_name=message.from_user.last_name,
                        state='main_menu_state')
            user.save()
        else:
            user.state = 'main_menu_state'
            user.save()
            # user.update(state='main_menu_state')
        get_state_and_process(message, user, True)
    except Exception as e:
        print(e)
def send_welcome(message):
    try:
        logger.debug(f"/start | user_id: {message.from_user.id}")
        user = session.query(User).filter_by(user_id=message.from_user.id).first()

        if user is None:
            user = User(
                user_id=message.from_user.id,
                username=message.from_user.username,
                first_name=message.from_user.first_name,
                last_name=message.from_user.last_name,
                state='login_state'
            )
            session.add(user)
            session.commit()
        else:
            user.state = 'main_menu_state'
            session.commit()

        get_state_and_process(message, user, True)
    except Exception as e:
        logger.error(e, exc_info=True)
Esempio n. 8
0
def callback_inline(call):
    user = session.query(User).filter_by(user_id=call.message.chat.id).first()

    if not call.message:
        bot.delete_message(call.message.chat.id, call.message.message_id)
        user.state = 'main_menu_state'
        session.commit()
        get_state_and_process(call.message, user, True)

    if call.data == "save_categories":
        if user.state != 'settings_menu_state':
            user.state = 'set_city_state'
            session.commit()

        bot.send_message(call.message.chat.id,
                         DICTIONARY[user.language]['saved_settings_msg'])
        get_state_and_process(call.message, user, True)

    elif call.data.startswith('sub_'):
        event_id = call.data.replace("sub_", "")
        # create UserEvent object and send message
        sub_event = session.query(UserEvent).filter_by(
            event_id=event_id, user_id=user.id).first()
        if not sub_event:
            sub_event = UserEvent(event_id=event_id, user_id=user.id)
            session.add(sub_event)
            session.commit()
            bot.send_message(
                call.message.chat.id,
                DICTIONARY[user.language]['subscribe_success_msg'])
            logger.debug(
                f'user {user.username} subscribed to event {event_id}')
        else:
            bot.send_message(
                call.message.chat.id,
                DICTIONARY[user.language]['already_subscribed_msg'])
        events = get_events_from_db_for_user(user)
        all_events_ids = [obj.id for obj in events]
        bot.edit_message_reply_markup(call.message.chat.id,
                                      call.message.message_id,
                                      call.message.message_id,
                                      reply_markup=events_inline_keyboard(
                                          all_events_ids, user))
    elif call.data.startswith('unsubscribe_'):
        event_id = call.data.replace("unsubscribe_", "")
        # delete UserEvent object if it exists
        sub_event = session.query(UserEvent).filter_by(
            event_id=event_id, user_id=user.id).first()
        if sub_event:
            session.delete(sub_event)
        try:
            bot.delete_message(call.message.chat.id, call.message.message_id)
        except Exception as e:
            logger.error(e, exc_info=True)
        logger.error(f"Unsubscribed from event {event_id}")
        bot.send_message(call.message.chat.id,
                         DICTIONARY[user.language]['unsubscribed_msg'])
        session.commit()
    elif call.data.startswith('category_'):
        sub_name = call.data.replace("category_", "")
        subscription = session.query(UserSubscription).filter_by(
            name=sub_name, user_id=user.id).first()
        if not subscription:
            subscription = UserSubscription(name=sub_name, user_id=user.id)
            session.add(subscription)
        else:
            session.delete(subscription)
        session.commit()
        bot.edit_message_reply_markup(
            call.message.chat.id,
            call.message.message_id,
            call.message.message_id,
            reply_markup=categories_inline_keyboard(user=user))
    elif call.data.startswith('respond_'):
        sup_request_id = call.data.replace("respond_", "")
        sup_request = session.query(SupportRequest).filter_by(
            id=sup_request_id, is_resolved=False).first()
        if not sup_request:
            logger.error(
                f"Can't find a support request with id {sup_request_id}")
            bot.send_message(
                call.message.chat.id,
                DICTIONARY[user.language]['already_subscribed_msg'])
        else:
            # create SupportResponse object
            user.state = 'send_support_respond_state'
            session.commit()
            get_state_and_process(call.message, user, True)
    else:
        logger.warning(
            f"Invalid call.data: {call.data}\nUser: id={user.id} username={user.username}"
        )