Beispiel #1
0
def translate(message):
    language = requests.post(translate_url,
                             data={
                                 'key': key,
                                 'text': message.text,
                                 'lang': "en"
                             })
    lang = ''
    index = 0
    for i in range(len(list(langs_list.values()))):
        if ''.join(language.json()['text']) == list(langs_list.values())[i]:
            lang = list(langs_list.keys())[i]
            index = i
    if lang == '':
        bot.send_message(message.chat.id,
                         "Не знаю такого языка, попробуй снова")
    else:
        translate = requests.post(translate_url,
                                  data={
                                      'key':
                                      key,
                                      'text':
                                      db.get_phrase(
                                          message.chat.id).decode("utf-8"),
                                      'lang':
                                      list(langs_list.keys())[index]
                                  })
        bot.send_message(message.chat.id, translate.json()['text'])
        bot.send_message(message.chat.id,
                         "Введи фразу, которую хочешь перевести")
        db.set_state(message.chat.id, config.States.S_ENTER_PHRASE.value)
        db.set_phrase(message.chat.id, '')
Beispiel #2
0
def intro_3_f(**kwargs):
    if 'id' in kwargs and 'state' in kwargs:
        if kwargs['state'] < menu:
            db.set_state(kwargs['id'], intro_2)
            bot.send_message(kwargs['id'],
                             msgs.intro_3,
                             reply_markup=get_intro_3_markup())
Beispiel #3
0
def intro_1_f(**kwargs):
    intro_1_markup = get_intro_1_markup()
    if 'id' in kwargs:
        db.set_state(kwargs['id'], intro_1)
        bot.send_message(kwargs['id'],
                         db.get_video(),
                         reply_markup=intro_1_markup)
Beispiel #4
0
def account_f(**kwargs):
    if 'id' in kwargs:
        check_new_month()
        db.set_state(kwargs['id'], account)
        reg_date = bot_time.get_reg_date(db.get_registred_time(kwargs['id']))
        balance = db.get_balance(kwargs['id'])
        parent_id = db.get_parent_by_id(kwargs['id'])
        if db.is_have_free_access(kwargs['id']):
            exp_date = 'бесплатная'
        else:
            exp_date = bot_time.get_exp_date(
                db.get_expiration_time(kwargs['id']))
            if exp_date is not None:
                exp_date = 'истекает ' + exp_date
            else:
                exp_date = 'не оплачена'
        if parent_id is not None and parent_id != 398821553:
            parent_name = db.get_name_by_id(parent_id)
            parent_phone = db.get_phone_by_id(parent_id)
            msg = msgs.account.format(parent_name, parent_phone, parent_id,
                                      exp_date, balance)
        else:
            msg = msgs.account_no_par.format(exp_date, balance)
        bot.send_message(kwargs['id'], msg, reply_markup=get_menu_markup())
        referal_f(id=kwargs['id'])
Beispiel #5
0
def callback_trouble_type(call):
    if call.data == "voice":
        db.set_state(call.message.chat.id, config.States.S_NETWORK_TYPE.value)
        db.save_user_answer(call.message.chat.id,
                            config.States.S_TROUBLE_TYPE_ANSWER.value, 'voice')
        keyboard = types.InlineKeyboardMarkup()
        key_2g = types.InlineKeyboardButton(text='2G', callback_data='2g')
        keyboard.add(key_2g)
        key_3g = types.InlineKeyboardButton(text='3G', callback_data='3g')
        keyboard.add(key_3g)
        key_skip = types.InlineKeyboardButton(text='Пропустити',
                                              callback_data='skip')
        keyboard.add(key_skip)
        bot.send_message(call.message.chat.id,
                         text=config.message_library["network_type"],
                         reply_markup=keyboard)
    elif call.data == "data":
        db.set_state(call.message.chat.id, config.States.S_NETWORK_TYPE.value)
        db.save_user_answer(call.message.chat.id,
                            config.States.S_TROUBLE_TYPE_ANSWER.value, 'data')
        keyboard = types.InlineKeyboardMarkup()
        key_2g = types.InlineKeyboardButton(text='2G', callback_data='2g')
        keyboard.add(key_2g)
        key_3g = types.InlineKeyboardButton(text='3G', callback_data='3g')
        keyboard.add(key_3g)
        key_4g = types.InlineKeyboardButton(text='4G', callback_data='4g')
        keyboard.add(key_4g)
        key_skip = types.InlineKeyboardButton(text='Пропустити',
                                              callback_data='skip')
        keyboard.add(key_skip)
        bot.send_message(call.message.chat.id,
                         text=config.message_library["network_type"],
                         reply_markup=keyboard)
