コード例 #1
0
ファイル: complains.py プロジェクト: VID-STUDY/CharityBot
def complain_text(update: Update, context: CallbackContext):
    message = update.message
    complain = context.user_data['complain']
    complain.text = message.text
    complain.save()
    complain_success = strings.get_string('complain.success',
                                          context.user_data['user'].language)
    Navigation.to_main_menu(update, context, message=complain_success)
    del context.user_data['complain']
    return ConversationHandler.END
コード例 #2
0
def start(update, context):
    user = update.message.from_user
    try:
        telegram_user = TelegramUser.objects.get(pk=user.id)
    except TelegramUser.DoesNotExist:
        return _to_languages(update, context)
    else:
        context.user_data['user'] = telegram_user
        Navigation.to_main_menu(update, context)
        return ConversationHandler.END
コード例 #3
0
ファイル: languages.py プロジェクト: VID-STUDY/CharityBot
def select_language(update: Update, context: CallbackContext):
    query = update.callback_query
    user = TelegramUser.objects.get(pk=query.from_user.id)
    language = query.data.split(':')[1]
    user.language = language
    user.save()
    context.user_data['user'] = user
    context.bot.delete_message(chat_id=query.from_user.id,
                               message_id=query.message.message_id)
    Navigation.to_main_menu(update, context)
    return ConversationHandler.END
コード例 #4
0
ファイル: needhelp.py プロジェクト: VID-STUDY/CharityBot
def help_location(update, context):
    location = update.message.location
    latitude = location.latitude
    longitude = location.longitude
    help_request = HelpRequest.objects.create(help_type=context.user_data['help_request']['type'], 
                                              description=context.user_data['help_request']['description'],
                                              latitude=latitude, longitude=longitude,
                                              user=context.user_data['user'])
    del context.user_data['help_request']
    success_message = strings.get_string('need_help.success', context.user_data['user'].language)
    Navigation.to_main_menu(update, context, message=success_message)
    return ConversationHandler.END
コード例 #5
0
def phone_number_contact(update, context):
    message = update.message
    phone_number = update.message.contact.phone_number
    user = TelegramUser.objects.create(
        id=message.from_user.id,
        name=context.user_data['registration']['name'],
        phone_number=phone_number,
        username=message.from_user.username,
        language=context.user_data['registration']['language'])
    del context.user_data['registration']
    context.user_data['user'] = user
    Navigation.to_main_menu(update, context)
    return ConversationHandler.END
コード例 #6
0
def phone_number_text(update, context):
    message = update.message
    phone_number = message.text
    match = re.match(r'\+*998\s*\d{2}\s*\d{3}\s*\d{2}\s*\d{2}', phone_number)
    if match is None:
        return _to_phone_number(update, context)
    phone_number = match.group()
    user = TelegramUser.objects.create(
        id=message.from_user.id,
        name=context.user_data['registration']['name'],
        phone_number=phone_number,
        language=context.user_data['registration']['language'])
    del context.user_data['registration']
    context.user_data['user'] = user
    Navigation.to_main_menu(update, context)
    return ConversationHandler.END
コード例 #7
0
ファイル: giveaway.py プロジェクト: VID-STUDY/CharityBot
def give_away_give_location(update, context):
    message = update.message
    latitude = message.location.latitude
    longitude = message.location.longitude
    language = context.user_data['user'].language
    GiveAwayOffer.objects.create(
        latitude=latitude,
        longitude=longitude,
        description=context.user_data['give_away_offer']['description'],
        user=context.user_data['user'],
        give_away_type=context.user_data['give_away_offer']['type'],
        photo_telegram_id=context.user_data['give_away_offer']
        ['photo_telegram_id'],
        photo_telegram_url=context.user_data['give_away_offer']
        ['photo_telegram_url'])
    del context.user_data['give_away_offer']
    success_message = strings.get_string('give_away.success', language)
    Navigation.to_main_menu(update, context, message=success_message)
    return ConversationHandler.END
