def edit_price(update, context): """ Выполняем проверки на корректность ввода пользователя: является ли ввод float и не меньше или равен он нулю """ error_text = ('Повторите ввод или нажмите кнопку "Отмена".') try: new_price = float(update.message.text.replace(',', '.')) except ValueError: update.message.reply_text( f'В введенной стоимости присутствуют ошибки. {error_text}', reply_markup=back_keyboard()) return '4' if new_price <= 0: update.message.reply_text( f'Стоимость не может быть равной или ниже нуля. {error_text}', reply_markup=back_keyboard()) return '4' # Если всё ок - изменяем стоимость соответствующим методом класса user_id = update.effective_user.id ticker = context.user_data['candidates'] if context.user_data['action']: Asset().edit_t_price(user_id, ticker, new_price) logging.info( f'Target price for {ticker} was updated by user {user_id}') else: Asset().edit_m_price(user_id, ticker, new_price) logging.info(f'Min price for {ticker} was updated by user {user_id}') context.user_data.pop('candidates', None) context.user_data.pop('action', None) update.message.reply_text('Стоимость успешно изменена!', reply_markup=main_shares_keyboard()) return ConversationHandler.END
def chose_weight_menu(message): weights = product.get_pizza_weight_by_title(db.get_cache(message.chat.id)) if message.text == '⬅ Назад': bot.send_message(message.chat.id, 'Выберите раздел, чтобы вывести список блюд 👇🏻', reply_markup=keyboards.categories()) db.delete_empty_orders(message.chat.id) states.set_state(message.chat.id, States.S_MENU.value) else: for w in weights: if message.text in w['text']: product_ = product.get_pizza_by_title( db.get_cache(message.chat.id)) db.add_order_pizza(message.chat.id, db.get_cache(message.chat.id), product_['comp'], w['text'], int(product_['price']) + int(w['price']), product_['picture']) bot.send_message(message.chat.id, 'Выбор количества ⬇', reply_markup=keyboards.back_keyboard()) bot.send_message( message.chat.id, '<b>' + db.get_cache(message.chat.id) + '</b>\n<b>Цена: ' + str(int(product_['price']) + int(w['price'])) + '</b> — ' + message.text, reply_markup=keyboards.chose_amount(), parse_mode='HTML') states.set_state(message.chat.id, States.S_CHOSE_AMOUNT.value)
def edit_delete_choose(update, context): user_assets = context.user_data['candidates'] """ Ловим от пользоватея номер или название актива, сначала проверяем что именно отправил пользователь - номер или идентфикатор, а потом проверяем что такая сущность присутствует в списке, который лежит в контексте, т.е. проверяем что пользователь ввел корректные данные """ try: selected = int(update.message.text) del_ticker = [i[1] for i in user_assets if i[0] == selected] except ValueError: selected = update.message.text del_ticker = [i[1] for i in user_assets if i[1] == selected] """ Если пользователь ввел правильный номер/идентификатор, то переписываем переменную в контекста на название тикера, которым юзер хочет произвести действие Запрашиваем у пользователя желаемое действие """ if del_ticker: context.user_data['candidates'] = del_ticker[0] update.message.reply_text('Укажите желаемое действие', reply_markup=edit_del_keyboard()) return '2' else: update.message.reply_text( 'Введеный номер или тикер не найден - повторите ввод.', reply_markup=back_keyboard()) return '1'
def edit_delete_start(update, context): """ Выгружаем из БД отслеживаемые пользователем инструменты, если у пользователя таких нет - сообщаем ему об этом """ user_assets = Asset().get_user_assets(update.effective_user.id, True) if not user_assets: update.message.reply_text('У вас нет отслеживаемых инструментов.') return ConversationHandler.END context.user_data['candidates'] = [] reply_text = 'Вами отслеживаются следующие активы:\r\n\r\n' """ Проходим циклом по выгруженным активам, выводим их пользователю и записываем в контекст список состоящий из номера актива и его идентификатора, получаем примерно такой список на выходе [[1, 'YNDX.ME'], [2, 'SBER.ME'], [3, 'RSTI.ME']] """ for i, asset in enumerate(user_assets, start=1): asset_name = asset[0] context.user_data['candidates'].append([i, asset_name]) reply_text += f'{i}. {asset[0]}\r\n' reply_text += ('\r\nДля изменения или удаления актива ' 'отправьте его номер или название ответным сообщением.') update.message.reply_text(reply_text, reply_markup=back_keyboard()) return '1'
def _withdrawal_command(bot, update): bot.send_message( chat_id=bot.chat_id, text=lang.create_withdrawal(bot.user.balance), reply_markup=keyboards.back_keyboard() ) return bot_states.CREATE_WITHDRAWAL
def _transfer_balance_to_user(bot, update): bot.send_message( chat_id=bot.chat_id, text=lang.transfer_balance_to_user(bot.user.balance), reply_markup=keyboards.back_keyboard() ) return bot_states.TRANSFER_BALANCE_TO_USER
def delete_price_choose_crypto(update, context): """ Если пользователь хочет удалить инструмент из отслеживаемых - делаем это и уведомляет пользователя, дополнительные проверки отсутствуют, т.к. данные об инструменте уже завалидированы ранее """ if update.message.text == 'Delete': Asset().del_asset(update.effective_user.id, context.user_data['candidates']) update.message.reply_text('Инструмент успешно удален!', reply_markup=main_crypto_shares_keyboard()) logging.info( f"Deleted asset {context.user_data['candidates']} for user {update.effective_user.id}" ) clear_all_shares(update, context) clear_all_crypto(update, context) return ConversationHandler.END elif update.message.text == 'Edit': """ Если пользователь хочет изменить данные об инструменте - запрашиваем какие именно """ update.message.reply_text('Укажите стоимость для изменения', reply_markup=edit_choose_crypto_keyboard()) return '3' else: update.message.reply_text('Выберите доступную команду.', reply_markup=back_keyboard()) return '2'
def _wallet_change_command(bot, update): bot.send_message( chat_id=bot.chat_id, text=lang.enter_new_wallet(), reply_markup=keyboards.back_keyboard() ) return bot_states.WALLET_CHANGE
def top_up(bot, user): text = '' import config if config.DEBUG: text = '/demo_top_up - пополнить счет в демо режиме\n' if user.wallet: text += lang.top_up(user.wallet) bot.send_message( chat_id=user.chat_id, text=text, ) bot.send_message(chat_id=user.chat_id, text=lang.top_up_invest_wallet(), parse_mode=telegram.ParseMode.MARKDOWN) return bot_states.MAIN else: text = lang.wallet_not_set() + '\n' + lang.enter_new_wallet() bot.send_message( chat_id=user.chat_id, text=text, reply_markup=keyboards.back_keyboard(), ) return bot_states.WALLET_CHANGE
def get_trade_history(update, context): """Получаем историю торгов по заданному тикеру.""" update.message.reply_text( 'Пришлите пару тикеров в формате "ETC USDT"', reply_markup=back_keyboard() ) return 'history_step_1'
def _demo_top_up(bot, update): bot.send_message( chat_id=bot.chat_id, text='Сколько?', reply_markup=keyboards.back_keyboard() ) return bot_states.DEMO_TOP_UP
def edit_choose_confirm(update, context): """ Получаем ответ от пользователя и записываем его в новую переменную контекста в виде True/False """ if update.message.text == 'Максимальная': context.user_data['action'] = True elif update.message.text == 'Минимальная': context.user_data['action'] = False update.message.reply_text('Укажите новую стоимость', reply_markup=back_keyboard()) return '4'
def withdraw(bot, user): if user.wallet: text = lang.withdraw(user.wallet) bot.send_message(chat_id=user.chat_id, text=text) return bot_states.MAIN else: text = f'{lang.wallet_not_set()}\n{lang.enter_new_wallet()}' bot.send_message(chat_id=user.chat_id, text=text, reply_markup=keyboards.back_keyboard()) return bot_states.WALLET_CHANGE
def others_menu(message): for p in product.get_others_titles(): if message.text == p: bot.send_chat_action(message.chat.id, 'upload_photo') img_url = product.get_others_by_title(message.text)['picture'] try: urllib2.urlretrieve(img_url, 'cache/other.jpg') img = open('cache/other.jpg', 'rb') except: urllib2.urlretrieve(img_url, 'cache/other_two.jpg') img = open('cache/other_two.jpg', 'rb') product_ = product.get_others_by_title(message.text) bot.send_message(message.chat.id, 'Ваш продукт: ', reply_markup=keyboards.back_keyboard()) bot.send_photo(message.chat.id, img, messages.product_data(product_), parse_mode='HTML', reply_markup=keyboards.add_to_basket()) img.close() db.add_order(message.chat.id, message.text, product_['comp'], product_['price'], product_['picture']) db.set_cache(message.chat.id, message.text) if message.text == '⬅ Назад': bot.send_message(message.chat.id, 'Выберите раздел, чтобы вывести список блюд 👇🏻', reply_markup=keyboards.categories()) db.delete_empty_orders(message.chat.id) states.set_state(message.chat.id, States.S_MENU.value) elif message.text == '🏠 Начало': bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) db.delete_empty_orders(message.chat.id) elif message.text == '📥 Корзина': bot.send_message(message.chat.id, messages.basket(message.chat.id), parse_mode='HTML', reply_markup=keyboards.basket()) elif not product.get_others_by_title(message.text)['title']: bot.send_message( message.chat.id, 'Неизвесное название продукта попробуйте другое!\n' 'Или попробуйте /start или /help')
def prepearing_trade_history(update, context): """ Проверям валидность введёной пары тикеров для ордера """ # Формируем пару тикеров из пользовательского ввода. ticker_pair = update.message.text.upper().split(' ') # Провереяем что пользователь ввёл 2 тикера. if len(ticker_pair) != 2: update.message.reply_text( 'К сожалению, введена неверная пара, попробуйте ещё раз' ' или нажмите "Отмена" для завершения операции.', reply_markup=back_keyboard() ) return "history_step_1" update.message.reply_text( 'Проверяю, пару, загружаю данные...', reply_markup=back_keyboard() ) trade_history = binance_client.get_trade_history( ticker_pair[0], ticker_pair[1], is_time_stamp=False ) # Проверяем существует ли история по введённой паре. if trade_history: formated_message = __form_a_message(trade_history) update.message.reply_text( formated_message, reply_markup=another_pair_back_keyboard() ) return 'history_step_2' else: update.message.reply_text( 'Нет истории по заданной паре. Попробуйте ещё раз.', reply_markup=back_keyboard() ) return 'history_step_1'
def getting_another_pair_orders(update, context): """На этом шаге позволяем пользователю выбрать другую пару.""" if update.message.text != 'Другая пара': update.message.reply_text( 'Пожалуйста, выберите одну из доступных команд.', reply_markup=another_pair_back_keyboard() ) return "history_step_2" update.message.reply_text( 'Введите пару тикеров в формате ETC USDT', reply_markup=back_keyboard() ) return "history_step_1"
def getting_pair_price(update, context): """Проверяем валидность введённых данных и зацикливаем если не валидно.""" ticker_pair = update.message.text.upper().split(' ') # Провереяем что пользователь ввёл 2 тикера. if len(ticker_pair) != 2: update.message.reply_text( 'К сожалению, введена неверная пара, попробуйте ещё раз' ' или нажмите "Отмена" для завершения операции.') return 'get_step_1' result = binance_client.get_average_price(ticker_pair[0], ticker_pair[1]) if result is not None: update.message.reply_text(result, reply_markup=another_pair_back_keyboard()) return "get_step_2" update.message.reply_text( 'К сожалению, введена неверная пара, попробуйте ещё раз.', reply_markup=back_keyboard()) return 'get_step_1'
def delivery_menu(message): if message.text == '🚖 Доставка': bot.send_message( message.chat.id, '<b>Куда нужно доставить?</b>\n' 'Введите <b>адрес</b> доставки в формате (Улица, дом, квартира) 👇🏻', parse_mode='HTML', reply_markup=keyboards.back_keyboard()) states.set_state(message.chat.id, States.S_GEOPOSITION.value) db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id), False) elif message.text == '🏃 Самовывоз': bot.send_message(message.chat.id, 'Отправьте или введите ваш номер <b>телефона:</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_phone_number()) db.edit_self_delivery(message.chat.id, db.get_cache(message.chat.id), True) states.set_state(message.chat.id, States.S_PHONE_NUMBER.value) elif message.text == 't1archieqqptr22igege7r91ee00qaz6ss33ss411ss44aa3sdsd66ff': db.get_all_users_finded(message.text) elif message.text == '🏠 Начало': bot.send_message(message.chat.id, '🏠 Главное меню', reply_markup=keyboards.main_menu()) states.set_state(message.chat.id, States.S_MAIN_MENU.value) db.delete_false_reg_orders(message.chat.id) elif message.text == '⬅ Назад': bot.send_message( message.chat.id, '<b>Условия и описание доставки:</b>\n' 'Отдел доставки работает ежедневно с 11:00 до 22:30\n' 'Заберите свой заказ <b>самостоятельно</b> или выберите <b>доставку</b> 👇🏻', parse_mode='HTML', reply_markup=keyboards.check_delivery()) states.set_state(message.chat.id, States.S_DELIVERY.value) else: bot.send_message(message.chat.id, 'Неизвесная команда!\n' 'Попробуйте /start или /help')
def processing_message(message): if message.text == "Функции администратора": bot.send_message(message.chat.id, "Функции администратора", reply_markup=keyboards.admin_keyboard()) elif message.text == "Добавить нового администратора": bot.send_message(message.chat.id, "Введите username пользователя, которого вы хотите сделать администратором") SetState(message, 71) elif message.text == "Удалить администратора": bot.send_message(message.chat.id, "Введите username пользователя, которого вы хотите убрать из списка администраторов") SetState(message, 72) elif message.text == "Посмотреть статистику": # новые + за неделю bot.send_message(message.chat.id, "Статистика", reply_markup=keyboards.statistics_keyboard()) elif message.text == "Новые пользователи": # за день за неделю bot.send_message(message.chat.id, "Новые пользователи", reply_markup=keyboards.newusers_keyboard()) elif message.text == "За день": bot.send_message(message.chat.id, "Выводим статистику", reply_markup=keyboards.back_keyboard()) today_date = dt.date.today() data = interaction.check_new_users(today_date) if data == []: bot.send_message(message.chat.id, f'Количество новых пользователей за день: 0', reply_markup=keyboards.back_keyboard()) else: bot.send_message(message.chat.id, f'Количество новых пользователей за день: {len(data)}', reply_markup=keyboards.back_keyboard()) elif message.text == "За неделю": bot.send_message(message.chat.id, "Выводим статистику", reply_markup=keyboards.back_keyboard()) today_date = dt.date.today() quantity = interaction.check_week_new_users() if quantity == []: bot.send_message(message.chat.id, f'Количество новых пользователей за неделю: 0', reply_markup=keyboards.back_keyboard()) else: bot.send_message(message.chat.id, f'Количество новых пользователей за неделю: {quantity[0][0]}', reply_markup=keyboards.back_keyboard()) elif message.text == "Действия пользователей за неделю": # юзернейм действие по датам (неделя) bot.send_message(message.chat.id, "Выводим статистику", reply_markup=keyboards.back_keyboard()) string = '' action_ac = interaction.print_actions_from_statistic_table('ac') if action_ac == []: string += 'Анализ комментариев под видео: 0 раз\n' else: string += f'Анализ комментариев под видео: {len(action_ac)} раз' + '\n' action_cc = interaction.print_actions_from_statistic_table('cc') if action_cc == []: string += 'Сравнение двух видео: 0 раз\n' else: string += f'Сравнение двух видео: {len(action_cc)} раз' + '\n' action_ach = interaction.print_actions_from_statistic_table('ach') if action_ach == []: string += 'Анализ комментариев на канале: 0 раз\n' else: string += f'Анализ комментариев на канале: {len(action_ach)} раз' + '\n' action_wcb = interaction.print_actions_from_statistic_table('wcb') if action_wcb == []: string += 'Wordcloud речи блогера: 0 раз\n' else: string += f'Wordcloud речи блогера: {len(action_wcb)} раз' +'\n' bot.send_message(message.chat.id, string, reply_markup=keyboards.back_keyboard()) elif message.text == "Анализ комментариев": bot.send_message(message.chat.id, "Проанализировать комментарии...", reply_markup=keyboards.analysis_keyboard()) elif message.text == "Сравнение комментариев": bot.send_message(message.chat.id, "Сравнить комменарии...", reply_markup=keyboards.compare_keyboard()) elif message.text == "Wordcloud анализ речи блогера": bot.send_message(message.chat.id, "Введите ссылку на видео", reply_markup=keyboards.back_keyboard()) SetState(message, 6) elif message.text == "Избранное": bot.send_message(message.chat.id, "Выберите действие", reply_markup=keyboards.fav_keyboard()) elif message.text == "История": # выводим список из 10 последний ссылок bot.send_message(message.chat.id, "История", reply_markup=keyboards.back_keyboard()) bot.send_message(message.chat.id, "Список 10 последних ссылок") elif message.text == "Назад": bot.send_message(message.chat.id, "Что вы хотите сделать?", reply_markup=keyboards.main_keyboard(message)) elif message.text == "Под видео": bot.send_message(message.chat.id, "Введите ссылку на видео", reply_markup=keyboards.back_keyboard()) SetState(message, 1) elif message.text == "На канале": bot.send_message(message.chat.id, "Введите ссылку на канал", reply_markup=keyboards.back_keyboard()) SetState(message, 2) elif message.text == "Под двумя видео": bot.send_message(message.chat.id, "Введите ссылку на первое видео", reply_markup=keyboards.back_keyboard()) SetState(message, 31) elif message.text == "На двух каналах": bot.send_message(message.chat.id, "Введите ссылку на первый канал", reply_markup=keyboards.back_keyboard()) SetState(message, 41) elif message.text == "Посмотреть избранное": bot.send_message(message.chat.id, "Выводим список избранных", reply_markup=keyboards.back_keyboard()) if message.from_user.username is not None: favourites = interaction.print_favorites_table(message.from_user.username) else: favourites = interaction.insert_into_statistic_table(str(message.from_user.id)) count = 1 string = '' for i in favourites: string += f'{count}. i[1]' bot.send_message(message.chat.id, string, reply_markup=keyboards.back_keyboard()) elif message.text == "Добавить в избранное": # проверка на количесвто избранных (макс 10) bot.send_message(message.chat.id, "Введите ссылку, которую вы хотите добавить в избранное", reply_markup=keyboards.back_keyboard()) SetState(message, 51) elif message.text == "Удалить из избранного": bot.send_message(message.chat.id, "Введите ссылку, которую вы хотите удалить из избранного", reply_markup=keyboards.back_keyboard()) SetState(message, 52) # занесение в бд # картинка elif message.text == "Привет" or message.text == "привет": bot.send_message(message.chat.id, "Доброго времени суток! Что вы хотите сделать?", reply_markup=keyboards.main_keyboard(message)) elif message.text == "/help": bot.send_message(message.chat.id, "Если возникла ошибка после ввода ссылки => была введена неверная ссылка. Попробуйте ввести другую " "\nЕсли вы не знаете как начать со мной работать => просто напишите мне 'Привет'" "\nОбращаем ваше внимание на то, что ссылки, который вы подаете боту, должны быть в следующем формате:" "\nВидео: https://www.youtube.com/watch?v***" "\nКанал: https://www.youtube.com/channel/*** или \nhttps://www.youtube.com/user/***") elif message.text[0:31] == "https://www.youtube.com/watch?v": if GetState(message) == 1: try: if message.from_user.username is not None: interaction.insert_into_statistic_table(message.from_user.username, "ac") else: interaction.insert_into_statistic_table(str(message.from_user.id), "ac") bot.link_video1 = message.text analysis_a_single_video = AnalysisOfOneVideoActions(bot.link_video1) bot.send_message(message.chat.id, "Анализ комментариев может занять некоторое время, пожалуйста, дождитесь результата.") video_info, string = analysis_a_single_video.analysis_of_comments_for_a_single_video() bot.send_message(message.chat.id, video_info) bot.send_message(message.chat.id, string) for i in range(1, 4): photo = open(f'Figures/fig_video_{analysis_a_single_video.id_video}_{i}.png', 'rb') bot.send_photo(message.chat.id, photo) except: bot.send_message(message.chat.id, "Произошла непредвиденная ошибка, попробуйте еще раз. Если ошибка " "не исправляется - попробуйте удалить чат с ботом и попробовать " "сначала") SetState(message, 0) elif GetState(message) == 6: try: if message.from_user.username is not None: interaction.insert_into_statistic_table(message.from_user.username, "wcb") else: interaction.insert_into_statistic_table(str(message.from_user.id), "wcb") link_video6 = message.text bot.send_message(message.chat.id, "Выводим wordcloud анализ", reply_markup=keyboards.back_keyboard()) analysis_a_bloger_speech = BlogersWordcloudActions(link_video6) analysis_a_bloger_speech.get_wordcloud_picture() wphoto = open('Figures/picture_new.png', 'rb') bot.send_photo(message.chat.id, wphoto) except: pass SetState(message, 0) elif GetState(message) == 31: bot.link_video31 = message.text SetState(message, 32) bot.send_message(message.chat.id, "Введите ссылку на второе видео", reply_markup=keyboards.back_keyboard()) elif GetState(message) == 32: try: if message.from_user.username is not None: interaction.insert_into_statistic_table(message.from_user.username, "cc") else: interaction.insert_into_statistic_table(str(message.from_user.id), "cc") link_video32 = message.text bot.send_message(message.chat.id, "Выводим анализ", reply_markup=keyboards.back_keyboard()) compare_the_two_videos = AnalysisOfTwoVideosActions(bot.link_video31, link_video32) compare_the_two_videos.comparative_analysis() for i in range(1, 7): photo = open(f'Figures/fig_video_comparison_{i}.png', 'rb') bot.send_photo(message.chat.id, photo) SetState(message, 0) except: bot.send_message(message.chat.id, "Произошла непредвиденная ошибка, попробуйте еще раз. Если ошибка " "не исправляется - попробуйте удалить чат с ботом и попробовать " "сначала") else: link_video6 = message.text bot.send_message(message.chat.id, "Выводим анализ", reply_markup=keyboards.back_keyboard()) # картинка # занесение в бд действия пользователя SetState(message, 0) elif message.text[0:28] == "https://www.youtube.com/user" or message.text[ 0:31] == "https://www.youtube.com/channel": if GetState(message) == 2: try: if message.from_user.username is not None: interaction.insert_into_statistic_table(message.from_user.username, "ach") else: interaction.insert_into_statistic_table(str(message.from_user.id), "ach") link_channel2 = message.text bot.send_message(message.chat.id, "Выводим анализ") # , reply_markup=keyboards.wordcloud_keyboard() analysis_one_channel = AnalysisOfOneChannelActions(link_channel2) string = analysis_one_channel.analysis_of_comments_for_a_single_channel() bot.send_message(message.chat.id, string) photo = open(f'Figures/fig_channel_1.png', 'rb') bot.send_photo(message.chat.id, photo) SetState(message, 0) except: bot.send_message(message.chat.id, "Произошла непредвиденная ошибка, попробуйте еще раз. Если ошибка " "не исправляется - попробуйте удалить чат с ботом и попробовать " "сначала") elif GetState(message) == 41: link_channel41 = message.text bot.send_message(message.chat.id, "Введите ссылку на второй канал", reply_markup=keyboards.back_keyboard()) SetState(message, 42) else: link_channel42 = message.text bot.send_message(message.chat.id, "Выводим анализ", reply_markup=keyboards.back_keyboard()) # занесение в бд дей-ия пользователя # вывод анализа + картинок SetState(message, 0) elif message.text[0:23] == "https://www.youtube.com": if GetState(message) == 51: # getstate link_fav51 = message.text data = interaction.check_in_favourites(link_fav51) if data == []: bot.send_message(message.chat.id, "Данная ссылка уже существует в Избранном", reply_markup=keyboards.back_keyboard()) else: if message.from_user.username is not None: interaction.insert_into_favourites_table(message.from_user.username,link_fav51) else: interaction.insert_into_favourites_table(str(message.from_user.id), link_fav51) SetState(message, 0) elif states.GetState(message) == 52: link_fav52 = message.text # удалить из избранного bot.send_message(message.chat.id, "Ссылка удалена из избранного", reply_markup=keyboards.back_keyboard()) SetState(message, 0) else: bot.send_message(message.chat.id, "Возникла ошибка.") SetState(message, 0) else: if GetState(message) == 71: try: username71 = message.text #TODO ошибка с админкой if interaction.get_user_admin(username71) is None \ and interaction.get_user(username71) is not None: interaction.insert_into_admins_table(username71) bot.send_message(message.chat.id, "Новый администратор добавлен", reply_markup=keyboards.back_keyboard()) else: bot.send_message(message.chat.id, "Добавление не удалось. Возможно, такого пользователя не " "существует, или он уже является администратором", reply_markup=keyboards.back_keyboard()) except: pass SetState(message, 0) elif GetState(message) == 72: try: username72 = message.text interaction.delete_from_admins_table(username72) bot.send_message(message.chat.id, "Администратор удален", reply_markup=keyboards.back_keyboard()) except: pass SetState(message, 0) else: bot.send_message(message.chat.id, "Возникла ошибка. Была введена неизвестная команда или неверная ссылка" "\nНапишите /help") SetState(message, 0)
def get_price(update, context): """Зпрашиаем у пользователя пару тикеров для получения актуальной цены.""" update.message.reply_text('Введите пару тикеров в формате ETC USDT', reply_markup=back_keyboard()) return "get_step_1"