async def cancel_handler(message: types.Message, state: FSMContext): current_state = await state.get_state() if current_state is None: return logging.info('Cancelling state %r', current_state) await state.finish() greet_kb = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) button_menu = KeyboardButton('🌐Главное меню🌐') greet_kb.add(button_menu) await bot.send_message(message.chat.id, text="Ваш заказ отменен, вернитесь в главное меню", reply_markup=greet_kb)
def middle_africa(): keyboard = ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) cg_button = KeyboardButton(text='Конго🇨🇬') ao_button = KeyboardButton(text='Ангола🇦🇴') gq_button = KeyboardButton(text='Гвинея🇬🇶') st_button = KeyboardButton(text='Сан-Томе и Принсипи🇸🇹') td_button = KeyboardButton(text='Чад🇹🇩') ga_button = KeyboardButton(text='Габон🇬🇦') cf_button = KeyboardButton(text='ЦАР🇨🇫') back_africa_button = KeyboardButton(text='🔙Регионы Африки') keyboard.add(cg_button, ao_button, gq_button, st_button, td_button, ga_button, cf_button, back_africa_button) return keyboard
def north_africa(): keyboard = ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) eg_button = KeyboardButton(text='Египет🇪🇬') tn_button = KeyboardButton(text='Тунис🇹🇳') dz_button = KeyboardButton(text='Алжир🇩🇿') ly_button = KeyboardButton(text='Ливия🇱🇾') eh_button = KeyboardButton(text='Западная Сахара🇪🇭') ma_button = KeyboardButton(text='Марокко🇲🇦') mr_button = KeyboardButton(text='Мавритания🇲🇷') back_africa_button = KeyboardButton(text='🔙Регионы Африки') keyboard.add(eg_button, tn_button, dz_button, ly_button, eh_button, ma_button, mr_button, back_africa_button) return keyboard
async def process_tel_number(message: types.Message, state: FSMContext): """ Process tel_number """ async with state.proxy() as data: data['tel_number'] = message.text db.add_tel_number(message.from_user.id, message.text) markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) for institut in institutes.keys(): institut_btn = KeyboardButton(institut) markup.add(institut_btn) await Registration.next() await message.reply(MESSAGES['institute'], reply_markup=markup, reply=False)
async def start_menu_keyboard(): markup = ReplyKeyboardMarkup(row_width=2, resize_keyboard=True, one_time_keyboard=True) menu_button = types.KeyboardButton( emoji.emojize(':man_cook:') + ' Рестораны') cart_button = types.KeyboardButton(' Корзина') orders_button = types.KeyboardButton(' Заказы') promos_button = types.KeyboardButton(' Новости') settings_button = types.KeyboardButton(' Настройки') help_button = types.KeyboardButton(' Помощь') markup.add(menu_button, cart_button, orders_button, promos_button, settings_button, help_button) return markup
def back_1(): n = 0 markup = ReplyKeyboardMarkup(resize_keyboard=True,row_width=2) cotegory = db.get_cotegory() if len(cotegory)%2 == 0: for i in cotegory: item1 = KeyboardButton(str(cotegory[n])) n+=1 if n == len(cotegory): break item2 = KeyboardButton(str(cotegory[n])) if n%2 == 1: markup.add(item1, item2) else: item3 = KeyboardButton(str(cotegory[-1])) cotegory.pop(-1) for i in cotegory: item1 = KeyboardButton(str(cotegory[n])) n+=1 if n == len(cotegory): break item2 = KeyboardButton(str(cotegory[n])) if n%2 == 1: markup.add(item1, item2) markup.add(item3) item3 = KeyboardButton("Назад") markup.add(item3) return markup
async def process_name(message: types.Message, state: FSMContext): async with state.proxy() as data: data['name'] = message.text await Form.next() greet_kb = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) button_cancel = ('/Отменить❌') greet_kb.add(button_cancel) await bot.send_message(message.chat.id, md.italic( f"2⃣Отлично, {message.from_user.first_name}\n" "Сколько тебе лет?🔞"), reply_markup=greet_kb, parse_mode=ParseMode.MARKDOWN)
def generate_reply_keyboard(args: ListOfButtons) -> ReplyKeyboardMarkup: keyboard = ReplyKeyboardMarkup(resize_keyboard=True) if not args.align: for num, button in enumerate(args.text): keyboard.add(KeyboardButton(text=str(button))) else: count = 0 for row_size in args.align: keyboard.row(*[ KeyboardButton(text=str(text)) for text in args.text[count:count + row_size] ]) count += row_size return keyboard
async def cmd_start(message: types.Message): await Form.name.set() greet_kb = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) button_cancel = ('/Отменить❌') greet_kb.add(button_cancel) await bot.send_message( message.chat.id, md.italic( "Если вы ознакомились с нашим меню, то для заполнения заявки нужно указать свои данные📝\n" "Чтобы мы могли с вами связаться, вводите пожалуйста точную информаци, спасибо😊\n" "Если вы ввели не те данные, нажмите Отменить❌\n" "1⃣Введите свои инициалы(ФИО)"), reply_markup=greet_kb, parse_mode=ParseMode.MARKDOWN)
async def start_command(message: types.Message): mes = message.text.split() #mes = message.text print(mes) if len(mes) == 1: button_get_geo = KeyboardButton('Отправить свою локацию 🗺️', request_location=True) greet_geo = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) greet_geo.add(button_get_geo) await message.reply("введите город в формате /p город", reply_markup=greet_geo) else: r = get_weather(mes[1], WEA_KEY) await message.reply(r, parse_mode=types.ParseMode.HTML)
def currency_keyboard(currency_type: str) -> ReplyKeyboardMarkup: """Get keyboard with currencies from whitelists.""" keyboard = ReplyKeyboardMarkup(row_width=5, one_time_keyboard=currency_type == "sell") keyboard.row(*[KeyboardButton(c) for c in FIAT]) keyboard.add(*[KeyboardButton(c) for c in CRYPTOCURRENCY]) cancel_button = KeyboardButton(emojize(":x: ") + i18n("cancel")) if currency_type == "sell": keyboard.row( KeyboardButton(emojize(":fast_reverse_button: ") + i18n("back")), cancel_button, ) else: keyboard.row(cancel_button) return keyboard
def north_europe(): keyboard = ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) dk_button = KeyboardButton(text='Дания🇩🇰') is_button = KeyboardButton(text='Исландия🇮🇸') lv_button = KeyboardButton(text='Латвия🇱🇻') lt_button = KeyboardButton(text='Литва🇱🇹') no_button = KeyboardButton(text='Норвегия🇳🇴') fi_button = KeyboardButton(text='Финляндия🇫🇮') se_button = KeyboardButton(text='Швеция🇸🇪') ee_button = KeyboardButton(text='Эстония🇪🇪') back_eus_button = KeyboardButton(text='🔙Регионы Европы') keyboard.add(dk_button, is_button, lv_button, lt_button, no_button, fi_button, se_button, ee_button, back_eus_button) return keyboard
async def process_gender(message: types.Message, state: FSMContext): async with state.proxy() as data: data['where_to'] = message.text markup = ReplyKeyboardMarkup() markup.add(KeyboardButton('Верно')) markup.add(KeyboardButton('Не верно')) # And send message await bot.send_message(message.chat.id, md.text( md.text('Вы хотите добраться из: \n', md.bold(data['where_from'])), md.text('в:\n', md.bold(data['where_to'])), md.text('Верно?'), sep='\n'), parse_mode=ParseMode.MARKDOWN, reply_markup=markup) # Finish conversation data.state = None
async def process_begin_command(message: types.Message): button_model_1 = InlineKeyboardButton('Classic', callback_data='a') button_model_2 = InlineKeyboardButton('Classic B', callback_data='b') button_model_3 = InlineKeyboardButton('Deep dark fantasies', callback_data='c') modeling_kb = InlineKeyboardMarkup(resize_keyboard=True).add( button_model_1).add(button_model_2).add(button_model_3) await message.reply( "Итак, пожалуйста выберите модель, с которой будем работать", reply_markup=modeling_kb) button_start = KeyboardButton('Начать') button_cancel = KeyboardButton('Отменить') greet_kb = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) greet_kb.add(button_start).add(button_cancel)
async def other(message: types.Message): '''Функция срабатывает при нажатии на кнопку всячина''' await send_log(message) #кнопки для всякой всячины button_backup = KeyboardButton('Откат действий◀️') button_exit = KeyboardButton('Выйти❌') menu_other = ReplyKeyboardMarkup() menu_other.add(button_exit, button_backup) await message.answer( 'Тут так же можно выполнить много хитрых и не очень махинаций', reply_markup=menu_other)
async def enter_sum(message: Message, state: FSMContext): try: spl = message.text.split(' ') sum_value = round(float(spl[0]), 2) if sum_value % 1 == 0: sum_value = int(sum_value) if sum_value > 10**15: await message.answer( 'What kind of inflation is it?\nHope you enter wrong value') return None comment = ' '.join(spl[1:]) await state.update_data(com=comment) # Saving comment db_connect() choose_cat_kb = ReplyKeyboardMarkup(resize_keyboard=True).add( back_to_menu) # Create keyboard for categories data = await state.get_data( ) # Get data about which choosen income or expencese expence_par = data.get('exin') query_get_user_categories = """SELECT category FROM CATEGORIES WHERE ID = (%s) and IN_EX = (%s);""" param = [message.from_user.id, expence_par] cur.execute(query_get_user_categories, param) categories_list = [] rows = list(cur) for category in rows: # Generating user categories categories_list.append( category[0] ) # Saving categories to filter message when one is choosen pairs = len(categories_list) // 2 ostatok = len(categories_list) % 2 for i in range(pairs): i = (i + 1) * 2 choose_cat_kb = choose_cat_kb.row( KeyboardButton(f'{categories_list[i - 2]}'), KeyboardButton(f'{categories_list[i - 1]}')) if ostatok == 1: choose_cat_kb.add(KeyboardButton(f'{categories_list[-1]}')) choose_cat_kb = choose_cat_kb.add( KeyboardButton('➕Add category')) # Add '+add category' button await message.answer('Choose category', reply_markup=choose_cat_kb) await state.update_data(categories=categories_list ) # Save user categories await state.update_data(sum=sum_value) # Save sum await state.update_data(show_sum=sum_value) await Inc_exp.next() conn.close() except ValueError: await message.answer('Incorrect value. Try again', reply_markup=back_to_menu_keyboard)
async def class_information(msg, school_id, class_name): bos = cur.execute('''SELECT u.name FROM classes c LEFT JOIN users u ON c.bos = u.user_id WHERE c.school = ? and c.name = ?''', [school_id, class_name]).fetchone()[0] bos = 'Нету' if bos is None else bos panel = ReplyKeyboardMarkup(resize_keyboard=True) button = KeyboardButton(text='Добавить кл. рук.') if bos != 'Нету': button = KeyboardButton(text='Убрать кл. рук.') panel.add(button, KeyboardButton(text='Удалить класс')) panel.add(KeyboardButton(text='Выйти'), KeyboardButton(text='Переименовать')) await msg.answer(text='Классный руководитль: ' f'\n{bos}', reply_markup=panel)
async def process_name(message: types.Message, state: FSMContext): """ Process user name """ async with state.proxy() as data: data['name'] = message.text db.create_user(message.from_user.id, message.text) markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) for institut in institutes.keys(): institut_btn = KeyboardButton(institut) markup.add(institut_btn) await Welcome.next() await message.reply(MESSAGES['institute'], reply_markup=markup, reply=False)
async def process_sail_model(message: Message, state: FSMContext): async with state.proxy() as data: data['sail'] = message.text await Tuning.next() ReplyKeyboardRemove() if message.text == 'Zaoli': markup = ReplyKeyboardMarkup(resize_keyboard=True, selective=True) markup.add("R12", "R14", "R15", "R16") else: markup = ReplyKeyboardMarkup(resize_keyboard=True, selective=True) markup.add("N9-L5", "N9-L5(H)", "N10-L5(H)", "N10-L5", "N12-L9(B)", "N13-L16", "N13-L12", "N14-L18") await message.reply("Какая у вас модель паруса?", reply_markup=markup)
def get_main_menu() -> ReplyKeyboardMarkup: kb = ReplyKeyboardMarkup(resize_keyboard=True) kb.add(buttons.mm_zmanim.value, buttons.mm_shabbat.value, buttons.mm_holidays.value) kb.add(buttons.mm_rh.value, buttons.mm_daf_yomi.value, buttons.mm_fasts.value) kb.add(buttons.mm_zmanim_by_date.value, buttons.mm_converter.value) kb.add(buttons.hm_report.value, buttons.mm_settings.value) return kb
async def process_gender(message: types.Message, state: FSMContext): async with state.proxy() as data: chat_id = message.chat.id data['date'] = message.text markup = ReplyKeyboardRemove() await bot.send_message( chat_id, md.text( md.text('Ваша заявка:', md.bold(message.from_user.first_name)), md.text('Ваши инициалы:', md.bold(data['name'])), md.text('Возраст:', md.bold(data['age'])), md.text('Город:', md.bold(data['city'])), md.text('Ваш телефон', md.bold(data['phone'])), md.text('Ваш заказ:', md.bold(data['service'])), md.text('Крепость кальяна:', md.bold(data['strength'])), md.text('Дата:', md.bold(data['date'])), sep='\n', ), reply_markup=markup, parse_mode=ParseMode.MARKDOWN, ) await bot.send_message( config.chat_id, md.text( md.text('Заявка от:', md.bold(message.from_user.first_name)), md.text('Инициалы:', md.bold(data['name'])), md.text('Возраст:', md.bold(data['age'])), md.text('Город:', md.bold(data['city'])), md.text('Телефон:', md.bold(data['phone'])), md.text('Заказ клиента:', md.bold(data['service'])), md.text('Крепость кальяна:', md.bold(data['strength'])), md.text('Дата:', md.bold(data['date'])), sep='\n', ), reply_markup=markup, parse_mode=ParseMode.MARKDOWN, ) greet_kb = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True) button_menu = KeyboardButton('🌐Главное меню🌐') greet_kb.add(button_menu) await bot.send_message( message.chat.id, text= "Ваша заявка📝 уже пришла к нам, в ближайшее время мы с вами свяжемся😊", reply_markup=greet_kb) await state.finish()
async def process_strength(message: types.Message, state: FSMContext): async with state.proxy() as data: data['strength'] = message.text await Form.next() greet_kb = ReplyKeyboardMarkup(resize_keyboard=True, row_width=1, one_time_keyboard=True) button_cancel = ('/Отменить❌') button_not = ('Нет') greet_kb.add(button_cancel, button_not) await bot.send_message( message.chat.id, md.text(md.italic("7⃣Вы хотели бы забронировать стол?⌚\n"), "Если да то напишите дату, например 14.06.20 в 14:00"), reply_markup=greet_kb, parse_mode=ParseMode.MARKDOWN)
async def semsum(message: Message, state: FSMContext): try: spl = message.text.split(' ') number = round(float(spl[0]), 2) if number > 10**15: await message.answer( 'What kind of inflation is it? \nHope you enter wrong value') return None comment = ' '.join(spl[1:]) await state.update_data(com=comment) # Saving comment await Semsum.Kateg1.set() # Set fsm into first state await state.update_data( sum=number ) # Saving expencese as parameter to filter categories by it choose_cat_kb = ReplyKeyboardMarkup(resize_keyboard=True).add( back_to_menu) # Create keyboard for categories query_get_user_categories = """SELECT category FROM CATEGORIES WHERE ID = (%s) and IN_EX = (%s);""" expence_par = 'expencese' param = [message.from_user.id, expence_par] db_connect() cur.execute(query_get_user_categories, param) categories_list = [] rows = list(cur) conn.close() for category in rows: # Generating user categories choose_cat_kb = choose_cat_kb.add(KeyboardButton( f'{category[0]}')) # Add buttons to ReplyKeyboardMarkup categories_list.append( category[0] ) # Saving categories to filter message when one is choosen pairs = len(categories_list) // 2 ostatok = len(categories_list) % 2 for i in range(pairs): i = (i + 1) * 2 choose_cat_kb = choose_cat_kb.row( KeyboardButton(f'{categories_list[i - 2]}'), KeyboardButton(f'{categories_list[i - 1]}')) if ostatok == 1: choose_cat_kb.add(KeyboardButton(f'{categories_list[-1]}')) choose_cat_kb = choose_cat_kb.add( KeyboardButton('➕Add category')) # Add 'add category' button await state.update_data(categories=categories_list ) # Save user categories await message.answer('Choose category', reply_markup=choose_cat_kb) except ValueError: await message.answer('Invalid sum value')
async def cancel_handler(message: types.Message, state: FSMContext): """ Allow user to cancel any action """ current_state = await state.get_state() if current_state is None: return logging.info('Cancelling state %r', current_state) # Cancel state and inform user about it await state.finish() # And remove keyboard (just in case) button_start = KeyboardButton('Начать') button_cancel = KeyboardButton('Отменить') greet_kb = ReplyKeyboardMarkup(resize_keyboard=True) greet_kb.add(button_start).add(button_cancel) await message.reply('Отменено', reply_markup=greet_kb)
async def process_service(message: types.Message, state: FSMContext): async with state.proxy() as data: data['service'] = message.text await Form.next() greet_kb = ReplyKeyboardMarkup(resize_keyboard=True, row_width=3, one_time_keyboard=True) button_soft = KeyboardButton('Мягкий') button_medium = KeyboardButton('Средний') button_hard = KeyboardButton('Жеский') button_cancel = KeyboardButton('/Отменить❌') greet_kb.add(button_soft, button_medium, button_hard, button_cancel) await bot.send_message(message.chat.id, text="6⃣Какой крепости кальян вы бы хотели?💨", reply_markup=greet_kb, parse_mode=ParseMode.MARKDOWN)
async def start(message: types.Message): #кнопки для волшебного входа button_start = KeyboardButton( 'Здравствуйте, это чат-бот, который связывает людей, которым нужна помощь и людей, которые могут попомь!' ) magic_start = ReplyKeyboardMarkup(one_time_keyboard=True) magic_start.add(button_start) await message.answer( 'Привет👋\n\nЭто Your Bunny Wrote бот и я советую перечитать названия🤠\nА ещё я советую задержаться у нас подольше, у нас тут много интересного\n\nYour Bunny Wrote - место для знакомств : \n - скейтеров🛹\n - хипстеров🦹♀️ \n и инопланетян👽', reply_markup=magic_start) await message.answer_sticker('CAADAgADZgkAAnlc4gmfCor5YbYYRAI') if (not db.user_exists(message.from_user.id)): #если юзера нет в базе добавляем его db.add_user(message.from_user.username, message.from_user.id, message.from_user.full_name)
def get_revising_kb_2(all_words, correct_word): #for 2/4 revizing quiz words = all_words.copy() kb_options = [correct_word] words.remove(correct_word) random.shuffle(words) kb_options.append(words[0]) kb_options.append(words[1]) random.shuffle(kb_options) revising_kb = ReplyKeyboardMarkup(resize_keyboard=True) for word in kb_options: revising_kb.add(KeyboardButton(word.eng_word)) return revising_kb
async def set_name_for_round(message: Message): """ Ставит название раунда и предлагает выбрать время между вопросами Parameters ---------- message : types.Message Текст сообщения """ set_current_round(message.text) quiz = get_quiz() quiz.add_round(message.text) set_quiz(quiz) keyboard = ReplyKeyboardMarkup(resize_keyboard=True) keyboard.add('15 сек.', '30 сек.', '1 мин.', '5 мин.', '10 мин.', 'Отмена') await CreateQuiz.waiting_for_time_between_questions.set() await message.reply('Какой промежуток будет между вопросами?', reply_markup=keyboard)
def south_asia(): keyboard = ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) in_button = KeyboardButton(text='Индия🇮🇳') pk_button = KeyboardButton(text='Пакистан🇵🇰') bd_button = KeyboardButton(text='Бангладеш🇧🇩') ir_button = KeyboardButton(text='Иран🇮🇷') af_button = KeyboardButton(text='Афганистан🇦🇫') mv_button = KeyboardButton(text='Мальдивы🇲🇻') bt_button = KeyboardButton(text='Бутан🇧🇹') np_button = KeyboardButton(text='Непал🇳🇵') lk_button = KeyboardButton(text='Шри-Ланка🇱🇰') back_asia_button = KeyboardButton(text='🔙Регионы Азии') keyboard.add(in_button, pk_button, bd_button, ir_button, af_button, mv_button, bt_button, np_button, lk_button, back_asia_button) return keyboard
async def execute(cls, m: Message, state: FSMContext = None, **kwargs): if len(m.text) > 50: await m.answer('Имя должно быть меньше пятидесяти символов') return for entity in m.entities: if entity.type in ['mention', 'text_mention']: await m.answer('Имя не может содержать теги') return async with state.proxy() as dt: dt['name'] = m.html_text kb = ReplyKeyboardMarkup() male = KeyboardButton('Мужской') female = KeyboardButton('Женский') transgender = KeyboardButton('Трансгендер') kb.add(male, female, transgender) await m.answer('Какого ты пола?', reply_markup=kb) await CreatePlayerForm.next()