Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Телеграм бот приймає від користувача дані і робить розрахунки за формулами.

Бот працює тільки з цілими числами.

Потрібно зробити так, щоб бот приймав цілі і десяткові числа від користувача і грамотно заокруглити результати.

from aiogram import Bot, types

from aiogram.dispatcher import Dispatcher

from aiogram.utils import executor

from config import token

from math import sqrt

bot = Bot(token)

dp = Dispatcher(bot)

lake_number = 0

async def on_startup(_):

print('Бот онлайн.')

async def is_digit(string):

if string.isdigit():

return True

else:

try:

float(string)

return True

except ValueError:

return False

'''****КНОПКИ БАССЕЙНОВ***'''

@dp.message_handler(commands=['start', 'help'])

async def command_start(message : types.Message):

markup=types.ReplyKeyboardMarkup(resize_keyboard=True)

item1=types.KeyboardButton("Бассейн №1")

item2=types.KeyboardButton("Бассейн №2")

markup.add(item1)

markup.add(item2)

await bot.send_message(message.from_user.id, 'Привет! Какой бассейн меряем?', reply_markup=markup)

@dp.message_handler()

async def lake(message: types.Message):

global lake_number

if message.text == 'Бассейн №1':

await bot.send_message(message.from_user.id, 'Введи растояние до воды №1.')

lake_number = 1

if message.text == 'Бассейн №2':

await bot.send_message(message.from_user.id, 'Введи растояние до воды №2.')

lake_number = 2

if bool(lake_number) and message.text.isdigit():

b = int(message.text)

if lake_number == 1:

c = b * 0.52

square = (95 - c * 2) * (50 - c * 2)

h = (6 - b) * 0.7

y = sqrt(4000 * square)

v = round(h / 3 * (4000 + square + y))

level = round(v / 15000 * 100)

await bot.send_message(message.from_user.id,

str(f"БАССЕЙН №1 \U0001F536\n"

f"Количество: " + str(v) + " м3\n"

f"Глубина: " + str(h) + " м\n"

f"Наполнение: " + str(level) + " %"))

if lake_number == 2:

h2 = (7 - b) * 0.7

s2 = (90 - (b * 0.52)) * (100 - (b * 0.52)) / 2

n = sqrt(2500 * s2)

s1 = 2500

g = s1 + n + s2

v2 = round((h2 / 3) * g)

level2 = round(v2 / 14000 * 100)

await bot.send_message(message.from_user.id,

str(f"БАССЕЙН №2 \U0001F53A\n"

f"Количество: " + str(v2) + " м3\n"

f"Глубина: " + str(h2) + " м\n"

f"Наполнение: " + str(level2) + " %"))

lake_number = 0

await bot.send_message(message.from_user.id, "Попробуй еще...")

executor.start_polling(dp, on_startup=on_startup)

2 года назад
Griandr
40 летУкраина
2 года в сервисе
Был
месяц назад
Выбранный исполнитель
StarveR
23 годаБеларусь
2 года в сервисе
Был
5 месяцев назад
2 года назад
$5
1 день
WMZ
Отзыв недоступен.
По этому заказу не оплачена комиссия сервиса!