def initiate_registration(user: telebot.types.User): """ Запускает процесс регистрации для пользователя :param user: пользователь, которого необходимо зарегистрировать """ state = get_state(user.id) first_name = user.first_name last_name = user.last_name bot.send_message(user.id, NEEDS_REG_MSG) if state.last_email_date and state.email_attempt >= MAX_NO_LIMIT_ATTEMPTS: seconds_passed = (datetime.now() - state.last_email_date).seconds seconds_left = EMAIL_LIMIT - seconds_passed if seconds_left > 0: return bot.send_message(user.id, reg_limit_msg(seconds_left)) markup = None if last_name: markup = ReplyKeyboardMarkup(one_time_keyboard=True) markup.row(KeyboardButton(f'{first_name} {last_name}')) save_state(user.id, state) instruction = bot.send_message(user.id, REG_NAME_SURNAME_MSG, reply_markup=markup) return bot.register_next_step_handler(instruction, check_name_surname)
def contact(): button_1=KeyboardButton(text.send_number,request_contact=True) button_2=KeyboardButton(text.to_main) kb=ReplyKeyboardMarkup(resize_keyboard=True) kb.row(button_1) kb.row(button_2) return kb
def go_main(): button_1=KeyboardButton(text.to_main) kb=ReplyKeyboardMarkup(resize_keyboard=True) kb.row(button_1) return kb #courses()
def Rate_Ru(): markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) markup.row(InlineKeyboardButton('1'), InlineKeyboardButton('2'), InlineKeyboardButton('3'), InlineKeyboardButton('4'), InlineKeyboardButton('5')) markup.row(InlineKeyboardButton('Меню'), InlineKeyboardButton('Назад')) return markup
def details_handler(message): user_id = str(message.from_user.id) params["q"] = data[DETAILS_STATE][user_id] weather_data = requests.get(weather_api_url, params).json() markup = ReplyKeyboardMarkup(resize_keyboard=True) markup.row("Say hello", "Show weather") if "temperature" in message.text.lower(): bot.send_message(message.chat.id, "Current temperature in {} is {}°C".format(weather_data["name"], weather_data["main"]["temp"]), reply_markup=markup) change_data(user_id, 'states', MAIN_STATE) elif "pressure" in message.text.lower(): bot.send_message(message.chat.id, "Current pressure in {} is {}hPa".format(weather_data["name"], weather_data["main"]["pressure"]), reply_markup=markup) change_data(user_id, 'states', MAIN_STATE) elif "humidity" in message.text.lower(): bot.send_message(message.chat.id, "Current humidity in {} is {}%".format(weather_data["name"], weather_data["main"]["humidity"]), reply_markup=markup) change_data(user_id, 'states', MAIN_STATE) elif "all" in message.text.lower(): bot.send_message(message.chat.id, "Current temperature in {} is {}°C, pressure is {}hPa, humidity {}%".format( weather_data["name"], weather_data["main"][ "temp"], weather_data["main"][ "pressure"], weather_data["main"][ "humidity"]), reply_markup=markup) change_data(user_id, 'states', MAIN_STATE) else: bot.reply_to(message, "I didn't understand you")
def costumes(cls): markup = ReplyKeyboardMarkup() markup.row(btn.btn26) markup.row(btn.btn27) markup.row(btn.btn13, btn.btn12) markup.resize_keyboard = True return markup
def get_user_markup(db_user): markup = ReplyKeyboardMarkup(True) for parameter, name in const.user_parameters.items(): if name: markup.row(f'{name}: {db_user[parameter]}') markup.row('Статистика') return markup
def get_film(message): if message.text[0] == '/': mes = bot.send_message( message.from_user.id, text='Извините, но фильм не может начинаться с "/". Повторите ввод.' ) bot.register_next_step_handler(message, get_film) return new = utils.BD('BD.sqlite') if new.check_film(new.film_name_to_id(message.text)): question = 'Я такой знаю. Как он тебе? Оставь оценку.\nОцени сюжет:' new.add_seen_user(new.film_name_to_id(message.text), message.from_user.id) else: question = 'Я такой не знаю. И как он тебе? Оставь оценку.\nОцени сюжет:' new.add_film(message.text, message.from_user.id) new.add_comment(new.film_name_to_id(message.text), message.from_user.id) keyboard = ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True) # наша клавиатура keyboard.row("1", "2", "3", "4", "5") keyboard.row("6", "7", "8", "9", "10") bot.send_message(message.from_user.id, text=question, reply_markup=keyboard) file_user = open(dir_user_kash + str(message.from_user.id) + '.txt', "w") file_user.write(str(message.text)) file_user.close() bot.register_next_step_handler(message, add_rating1)
def start(message): # Dibuja los botones cols = 2 key = ReplyKeyboardMarkup(row_width=cols, resize_keyboard=True, one_time_keyboard=True) queryset = Categoria.objects.filter(activo=True).order_by('nombre') nro_items = queryset.count() vueltas = int(nro_items // cols) impar = True if nro_items % cols > 0 else False i = 0 for _ in range(vueltas): btn_izq = str(queryset[i]) i += 1 btn_der = str(queryset[i]) i += 1 key.row(btn_izq, btn_der) if impar: key.row(str(queryset[i])) # Solicita un saludo segun el idioma msg = welcome(message) # user_id = message.from_user.id # Verifica el registro if not User.objects.filter(user_id=user_id).exists(): save_new_user(message) # Envia una respuesta bot.send_message(user_id, msg, reply_markup=key)
def set_faculty(message, response=messages['changeFaculty']): global institutes_list value = message.text.strip().upper() if len([item for item in institutes_list if item == value]) != 0 \ or redis_db.get('setup-' + str(message.chat.id) + '-i') is not None: with db_conn.cursor() as cur: keyboard = ReplyKeyboardMarkup() sql_query = 'SELECT name FROM group_names WHERE institute_id = ' \ '(SELECT id FROM institutes WHERE name = \'{}\') ORDER BY name;' bot.send_chat_action(message.chat.id, 'typing') cur.execute(sql_query.format(value)) redis_db.setex('setup-' + str(message.chat.id) + '-i', 64800, value) for item in cur: groups_list.append(item[0]) keyboard.row(item[0]) send = bot.send_message(message.chat.id, response, reply_markup=keyboard) bot.register_next_step_handler(send, set_group_number) else: wrong_institute(message)
def check_course(message: Message): """ Обрабатывает введенный пользователем курс материала для загрузки :param message: сообщение пользователя с курсом материала """ chat_id = message.chat.id if message.text in COMMANDS: return handle_cancel(message, 'загрузки') if not is_text(message) or not is_course_correct(message): instruction = bot.send_message(chat_id, INCORRECT_DATA_MSG) return bot.register_next_step_handler(instruction, check_course) state = get_state(chat_id) state.uploading_material.course = message.text markup = ReplyKeyboardMarkup(one_time_keyboard=True) for subject in SUBJECTS: markup.row(KeyboardButton(subject)) save_state(chat_id, state) instruction = bot.send_message(chat_id, UPLOAD_SUBJECT_MSG, reply_markup=markup) bot.register_next_step_handler(instruction, check_subject)
def main_menu(user): text = '---= Главное меню =---' keyboard = ReplyKeyboardMarkup(one_time_keyboard=True) keyboard.row(KeyboardButton('Играть'), KeyboardButton('Магазин')) keyboard.row(KeyboardButton('Настройки аккаунта')) user.resend_message(text, keyboard) bot.register_next_step_handler_by_chat_id(user.chat_id, main_handler)
def change_subgroup_number(message, response=messages['changeSubgroupNumber']): keyboard = ReplyKeyboardMarkup(True, True) keyboard.row('1', '2') keyboard.row(messages['bothSubgroups']) send = bot.send_message(message.chat.id, response, reply_markup=keyboard) bot.register_next_step_handler(send, save_new_subgroup)
def cont(): phone=KeyboardButton("📞 Отправить контакт",request_contact=True) back=KeyboardButton('◀️ Назад') kb=ReplyKeyboardMarkup(resize_keyboard=True) kb.row(phone) kb.row(back) return kb
def fin2(): kb=ReplyKeyboardMarkup(resize_keyboard=True) b1=KeyboardButton("🎥 Посмотреть") b2=KeyboardButton("📲 Главное меню") kb.row(b1) kb.row(b2) return kb
def kv(): kb=ReplyKeyboardMarkup(resize_keyboard=True) b1=KeyboardButton("Зарегистрироваться.") b2=KeyboardButton('◀️ Назад.') kb.row(b1) kb.row(b2) return kb
def menu_language(user): text = user.text_with_symbols("меню выбора языка") keyboard = ReplyKeyboardMarkup(one_time_keyboard=True) keyboard.row(KeyboardButton('RU'), KeyboardButton('EN')) user.resend_message(text, keyboard) bot.register_next_step_handler_by_chat_id(user.chat_id, menu_language_handler)
def Rate_Uz(): markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) markup.row(InlineKeyboardButton('1'), InlineKeyboardButton('2'), InlineKeyboardButton('3'), InlineKeyboardButton('4'), InlineKeyboardButton('5')) markup.row(InlineKeyboardButton('Menu'), InlineKeyboardButton('Orqaga')) return markup
def set_sum(message, command): if command == 'Отменить': order_id = orders.get_order_id_by_user(message.from_user.id) orders.end_order(order_id) response = 'Заказ отменён' states.update_user_state('WAITING', message.from_user.id) main_markup = ReplyKeyboardMarkup(True, False) main_markup.row('Запросить сумму') ret = {'Text': response, 'Markup': main_markup, 'Send': False} else: order_id = orders.get_order_id_by_user(message.from_user.id) # TODO здесь собственно вся байда с лимитами проверками суммы и тд check = True if check: states.update_user_state('CONFIRMING', message.from_user.id) response = 'Совершите платёж, пришлите файл подтверждения' orders.update_order('time', str(datetime.datetime.now()), order_id) else: response = 'Не получится выполнить такой запрос, ' \ 'попробуйте ввести другую сумму' ret = {'Text': response, 'Markup': None, 'Send': False} return ret
def loc(): locat = KeyboardButton("📌Отправить местоположение", request_location=True) back = KeyboardButton('◀️ Назад') kb = ReplyKeyboardMarkup(resize_keyboard=True) kb.row(locat) kb.row(back) return kb
def markup_keyboard(): keyboard = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=False) keyboard.row('/start', '/help') keyboard.row('Настройки') # keyboard.row('Скрыть') return keyboard
def set_institute(message, response=messages['changeInstitute']): global institutes_list keyboard = ReplyKeyboardMarkup() with db_conn.cursor() as cur: sql_query = 'SELECT name FROM institutes ORDER BY name' cur.execute(sql_query) for item in cur: institutes_list.append(item[0]) keyboard.row(item[0]) bot.send_chat_action(message.chat.id, 'typing') if response == messages[ 'changeInstitute'] and message.text != messages['mainMenu']: bot.edit_message_reply_markup(chat_id=message.chat.id, message_id=message.message_id, reply_markup=InlineKeyboardMarkup( [])) send = bot.send_message(message.chat.id, response, reply_markup=keyboard) bot.register_next_step_handler(send, set_faculty)
def sel_sost(): kb=ReplyKeyboardMarkup(resize_keyboard=True) b=KeyboardButton("С ремонтом") b1=KeyboardButton("Без ремонта") bb=KeyboardButton("⬅️ Назад") kb.row(b,b1) kb.row(bb) return kb
def button_settings(user): text = user.text_with_symbols("эмоджи на кнопках") keyboard = ReplyKeyboardMarkup(one_time_keyboard=True) keyboard.row(KeyboardButton(user.text('вкл')), KeyboardButton(user.text('выкл'))) user.resend_message(text, keyboard) bot.register_next_step_handler_by_chat_id(user.chat_id, button_settings_handler)
def manage_events(): markup = ReplyKeyboardMarkup(row_width=2) markup.add(KeyboardButton("🆕 Neuer Termin"), KeyboardButton("🔄 Termin bearbeiten")) markup.add(KeyboardButton("ℹ️ Terminzusammenfassung"), KeyboardButton("⏹ Termin absagen")) markup.row(KeyboardButton("🔙 Admin Menü")) return markup
def single_cancel_button_markup() -> object: ''' Function returns markup with only one button '❌ Cancel'. :rtype: ReplyKeyboardMarkup. ''' markup = ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True) markup.row(button_titles.CANCEL) return markup
def _form_markup(self) -> ReplyKeyboardMarkup: keyboard = ReplyKeyboardMarkup(resize_keyboard=True) for btn_row in utils.reply_keyboard_columns_generator( btn_names_list=self.TEXT_BUTTONS, col=2): keyboard.row(*btn_row) return keyboard
def symbols_in_the_title(user): text = f'{user.text_with_symbols("знаки в оглавлении")}' keyboard = ReplyKeyboardMarkup(one_time_keyboard=True) keyboard.row(KeyboardButton(user.button_with_emoji('знаки в начале')), KeyboardButton(user.button_with_emoji('знаки в конце'))) user.resend_message(text, keyboard) bot.register_next_step_handler_by_chat_id(user.chat_id, symbols_in_the_title_handler)
def master(): markup = ReplyKeyboardMarkup(row_width=2) markup.row(KeyboardButton("📝 Show Table")) # markup.add(KeyboardButton("📝 Show Table"), KeyboardButton("SQL Command")) markup.add(KeyboardButton("Manage Members"), KeyboardButton("Remove Event")), markup.row(KeyboardButton("Remove Survey"), KeyboardButton("🔙 Main Menu")) return markup
def events(): markup = ReplyKeyboardMarkup(row_width=2) markup.add(KeyboardButton("🎭 Alle Termine mit Details"), KeyboardButton("⁉️ Ausstehende Rückmeldungen")) markup.add(KeyboardButton("✅ Meine Zusagen"), KeyboardButton("❌ Meine Absagen")) markup.row(KeyboardButton("Hauptmenü")) return markup