Beispiel #6
0
def callback_worker(call):
    if call.data == "startConstructor":
        if (call.from_user.username is None):
            bot.send_message(
                call.message.chat.id,
                "В настройках укажите свой логин, чтобы с вами могли связаться покупатели и возвращайтесь! :)"
            )
        else:
            bot.send_message(call.message.chat.id,
                             "Выберите категорию: ",
                             reply_markup=keyboard.categoriesListKeyboard())
            db.set_state(call.message.chat.id,
                         config.States.S_ENTER_CATEGORY.value)
    elif call.data == "sendToModeration":
        result = db.fetch(call.from_user.id)
        announc = Announcement(result)
        bot.send_photo(config.admin_chat_id,
                       photo=announc.photo,
                       caption="Новое объявление!\n\n {}".format(
                           announc.showInfo()),
                       parse_mode="Markdown")
        bot.send_message(call.message.chat.id, "Отправлено на модерацию!")
    elif call.data == "help":
        bot.send_message(
            call.message.chat.id,
            "Я создан для того, чтобы помогать вам составлять объявления. Следуйте инструкциям, публикация после модерации.\nУ вас всё получится:)"
        )
Beispiel #7
0
def user_entering_description(message):
    if len(message.text) < 10 or len(message.text) > 255:
        bot.send_message(message.chat.id, "Слишком короткое/длинное описание!")
        return
    else:
        db.update_data(message.from_user.id, 'description', message.text)
        bot.send_message(message.chat.id, "Хорошо, введите цену (BYN):")
        db.set_state(message.chat.id, config.States.S_SEND_PRICE.value)
Beispiel #8
0
def user_entering_title(message):
    if len(message.text) < 3 or len(message.text) > 30:
        bot.send_message(message.chat.id, "Слишком короткое/длинное название!")
        return
    else:
        db.update_data(message.from_user.id, 'title', message.text)
        bot.send_message(message.chat.id, "Понял, теперь описание:")
        db.set_state(message.chat.id, config.States.S_SEND_DESCRIPTION.value)
Beispiel #9
0
def get_name_ask_phone_f(**kwargs):
    if 'id' in kwargs and 'text' in kwargs:
        db.set_name(kwargs['id'], kwargs['text'])
        phone_markup = get_phone_markup()
        bot.send_message(kwargs['id'],
                         msgs.ask_phone,
                         reply_markup=phone_markup)
        db.set_state(kwargs['id'], get_phone_ask_email)
Beispiel #10
0
def ask_name_f(**kwargs):
    if 'id' in kwargs and 'state' in kwargs:
        if kwargs['state'] < menu:
            markup = get_base_markup()
            bot.send_message(kwargs['id'],
                             msgs.ask_name.format(kwargs['id']),
                             reply_markup=markup)
            db.set_state(kwargs['id'], get_name_ask_phone)
Beispiel #11
0
def callback_personal_data(call):
    if call.data == "yes":
        db.set_state(call.message.chat.id, config.States.S_USER_SEARCH.value)
        user_search(call.message)
    elif call.data == "no":
        bot.send_message(call.message.chat.id,
                         config.message_library["personal_data_permission"])
        db.set_state(call.message.chat.id, config.States.S_START.value)
Beispiel #12
0
def user_entering_city(message):
    if len(message.text) < 2 or len(message.text) > 30:
        bot.send_message(message.chat.id, "Введите настоящий город!")
        return
    else:
        db.update_data(message.from_user.id, 'city', message.text)
        bot.send_message(message.chat.id, "Хорошо, ваш заголовок:")
        db.set_state(message.chat.id, config.States.S_SEND_TITLE.value)
Beispiel #13
0
def get_amount_ask_creds_f(**kwargs):
    if 'id' in kwargs and 'text' in kwargs:
        try:
            amount = float(kwargs['text'].replace(',', '.'))
            db.set_amount(kwargs['id'], amount)
            bot.send_message(kwargs['id'], msgs.getcreds)
            db.set_state(kwargs['id'], get_creds)
        except ValueError:
            ask_amount_f(id=kwargs['id'], text=kwargs['text'])
