def send_date_confirmation(self, call, channel_id): day = int(call.data.split(";")[4]) month = int(call.data.split(";")[5]) year = int(call.data.split(";")[6]) date_ = date(year, month, day) text = self.data.message.form_calendar_confirm_date(date=date_) markup = InlineKeyboardMarkup() confirm_callback = self.form_order_callback(action="Confirm", channel_id=channel_id, day=day, month=month, year=year) confirm_button = InlineKeyboardButton(text="✅", callback_data=confirm_callback) decline_callback = self.form_order_callback(action="Start", channel_id=channel_id, prev_msg_action="Delete") decline_button = InlineKeyboardButton(text="❌", callback_data=decline_callback) markup.add(confirm_button, decline_button) self.send_message(call=call, text=text, reply_markup=markup)
def show_statistics(message): user = Users.get_user(user_id=str(message.chat.id)) text = STATISTICS_TEXT[user.lang] kb = InlineKeyboardMarkup(row_width=1) kb.add(*[InlineKeyboardButton(text=text, callback_data=f'{STATISTICS_IND}{SP}{button}') for button, text in STRATEGIES_KB.items()]) try: bot.delete_message(message.chat.id, user.last_message()) except Exception: pass lm = bot.send_message(message.chat.id, text, reply_markup=kb) user.last_message(lm.message_id)
def generety_categories_kb(self, categories: List[Union[Category, None]], **kwargs): kb = InlineKeyboardMarkup(**kwargs) buttons = [] for category in categories: id_ = category.id if category else None title_ = category.title if category else Text.get_body( Text.RETURN_TO_TOP) buttons.append( InlineKeyboardButton( title_, callback_data=f'{HENDLER_CATEGORY}{SEPARATOR}{id_}')) kb.add(*buttons) return kb
def show_studying_keyboard(message): keyboard = InlineKeyboardMarkup() keyboard.add( InlineKeyboardButton( text=f'Методичні матеріали {emojize(":books:", use_aliases=True)}', callback_data='study_methods')) keyboard.add( InlineKeyboardButton( text= f'Моя успішність {emojize(":chart_with_upwards_trend:", use_aliases=True)}', callback_data='my_progress')) bot.send_message(message.from_user.id, text='Вибери:', reply_markup=keyboard)
def show_referrals(call): user = Users.get_user(user_id=str(call.message.chat.id)) kb = InlineKeyboardMarkup(row_width=1) if BACK_IND in call.data.split(SP): kb.add(*[InlineKeyboardButton(text=text[user.lang], callback_data=f'{ACCOUNT_IND}{SP}{button}') for button, text in ACCOUNT_KB.items()]) bot.edit_message_text(ACCOUNT_TEXT[user.lang], call.message.chat.id, call.message.message_id, reply_markup=kb) else: status = user.ref_status kb.add(InlineKeyboardButton(text=BACK_BUTTON[user.lang], callback_data=f'{ACCOUNT_IND}{SP}{REFERRALS_IND}{SP}{BACK_IND}')) bot.edit_message_text(status, call.message.chat.id, call.message.message_id, reply_markup=kb)
def online_buttons(): markup = InlineKeyboardMarkup() markup.row_width = 3 button_counts = [0, 0, 0] for short_status in people_list.values(): status_group = messages_db[short_status[0]][0] button_counts[status_group] += 1 inline_buttons = [] for i in range(3): inline_buttons.append( InlineKeyboardButton(f"{status_groups[i][:2]} {button_counts[i]}", callback_data=f"cb_group{i}")) markup.add(*inline_buttons) return markup
def categories(message): kb = InlineKeyboardMarkup() for product in Product.get_promo_products(): if int(product.discount_price) < int(product.price): price = f'{product.discount_price}' else: price = product.price button = [ InlineKeyboardButton(text=f'{product.title[0:15]} Цена: {price}', callback_data=f'producttocar_{product.id}') ] kb.add(*button) bot.send_message(message.chat.id, 'Список акционных товаров:', reply_markup=kb)
def prj_button(user_id, soldate): prj = dbase.check_prj(user_id, soldate) print(prj) markup = InlineKeyboardMarkup() row = [] for have in prj: row.append( types.InlineKeyboardButton(dbase.get_name_project(have[0]), callback_data="tap-project" + str(have[0]))) markup.row(*row) row = [] row.append( types.InlineKeyboardButton("↩️", callback_data="back_to_calendar")) markup.row(*row) return markup
def training(d: Dictionary, phrase: Phrase, dst_lang: Language) -> InlineKeyboardMarkup: kb = InlineKeyboardMarkup() kb.add( handlers.dict_training_phrase(_('Yes'), dict_id=d.id, phrase_id=phrase.id, dst_lang_id=dst_lang.id, is_guessed=1), handlers.dict_training_phrase(_('No'), dict_id=d.id, phrase_id=phrase.id, dst_lang_id=dst_lang.id, is_guessed=0), handlers.training_done(_('Done'), d.id)) return kb
def show_department_callback(call): bot.answer_callback_query(call.id, "Ответ получен, загружаем данные!") un_id = call.data.split('#')[1] objects = postgre.get_departments_by_un_id(int(un_id)) markup = InlineKeyboardMarkup() if objects is not None: for obj in objects: callback = str(obj[0]) + "_" + 'departments' markup.add(InlineKeyboardButton(obj[1], callback_data=callback)) callback = 'back_from_departments' + '#' + un_id markup.add(InlineKeyboardButton('« Назад к университетам', callback_data=callback), InlineKeyboardButton('Нет моего факультета', callback_data='request_for_updates')) text = "Для этого университета на данный момент *доступны следующие факультеты:*" bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, parse_mode='Markdown', text=text, reply_markup=markup)
def create_markup_delete(user_a_id, user_b_id): markup = InlineKeyboardMarkup(row_width=3) delete_buddy_but = InlineKeyboardButton( text="Удалить из приятелей", callback_data=f"user_profile_viewer_delete_buddy_{user_a_id}" f"_{user_b_id}") cancel_but = InlineKeyboardButton( text="Назад", callback_data="user_profile_viewer_cancel") markup.add(delete_buddy_but) markup.add(cancel_but) return markup
def events_inline_keyboard(events_ids=[], user=None, language='ua'): keyboard = InlineKeyboardMarkup(row_width=7) user_events_ids = [obj.event_id for obj in user.events.all()] buttons = [InlineKeyboardButton("<", callback_data=f"page_down")] for i, event_id in enumerate(events_ids): # event_id is event's primary key (id) if event_id in user_events_ids: buttons.append(InlineKeyboardButton(f"{i+1} ✅ ", callback_data=f"sub_{event_id}")) else: buttons.append(InlineKeyboardButton(i+1, callback_data=f"sub_{event_id}")) buttons.append(InlineKeyboardButton(">", callback_data=f"page_up")) keyboard.add(*buttons) return keyboard
def gen_markup(db, key=None): markup = InlineKeyboardMarkup() if key == 'trips_list': trips = db['trips'] for k in trips: trip = trips[k]['title'] print('trips_list:>>>>>', trip, ' id - ', k) markup.add(InlineKeyboardButton( trip, callback_data=k)) #str(trips[k]['id']) elif key == 'new_trip': markup.add(InlineKeyboardButton('Заголовок', callback_data='title'), InlineKeyboardButton('Дата', callback_data='date'), InlineKeyboardButton('Описание', callback_data='descr'), InlineKeyboardButton('Фото', callback_data='pic'), InlineKeyboardButton('Условия', callback_data='cond'), InlineKeyboardButton('Цена', callback_data='price')) markup.add(InlineKeyboardButton('Постим?', callback_data='post')) elif key == 'register': print('get_trips_markup<<<<<<<reg<<<<<<<<<<', db.keys()) for k in db['price']: markup.add( InlineKeyboardButton(f'Register for: {k}', callback_data=k)) print(k, type(k)) # elif key == 'usr_data': # markup.add(KeyboardButton('Телефон', # request_location = False, # request_contact = True)) else: print('get_trips_markup<<<<<<<else<<<<<<<<<<') pass # for k in trips: # markup.add(InlineKeyboardButton(trips[k], callback_data = trips[k])) markup.add(InlineKeyboardButton('Назад', callback_data='back')) return markup
def adding_book(self, message: Message): """ Respond to a message asking to add, and then asks the user to add a book to the subscription using the buttons. If the link is not valid, then a message is sent asking to enter the correct link and the error is logged If the image does not exist, only text is sent. """ logger.show_msg(message) markup = InlineKeyboardMarkup() markup.add(InlineKeyboardButton(text="Да", callback_data="add_link")) markup.add( InlineKeyboardButton(text="Нет", callback_data="no_add_link")) parser = ParserManager() try: link = message.text.strip() book = parser.parsing_book(link) image_path = f"images/{book['image_name']}" case_rub = f'рубл{detail.ruble_cases[book["price"] % 100]}' if os.path.exists(image_path): self.uploading_photo(0.5, message) reply_msg = self.bot.send_photo( message.chat.id, photo=open(image_path, 'rb'), caption='Вы уверены, что хотите добавить:\n' f'"{book["title"]}" за {book["price"]} {case_rub}?', reply_markup=markup) logger.show_caption_photo(reply_msg) else: reply_msg = self.bot.send_message( message.chat.id, text='Вы уверены, что хотите добавить:\n' f'"{book["title"]}" за {book["price"]} {case_rub}?', reply_markup=markup) logger.show_msg(reply_msg) self.book_to_add[reply_msg.message_id] = book except: self.typing(1, message) error_msg = self.bot.send_message(message.chat.id, "Введите правильную ссылку!") logger.show_msg(error_msg)
def __ProcessChangeQuantity(self, msg: str): if msg == ld.CancelKey or msg == "/start": print(self.username + " has been cancelled changing request process") self.__deleteProcessMessage() self.Start() return if not (msg == ld.SkipKey): try: parsedValue = self.__GetNumberFromString(msg) if not parsedValue: raise Exception("Parsing error!") self.__quantity = parsedValue except: self.__bot.send_message( self.__chatId, ld.get_translate(self.__db, self.username, ld.WrongInputKey)) return self.__deleteProcessMessage() self.currentStep = RequestSteps.ChangeFeeType keyboard = InlineKeyboardMarkup(row_width=2) keyboard.row( InlineKeyboardButton(ld.get_translate(self.__db, self.username, ld.SellerKey), callback_data=ld.SellerKey), InlineKeyboardButton(ld.get_translate(self.__db, self.username, ld.BuyerKey), callback_data=ld.BuyerKey)) keyboard.row( InlineKeyboardButton(ld.get_translate(self.__db, self.username, ld.NobodyKey), callback_data=ld.NobodyKey)) keyboard.row( InlineKeyboardButton(ld.get_translate(self.__db, self.username, ld.CancelKey), callback_data=ld.CancelKey), InlineKeyboardButton(ld.get_translate(self.__db, self.username, ld.SkipKey), callback_data=ld.SkipKey)) reply = self.__bot.send_message(self.__chatId, ld.get_translate( self.__db, self.username, ld.SelectWhoPayFee), reply_markup=keyboard) self.__processMsgId = reply.message_id
def callbackAdditionalButtons(call): chatId = call.message.chat.id currentChat = Chats.getChat(chatId) settingsStrings = call.replies.stg.strings # ? All buttons # * Edit values buttons if call.data == 'stgEditValues': botReplies = call.replies.stg userDmId = currentChat.settings.lastMessageId[1] # * Creating a markup with all settings names, whose value can be edited markup = InlineKeyboardMarkup() for setting in settingsStrings: for button in setting: if button[2]: # * Converts in a strange way to get 'Test String' from 'testString' text = settingForUser(button[3]) tempButton = InlineKeyboardButton( text, callback_data=dumps([ button[1].replace('stg', 'edit'), button[3] ]) ) markup.row(tempButton) checkChat(userDmId) dmChat = Chats.getChat(userDmId) dmChat.settings.editMessageInfo['originalChatId'] = call.message.chat.id dmChat.save() originalChatUsername = call.message.chat.username if originalChatUsername: addUrlButton(markup, call.replies.goToChat[0], originalChatUsername) bot.send_message(userDmId, botReplies.editorMessage, reply_markup=markup) # * More info button if call.data == 'stgMoreInfo': allSettingsNames = [] for setting in settingsStrings: for button in setting: allSettingsNames.append(settingForUser(button[3])) text = '\n\n'.join(call.replies.stg.additionalInfo).format(*allSettingsNames) bot.send_message(chatId, text, parse_mode='html')
def menu(message): markup = InlineKeyboardMarkup(row_width=2) kanal = InlineKeyboardButton("📣 Kanalımız", url="https://t.me/WixströfkdmraGod") koruma = InlineKeyboardButton("Korumaya Al 🛡️", url="https://t.me/kdhsnfkdbot?startgroup=a") markup.add(kanal,koruma) bot.send_message(message.chat.id, """ *Spam Protector* _Gruplarınızı Korumak Amacı İle Yapılan Bir Bottur Botun Mantığı Spam Barındıran İçerikleri Gizlediği İçin Grubunuz Spama Düşmez Bölelikle Spam Tehlikesi Ortadan Kalkar_ *Yapmanız Gerekenler* _•Grubunuza Eklemek. (Korumaya Al Butonuna Tıklayarak) 1.Adım_ _•Full Yetkiye Sahip Olması İle Grubunuz Güvende Olacaktır. (Yetki Veriniz) 2.Adım_ _•Grup İçerisinde /spam komutunu yazmak (Komutu Yazmak) 3. Adım_ _LÜTFEN GRUBUNUZA EKLEDİKTEN VE YETKİ VERDİKTEN SONRA GRUP İÇERİSİNDE /spam YAZINIZ YOKSA KORUMA İŞLEMİ KAYIT ALITINA ALINMAZ_ """, reply_markup=markup, parse_mode="Markdown")
def sendDriverAgreeInline(self, bot, chatId, driverId, harga, orderId): # send only one button driver = self.dbconnector.read(driverId) nama = driver.nama alamat = driver.location['address'] lat = driver.location['location']['latitude'] lng = driver.location['location']['longitude'] response = 'Driver ' + nama + ' INGIN harga ' + harga + '\n' markup = InlineKeyboardMarkup(row_width=1) data = orderId + '@&' + 's@&' + driverId + '@&n' itembtn2 = InlineKeyboardButton('Pilih', callback_data=data) markup.add(itembtn2) bot.send_message(chatId, response, reply_markup=markup) bot.send_venue(chatId, lat, lng, 'Lokasi pengemudi', alamat)
def print_settings(chatId): try: key = InlineKeyboardMarkup() button = InlineKeyboardButton(text='Вкл/Выкл уведомления', callback_data='notifications') key.add(button) user = backend.get_user(chatId) notifications = user['notifications'] status = 'Уведомления: ' if notifications: status += '🟢' else: status += '🔴' bot.send_message(chatId, status, reply_markup=key) except Exception as err: bot.send_message(chatId, "Произошла ошибка") print('Произошла ошибка при выводе настроек пользователя', err)
def second_categories(message): chat_id = message.from_user.id keyboard = InlineKeyboardMarkup() keyboard.row_width = 1 _, ctgs = get_ctgs() for ctg in ctgs: if ctgs.index(ctg) > 58: keyboard.add(InlineKeyboardButton(ctg.replace("'", "\'"), callback_data=str(ctgs.index(ctg)))) keyboard.add(InlineKeyboardButton('Еще категории', callback_data='e2'), InlineKeyboardButton('Меню', callback_data='m')) bot.send_message(chat_id, 'Выберите категорию из списка', reply_markup=keyboard) return
def faq_markup(): markup = InlineKeyboardMarkup() markup.row_width = 2 markup.add(InlineKeyboardButton("Office", callback_data="get_halloffice"), InlineKeyboardButton("Committees", callback_data="get_committees"), InlineKeyboardButton("Sponsorship/PDPA", callback_data="get_sponsorship_markup"), InlineKeyboardButton("Finance Matters", callback_data="get_finance"), InlineKeyboardButton("Facilities booking", callback_data="get_booking"), InlineKeyboardButton("Media Facilities", callback_data="get_media_facilities"), InlineKeyboardButton("Report Faults", callback_data="get_report"), InlineKeyboardButton("Points System", callback_data="get_points"), InlineKeyboardButton("Demerit Points", callback_data="get_demerit"), InlineKeyboardButton("PAL Programme", callback_data="get_pal"), InlineKeyboardButton("The Eusoff Awards", callback_data="get_tea"), InlineKeyboardButton("Map of Eusoff", callback_data="get_map"), InlineKeyboardButton("Main Page", callback_data="get_main")) return markup
def TIMEZONES_INLINE(self): back_btn = InlineKeyboardButton('<<Back', callback_data='timezone') keyboard = InlineKeyboardMarkup(row_width=2) for i in range(5): keyboard.row( InlineKeyboardButton("MSK" + self.timezones[i], callback_data="timezone_change_" + self.timezones[i]), InlineKeyboardButton("MSK" + self.timezones[6 + i], callback_data="timezone_change_" + self.timezones[6 + i])) keyboard.row( InlineKeyboardButton("MSK" + self.timezones[5], callback_data="timezone_change_" + self.timezones[5]), back_btn) return {'text': 'Choose timezone:', 'keyboard': keyboard}
def vote(game): keyboard = InlineKeyboardMarkup(row_width=8) keyboard.add(*[ InlineKeyboardButton(text=f'{i + 1}', callback_data=f'vote {i + 1}') for i, player in enumerate(game['players']) if player['alive'] ]) keyboard.add( InlineKeyboardButton(text='Не голосовать', callback_data='vote 0')) message_id = bot.send_message(game['chat'], lang.vote.format(vote=get_votes(game)), reply_markup=keyboard).message_id database.games.update_one({'_id': game['_id']}, {'$set': { 'message_id': message_id }})
def keyboa_maker( items: BlockItems = None, front_marker: CallbackDataMarker = None, back_marker: CallbackDataMarker = None, items_in_row: int = None, auto_alignment: Union[bool, Iterable] = False, reverse_alignment_range: bool = False, slice_start: int = None, slice_stop: int = None, slice_step: int = None, copy_text_to_callback: bool = False, add_to_keyboard: InlineKeyboardMarkup = None, ) -> InlineKeyboardMarkup: """ :param items: :param front_marker: :param back_marker: :param items_in_row: :param auto_alignment: :param reverse_alignment_range: :param slice_start: :param slice_stop: :param slice_step: :param copy_text_to_callback: :param add_to_keyboard: :return: """ keyboard = add_to_keyboard if add_to_keyboard else InlineKeyboardMarkup() if items is None: return keyboard items = get_verified_items(items, slice_start, slice_stop, slice_step) _keyboa_pre_check(items=items, items_in_row=items_in_row, keyboard=keyboard) if items_in_row or auto_alignment: return get_generated_keyboard(items, front_marker, back_marker, items_in_row, auto_alignment, reverse_alignment_range, copy_text_to_callback, keyboard) return get_preformatted_keyboard(items, front_marker, back_marker, copy_text_to_callback, keyboard)
def HOURS_INLINE(self, when): back_btn = InlineKeyboardButton('<<Back', callback_data=when) go_to_min_btn = InlineKeyboardButton('Change minutes >>', callback_data='go_to_min_' + when) keyboard = InlineKeyboardMarkup(row_width=6) for i in range(4): s = [] for j in range(6): h = 6 * i + j s.append( InlineKeyboardButton(str(h), callback_data='hour_' + when + '_' + str(h))) keyboard.row(s[0], s[1], s[2], s[3], s[4], s[5]) keyboard.row(back_btn, go_to_min_btn) return keyboard
def buy_product(call): keyboard = InlineKeyboardMarkup() back = InlineKeyboardButton( text='<< back', callback_data=f'look my cart_{call.data.split("_")[1]}') keyboard.add(back) bot.edit_message_text(text='You bought!.', chat_id=call.message.chat.id, message_id=call.message.message_id, reply_markup=keyboard) user_id = models.User.objects(id_user=str(call.from_user.id)).first() cart_user = models.Cart.objects(user=user_id.id, active=True).first() cart_user.update(active=False, date_time=datetime.datetime.now()) print('bbbb') print(datetime.datetime.now())
def get_topic_links_keyboard(len_links, state_link=0): keyboard = InlineKeyboardMarkup() button_next = InlineKeyboardButton(text="»", callback_data="next_link") button_prev = InlineKeyboardButton(text="«", callback_data="prev_link") button_topics = InlineKeyboardButton(text="выбрать другую тему", callback_data="alt_topic") if state_link == 0 and state_link < len_links: keyboard.add(button_next) elif state_link > 0 and state_link < len_links: keyboard.add(button_prev, button_next) elif state_link > 0 and state_link == len_links: keyboard.add(button_prev) keyboard.add(button_topics) return keyboard
def products_by_cat(call): user = get_user(call.message) category = Category.objects.filter(id=get_id(call)).first() products = category.category_products[:5] for p in products: keyboard = InlineKeyboardMarkup(row_width=1) keyboard.add( InlineKeyboardButton( text=Texts.get_text('add_to_cart', user.language), callback_data=f'{Modules.ADD_TO_CART}_{p.id}'), InlineKeyboardButton(text=Texts.get_text('more_info', user.language), callback_data=f'{Modules.PRODUCT}_{p.id}')) bot.send_photo(user.telegram_id, photo=SHOP_URL + p.image_url, caption=p.title, reply_markup=keyboard)
def shooting_stage(game): players = [(i, player) for i, player in enumerate(game['players']) if player['alive']] random.shuffle(players) keyboard = InlineKeyboardMarkup(row_width=8) keyboard.add(*[ InlineKeyboardButton(text=f'{i + 1}', callback_data=f'shot {i + 1}') for i, player in players ]) bot.edit_message_text( f'{role_titles["mafia"].capitalize()} выбирает жертву.\n' + format_roles(game), chat_id=game['chat'], message_id=game['message_id'], reply_markup=keyboard)
def process_name_step(message): try: chat_id = message.chat.id name = message.text order = Order(name) self.user_dict[chat_id] = order update_stat(order, message.from_user) markup = InlineKeyboardMarkup() markup.row_width = 2 markup.add(InlineKeyboardButton("היום", callback_data="cb_day_today"), InlineKeyboardButton("מחר", callback_data="cb_day_tomorrow")) markup = self.add_reset(markup) msg = self.bot.reply_to(message, 'איזה יום נוח לך?', reply_markup=markup) except Exception as e: self.bot.reply_to(message, 'oooops')