def convert(message: telebot.types.Message): if message.text.lower() == 'помощь': bot.send_message(message.chat.id, text=Converter.get_text_help(), parse_mode='MarkDown') elif message.text.lower() == 'список валют': try: text, keyboard = get_page_symbols(page=0) except Exception as e: bot.reply_to(message, f'Ошибка на сервере!\n{e} Попробуй повторить попытку позже.') else: bot.send_message(message.chat.id, text=text, reply_markup=keyboard, parse_mode='MarkDown') else: try: arguments = message.text.split(' ') arguments = [item for item in arguments if item] if len(arguments) != 3: raise APIException('Введи две валюты через пробел и количество. Подробнее -> /help') quote, base, amount = arguments quote = quote.lower() base = base.lower() price, quote, base = Converter.get_price(quote, base, amount) except APIException as e: username = '' if message.from_user.first_name: username += f'{message.from_user.first_name}' if message.from_user.last_name: username += f' {message.from_user.last_name}' bot.reply_to(message, f'{username if username else "Человек"}, повнимательнее!\n{e}') except Exception as e: bot.reply_to(message, f'Ошибка на сервере!\n{e} Попробуйте повторить попытку позже.') else: text = f'{amount} {quote} = {price} {base}' bot.send_message(message.chat.id, text)
def fistfunc(message: telebot.types.Message): u = message.text.lower() if u == 'бот хороший' or u == 'хороший бот': bot.reply_to(message, f"Спасибо, {message.from_user.first_name}, я старался") else: mes = message.text.lower() mp = list(mes.split(' ')) if mp[0].lower() == 'курс': mes = Converter.getcourse(mes[5:]) bot.reply_to(message, f"{mes}") else: text = Converter.convert(mp) bot.reply_to(message, f"{text}")
def get_page_symbols(page=0, max_symbols=22): symbols = sorted(Converter.get_symbols().items()) number_symbols = len(symbols) start = page * max_symbols if number_symbols < start + max_symbols: symbols = symbols[start:] end = number_symbols else: symbols = symbols[start:start+max_symbols] end = start+max_symbols text = f'*Доступные валюты {start+1}-{end} из {number_symbols}:*' for key, value in symbols: symbol = ' - '.join((key, value)) text = '\n'.join((text, symbol)) keyboard = telebot.types.InlineKeyboardMarkup(row_width=4) buttons = [] for n in range(0, (number_symbols//max_symbols)+1): if n == page: buttons.append(telebot.types.InlineKeyboardButton(text=f"<{n + 1}>", callback_data=f"current")) else: buttons.append(telebot.types.InlineKeyboardButton(text=f"{n + 1}", callback_data=f"{n}")) keyboard.add(*buttons) return [text, keyboard]
def rate(message: telebot.types.Message): curensis = Converter.getcurrency() text = "Курсы валют:" for key in curensis: text = '\n'.join( (text, f'{key.fullName} \n{key.price} за {key.volume}')) bot.reply_to(message, text)
def handle_convert_convert(message, base, quote): amount = message.text try: text = Converter.get_price(base, quote, amount) except APIException as e: bot.send_message(message.chat.id, f'Ошибка конвертации /n {e}') else: bot.send_message(message.chat.id, text)
def amount_handler(message: telebot.types.Message, base, sym): amount = message.text.strip() try: new_price = Converter.get_price(base, sym, amount) except APIException as e: bot.send_message(message.chat.id, f"Ошибка конвертации: \n{e} ") else: text = f"Цена {amount} {base} в {sym} : {new_price}" bot.send_message(message.chat.id, text)
def converter(message: telebot.types.Message): values = message.text.split() values = list(map(str.lower, values)) try: result = Converter.get_price(values) except ConverterException as e: bot.reply_to(message, f'Ошибка пользователя \n{e}') except Exception as e: bot.reply_to(message, f'Не удалось обработать команду \n{e}') else: text = f'Цена {values[2]} {values[0]} в {values[1]} -- {result} {exchanger[values[1]]}' bot.reply_to(message, text)
def convertion(message: telebot.types.Message): try: a = message.text.replace('/', '') user_input = list(map(str.lower, a.split(' '))) bot.send_message(message.chat.id, Converter.get_price(user_input)) except APIException as e: bot.reply_to(message, f'Ошибка пользователя \n{e}') except Exception as e: bot.reply_to(message, f' не удалось обработать команду\n{e}')
def values(message: telebot.types.Message): currencys = Converter.getcurrency() currency = [] for cur in currencys: currency.append(cur.getfullName()) text = "Доступные валюты:" for key in currency: text = '\n'.join(( text, key, )) bot.reply_to(message, text)
def convert(message): ask = message.text.split() try: if len(ask) != 3: raise ConvertionExcepyion('Вы ввели не три параметра.') quote, base, amount = ask text = Converter.convert(quote, base, amount) except ConvertionExcepyion as e: bot.reply_to(message, f'Ошибка пользователя\n{e}') except Exception as e: bot.reply_to(message, f'не удалось обработать команду\n{e}') else: bot.reply_to(message, text)
def convert(message): try: value = message.text.split(" ") if len(value) != 3: raise APIException("Количество данных неверно") quote, base, amount = value total = Converter.get_price(quote, base, amount) except APIException as e: bot.reply_to(message, f"Ошибка пользователя\n{e}") except Exception as e: bot.reply_to(message, f'Не удалось обработать команду\n{e}') else: text = f"Цена {amount} {base} в {quote} равна {total} " bot.send_message(message.chat.id, text)
def converter(message: telebot.types.Message): try: values = message.text.split(' ') values = list(map(str.lower, values)) if len(values) != 3: raise APIException('Не правильное количество параметров.') quote, base, amount = values total_base = Converter.get_price(quote, base, amount) except APIException as e: bot.reply_to(message, f'Ошибка пользователя\n{e}') except Exception as e: bot.reply_to(message, f'Не удалось обработать команду\n{e}') else: text = f'Цена {amount} {quote} в {base} - {total_base}' bot.send_message(message.chat.id, text)
def convert(message: telebot.types.Message): try: values = message.text.split(' ') if len(values) != 3: raise APIException('Неверное количество параметров') quote, base, amount = values total_base = Converter.convert(quote, base, amount) except APIException as e: bot.reply_to(message, f'Ошибка пользователя.\n{e}') except Exception as e: bot.reply_to(message, f'Не удалось обработать команду\n{e}') else: text = f'Цена {quote} в {base}\n{amount} = {total_base}' bot.send_message(message.chat.id, text)
def convert(text): try: textlist = text.split() if len(textlist) > 3: raise APIException('Слишком много параметров!') return 'Ошибка в запросе! Формат ввода неверный!' if len(textlist) < 3: raise APIException('Слишком мало параметров!') result, base, quote, amount = Converter.get_price( textlist[0], textlist[1], textlist[2]) except APIException as err: return f'Ошибка пользователя.\n{err}' except Exception as err: return f"Ошибка сервера! Бот не сможет обработать команду. Произошла ошибка:\n{err}" return f'Цена {round(amount, 2)} {base} в {quote} - {round(result, 2)}'
def convert(message: Message): """ Обработчик запроса о переводе. """ try: values = message.text.lower().split(' ') if len(values) != 3: raise APIException('Неверное количество аргументов!') base, quote, amount = values converted_value = Converter.get_price(base, quote, amount) except APIException as error_message: bot.reply_to(message, f'Ошибка пользователя:\n{error_message}') except Exception as error_message: bot.reply_to(message.chat.id, f'Не удалось обработать команду:\n{error_message}') else: text = (f'{amount} {VALUES[base]} ({base}) ≈ ' + f'{converted_value:.2f} {VALUES[quote]} ({quote})') bot.send_message(message.chat.id, text)
def get_price(message): try: values = message.text.split(' ') if len(values) > 3: raise APIException('Слишком много параметров') if len(values) < 3: raise APIException('Недостаточно данных') base, quote, amount = values total_base = Converter.get_price(base, quote, amount) except APIException as e: bot.reply_to(message, f'Ошибка пользователя \n{e}') except Exception as e: bot.reply_to(message, f'Не удалось обработать команду \n{e}') else: text = f'Цена {amount} {base} в {quote}: {total_base}' bot.send_message(message.chat.id, text)
def get_price(message: telebot.types.Message): try: values = message.text.split(' ') if len(values) != 3: raise ConvertionException('Слишком много параметров') quote, base, amount = values total_base = Converter.get_price(quote, base, amount) except ConvertionException as e: bot.reply_to(message, f'Ошибка пользователя\n{e}') except Exception as e: bot.reply_to(message, f'Не удалось обработать команду\n{e}') else: text = f'Цена {amount} {quote} в {base} - {total_base}' bot.send_message(message.chat.id, text)
def convert(message: telebot.types.Message): try: values = message.text.split(' ') if len(values) != 3: raise API_Exception( 'Неверный формат ввода (слишком много значений)') quote, base, amount = values total_base = Converter.get_price(quote, base, amount) except API_Exception as e: bot.reply_to(message, f'Ошибка пользователя\n{e}') except Converter as e: bot.reply_to(message, f'Не удалось обработать команду\n{e}') else: text = f'{amount} {quote} равен {total_base} {base}' bot.send_message(message.chat.id, text)
def convert(message: telebot.types.Message): try: user_message = message.text.split(" ") if len(user_message) != 3: raise APIException("Передано неверное количество параметров") cur, base, amount = user_message total = float(Converter.convert(cur, base, amount)) except APIException as e: bot.send_message(message.chat.id, f"Ошибка ввода\n{e}", reply_markup=reply_markup) except Exception as e: bot.send_message(message.chat.id, f"Не удалось обработать команду\n{e}", reply_markup=reply_markup) else: text = f"Чтобы купить {amount} {cur.lower()} нужно {(total * float(amount)):.2f} {base.lower()}" bot.send_message(message.chat.id, text, reply_markup=reply_markup)
def convert(message: telebot.types.Message): try: parameters = message.text.split(' ') if len(parameters) != 3: raise APIException("Команда введена неправильно.") base, quote, amount = parameters result = Converter.get_price(base, quote, amount) except APIException as e: bot.send_message(message.chat.id, f"Ошибка на стороне пользователя.\n{e}") except Exception as e: bot.send_message(message.chat.id, f"Не удалось обработать команду.\n{e}") else: text = f"Цена {fabs(float(amount))} {base} в {quote} — {fabs(result)}" bot.reply_to(message, text)
def help_bot(message: telebot.types.Message): keyboard = telebot.types.ReplyKeyboardMarkup(True) keyboard.row('Помощь', 'Список валют') bot.send_message(message.chat.id, text=Converter.get_text_help(), reply_markup=keyboard, parse_mode='MarkDown')