Beispiel #14
0
 def handle_start(self, chatid):
     state = StateWaitNext()
     db.set_state(chatid, state)
     main.bot.send_message(
         chatid,
         "Привет, я бот Uzglobalkargo. Я могу отследить ваш груз по вашему трэк-коду, "
         "присылать уведомления о доставке груза. Еще могу принимать новые заказы на "
         "отправку грузов из Турции в Узбекистан. Для продолжения напишите 'Далее'",
         reply_markup=keyboards.next)
Beispiel #15
0
def terms_of_use_f(**kwargs):
    markup = get_terms_of_use_markup()
    if 'id' in kwargs:
        db.set_state(kwargs['id'], terms_of_use)
        for file_id, caption in db.get_termsofuse_files():
            bot.send_document(chat_id=kwargs['id'],
                              data=file_id,
                              caption=caption,
                              reply_markup=markup)
Beispiel #16
0
def send_welcome(message):
    chat_id = message.chat.id
    db.set_state(chat_id, 0)

    bot.send_message(
        chat_id=chat_id,
        text='''Hello {}, answer my questions, please :)'''.format(
            message.chat.first_name))
    bot.send_message(chat_id=chat_id, text=qa[0][0])
Beispiel #17
0
def user_location_floor(message):
    if message.text.isdigit():
        db.set_state(message.chat.id, config.States.S_TROUBLE_TYPE.value)
        db.save_user_answer(message.chat.id,
                            config.States.S_TROUBLE_LOCATION_INDOOR.value,
                            message.text)
        trouble_type(message)
    else:
        bot.send_message(message.chat.id,
                         config.message_library["unknown_floor"])
Beispiel #18
0
 def handle_message(self, chatid, message):
     if message == 'Далее':
         state = StateLicense()
         db.set_state(chatid, state)
         main.bot.send_message(
             chatid,
             'Чтобы продолжить, вам необходимо дать согласие на обработку и передачу '
             'своих персональных данных. Данные не будут переданы третьим лицам и '
             'сторонним организациям',
             reply_markup=keyboards.accept)
Beispiel #19
0
def trouble_type(message):
    keyboard = types.InlineKeyboardMarkup()
    key_voice = types.InlineKeyboardButton(text='Голос', callback_data='voice')
    keyboard.add(key_voice)
    key_data = types.InlineKeyboardButton(text='Дані', callback_data='data')
    keyboard.add(key_data)
    bot.send_message(message.chat.id,
                     text=config.message_library["trouble_type"],
                     reply_markup=keyboard)
    db.set_state(message.chat.id, config.States.S_TROUBLE_TYPE_ANSWER.value)
Beispiel #20
0
def cmd_start(message):
    state = db.get_current_state(message.chat.id)
    if state == config.States.S_ENTER_PHRASE.value:
        bot.send_message(message.chat.id, "Жду ввода фразы...")
    elif state == config.States.S_ENTER_LANG.value:
        bot.send_message(message.chat.id, "Жду ввода языка...")
    else:
        bot.send_message(message.chat.id,
                         "Привет! Введи фразу, которую хочешь перевести")
        db.set_state(message.chat.id, config.States.S_ENTER_PHRASE.value)
Beispiel #21
0
 def handle_message(self, chatid, message):
     if message == 'Даю согласие':
         state = StateLanguage()
         db.set_state(chatid, state)
         main.bot.send_message(chatid,
                               'Выберите',
                               reply_markup=keyboards.zero)
         main.bot.send_message(chatid,
                               'свой язык:',
                               reply_markup=keyboards.language)
Beispiel #22
0
def invite_user_f(**kwargs):
    if 'state' in kwargs and kwargs['state'] < menu:
        return
    if 'id' in kwargs:
        db.set_state(kwargs['id'], invite_user)
        bot.send_message(kwargs['id'],
                         msgs.reflink.format(
                             rc.generate_reflink(
                                 db.get_refcode_by_id(kwargs['id']))),
                         reply_markup=get_menu_markup())
