Esempio n. 1
0
def prompt_setting(update: Update, context: CallbackContext):
    settings: dict = context.user_data['settings']
    university: str = context.user_data['university']

    config_cls = get_config_cls(university)
    required_settings = config_cls.get_key_name(required=True)

    for k in required_settings:
        if k in settings:
            continue
        else:
            update.effective_chat.send_message(f'请输入{required_settings[k]}')
            context.user_data['cur_setting'] = k
            return 'settings'

    new_config = config_cls(**settings)
    user, is_created = User.get_or_create(user_id=update.effective_user.id)
    query = User.update(
        chat_id=update.effective_chat.id,
        university=university,
        config=new_config.base64(),
    ).where(User.user_id == user.user_id)
    query.execute()
    if is_created:
        scrapers.update_user_config(user.user_id, new_config)

    update.effective_chat.send_message('设置成功!')
    help_text(update, context)
    return ConversationHandler.END
Esempio n. 2
0
def oauth():
    resp = openstreetmap.authorized_response()
    if resp is None:
        return 'Denied. <a href="' + url_for('login') + '">Try again</a>.'
    session['osm_token'] = (resp['oauth_token'], resp['oauth_token_secret'])
    user_details = openstreetmap.get('user/details').data
    session['osm_uid'] = int(user_details[0].get('id'))
    name = user_details[0].get('display_name')
    user, created = User.get_or_create(uid=session['osm_uid'],
                                       defaults={'name': name})
    if user.name != name or created:
        user.name = name
        user.save()
    return redirect(url_for('front'))
Esempio n. 3
0
 def wrapped(self, update, context, *args, **kwargs):
     # extract user_id from arbitrary update
     try:
         user = update.message.from_user
     except (NameError, AttributeError):
         print('No hay user_id en el mensaje.')
         return ConversationHandler.END
     user, created = User.get_or_create(
         id=user.id,
         last_name=user.last_name,
         first_name=user.first_name,
     )
     if created:
         print("Usuario {} creado".format(user.id))
     context.user_data['user'] = user
     return func(self, update, context, *args, **kwargs)
Esempio n. 4
0
def agree(update, context):
    print('agree start')
    print('agree context.user_data: ' + str(context.user_data))
    check_done(update, context)
    user = update.callback_query.from_user
    id = user.id
    first_name = user.first_name
    last_name = user.last_name
    username = user.username
    
    context.user_data['first_name'] = first_name
    context.user_data['last_name'] = last_name
    context.user_data['username'] =username
    print(context.user_data)
    
    user, created = User.get_or_create(id=id, first_name=first_name, last_name=last_name, username=username)
    print(str(user) + ', created: ' + str(created))
    update.callback_query.message.reply_text(text='Отлично! Напиши как тебя зовут.', callback_data=str(PHONE))
    
    return NAME
Esempio n. 5
0
def oauth():
    resp = openstreetmap.authorized_response()
    if resp is None:
        return 'Denied. <a href="' + url_for('login') + '">Try again</a>.'
    session['osm_token'] = (resp['oauth_token'], resp['oauth_token_secret'])
    user_details = openstreetmap.get('user/details').data
    session['osm_uid'] = int(user_details[0].get('id'))
    name = user_details[0].get('display_name')
    user, created = User.get_or_create(uid=session['osm_uid'],
                                       defaults={'name': name})
    if user.name != name or created:
        user.name = name
        user.lang = get_language_from_request()
        user.save()
    # Use the same task a user has seen when not logged in
    ch.get_or_create_task_for_user(user, ip=get_ip())

    if session.get('next'):
        redir = session['next']
        del session['next']
    else:
        redir = url_for('front')
    return redirect(redir)