コード例 #8
0
def can_help_location(update, context):
    location = update.message.location
    latitude = location.latitude
    longitude = location.longitude
    all_help_requests = HelpRequest.objects.filter(hidden=False)
    results = []
    language = context.user_data['user'].language
    far_away = False
    if not all_help_requests:
        empty_message = strings.get_string('can_help.empty', language)
        Navigation.to_main_menu(update, context, message=empty_message)
        return ConversationHandler.END
    for request in all_help_requests:
        # Find all requests within 1 kilometer
        distance = Geolocation.distance_between_two_points(
            (latitude, longitude), (request.latitude, request.longitude))
        if distance <= 1:
            results.append({'distance': distance, 'request': request})
    if not results or len(results) < 10:
        # If there aren't requests within 1 kilometer, find all requests
        for request in all_help_requests:
            distance = Geolocation.distance_between_two_points(
                (latitude, longitude), (request.latitude, request.longitude))
            results.append({'distance': distance, 'request': request})
        far_away = True
    exists_message = strings.get_string('can_help.exists', language)
    Navigation.to_main_menu(update, context, message=exists_message)
    results = sorted(results, key=lambda i: i['distance'])
    if far_away:
        # If found requests are far away, show first 10 elements
        results = results[:10]
    for result in results:
        request_message = strings.from_help_request_distance(result, language)
        request_keyboard = keyboards.from_help_request_keyboard(
            result['request'], language)
        update.message.reply_text(text=request_message,
                                  reply_markup=request_keyboard,
                                  parse_mode=ParseMode.HTML)
    return ConversationHandler.END
コード例 #9
0
ファイル: giveaway.py プロジェクト: VID-STUDY/CharityBot
def give_away_get_location(update, context):
    message = update.message
    latitude = message.location.latitude
    longitude = message.location.longitude
    give_away_offers = GiveAwayOffer.objects.all()
    results = []
    language = context.user_data['user'].language
    if not give_away_offers:
        empty_message = strings.get_string('give_away.empty', language)
        Navigation.to_main_menu(update, context, message=empty_message)
        return ConversationHandler.END
    far_away = False
    for offer in give_away_offers:
        distance = Geolocation.distance_between_two_points(
            (latitude, longitude), (offer.latitude, offer.longitude))
        if distance <= 1:
            results.append({'distance': distance, 'offer': offer})
    if not results or len(results) < 10:
        for offer in give_away_offers:
            distance = Geolocation.distance_between_two_points(
                (latitude, longitude), (offer.latitude, offer.longitude))
            results.append({'distance': distance, 'offer': offer})
        far_away = True
    results = sorted(results, key=lambda i: i['distance'])
    if far_away:
        results = results[:10]
    exists_message = strings.get_string('give_away.exists', language)
    Navigation.to_main_menu(update, context, message=exists_message)
    for result in results:
        offer_message = strings.from_give_away_offer_distance(result, language)
        offer_keyboard = keyboards.from_give_away_offer_keybaord(
            result['offer'], language)
        message.reply_photo(photo=result['offer'].photo_telegram_id,
                            caption=offer_message,
                            reply_markup=offer_keyboard,
                            parse_mode=ParseMode.HTML)
    return ConversationHandler.END
コード例 #10
0
ファイル: giveaway.py プロジェクト: VID-STUDY/CharityBot
def cancel(update, context):
    if 'give_away_offer' in context.user_data:
        del context.user_data['give_away_offer']
    Navigation.to_main_menu(update, context)
    return ConversationHandler.END
コード例 #11
0
def cancel(update, context):
    Navigation.to_main_menu(update, context)
    return ConversationHandler.END
コード例 #12
0
ファイル: complains.py プロジェクト: VID-STUDY/CharityBot
def cancel(update: Update, context: CallbackContext):
    if 'complain' in context.user_data:
        del context.user_data['complain']
    Navigation.to_main_menu(update, context)
    return ConversationHandler.END
コード例 #13
0
ファイル: needhelp.py プロジェクト: VID-STUDY/CharityBot
def cancel(update, context):
    if 'help_request' in context.user_data:
        del context.user_data['help_request']
    Navigation.to_main_menu(update, context)
    return ConversationHandler.END