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, '')
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())
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)
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'])
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)
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У вас всё получится:)" )
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)
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)
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)
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)
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)
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)
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'])
def handle_start(self, chatid): state = StateWaitNext() db.set_state(chatid, state) main.bot.send_message( chatid, "Привет, я бот Uzglobalkargo. Я могу отследить ваш груз по вашему трэк-коду, " "присылать уведомления о доставке груза. Еще могу принимать новые заказы на " "отправку грузов из Турции в Узбекистан. Для продолжения напишите 'Далее'", reply_markup=keyboards.next)
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)
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])
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"])
def handle_message(self, chatid, message): if message == 'Далее': state = StateLicense() db.set_state(chatid, state) main.bot.send_message( chatid, 'Чтобы продолжить, вам необходимо дать согласие на обработку и передачу ' 'своих персональных данных. Данные не будут переданы третьим лицам и ' 'сторонним организациям', reply_markup=keyboards.accept)
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)
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)
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)
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())
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"])
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'])
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)
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)
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)
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)
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')
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)