Beispiel #23
0
def user_main_menu(message):
    if message.text.isdigit() and message.text == '1':
        db.set_state(message.chat.id, config.States.S_GEO_LOCATION_TYPE.value)
        db.save_user_answer(message.chat.id, config.States.S_MAIN_MENU.value,
                            '1')
        bot.send_message(message.chat.id,
                         config.message_library["geo_location_type"])
    else:
        bot.send_message(message.chat.id,
                         config.message_library["unknown_command"])
Beispiel #24
0
def back(**kwargs):
    if 'id' in kwargs and 'state' in kwargs:
        if kwargs['state'] < menu or kwargs['state'] == pay:
            if kwargs['state'] == intro_2:
                intro_1_f(id=kwargs['id'])
            else:
                intro_2_f(id=kwargs['id'], state=kwargs['state'])
        else:
            db.set_state(kwargs['id'], account)
            menu_f(id=kwargs['id'])
Beispiel #25
0
def user_entering_price(message):
    if not message.text.isdigit():
        bot.send_message(message.chat.id, "Только цифры:)")
        return
    if int(message.text) < 1 or int(message.text) > 10000:
        bot.send_message(message.chat.id, "Введите нормальную цену:)")
        return
    else:
        db.update_data(message.from_user.id, 'price', message.text)
        bot.send_message(message.chat.id, "Пришлите мне одно фото товара")
        db.set_state(message.chat.id, config.States.S_SEND_PHOTO.value)
Beispiel #26
0
def intro_2_f(**kwargs):
    if 'id' in kwargs and 'state' in kwargs:
        if kwargs['state'] < menu:
            # print(bot.send_document(kwargs['id'], open('Презентация.pdf', 'rb')), 'Презентация.pdf')
            for file_id, caption in db.get_presentation_files():
                bot.send_document(chat_id=kwargs['id'],
                                  data=file_id,
                                  caption=caption,
                                  reply_markup=get_intro_2_markup())
            #bot.send_document(kwargs['id'], 'BQADAgADFQIAAn8ZCEpzWvPIxfNrGgI')
            db.set_state(kwargs['id'], intro_2)
Beispiel #27
0
def callback_network_type(call):
    if call.data == "2g" or call.data == "3g" or call.data == "4g" or call.data == "skip":
        db.set_state(call.message.chat.id, config.States.S_TICKET_NUMBER.value)
        db.save_user_answer(call.message.chat.id,
                            config.States.S_NETWORK_TYPE.value, call.data)
        save_user_common_info(call.message.chat.id)
        ticket_number = str(randrange(100, 200))
        bot.send_message(
            call.message.chat.id,
            config.message_library["ticket_number"] % ticket_number)
        db.save_user_answer(call.message.chat.id,
                            config.States.S_TICKET_NUMBER.value, ticket_number)
Beispiel #28
0
def get_phrase(message):
    message_phrase = message.text
    detect_lang = requests.post(detect_url,
                                data={
                                    'key': key,
                                    'text': message.text
                                })
    bot.send_message(
        message.chat.id,
        "Введите название языка, на который хотите перевести фразу " + "\"" +
        message_phrase + "\"")
    db.set_state(message.chat.id, config.States.S_ENTER_LANG.value)
    db.set_phrase(message.chat.id, message.text)
Beispiel #29
0
def send_question(message):
    chat_id = message.chat.id
    state = db.get_state(chat_id)

    if message.text == qa[state][1]:
        db.set_state(chat_id, state + 1)
        if state + 1 < len(qa):
            bot.send_message(chat_id=chat_id, text='Right! Next Q')
            bot.send_message(chat_id=chat_id, text=qa[state + 1][0])
        else:
            bot.send_message(chat_id=chat_id,
                             text='Congratulations! /restart to try again')
    else:
        bot.send_message(chat_id=chat_id, text='Try again')
Beispiel #30
0
def quests_left_f(**kwargs):
    if 'id' in kwargs and 'state' in kwargs:
        if kwargs['state'] < menu:
            db.set_state(kwargs['id'], quests_left)
            parent_id = db.get_parent_by_id(kwargs['id'])
            if parent_id is not None and parent_id != 398821553:
                parent_name = db.get_name_by_id(parent_id)
                parent_phone = db.get_phone_by_id(parent_id)
                faq = db.get_faq() + msgs.faq.format(parent_name, parent_phone,
                                                     parent_id)
                bot.send_message(kwargs['id'], faq)
            else:
                faq = db.get_faq() + msgs.faq_no_par
                bot.send_message(kwargs['id'], faq)