# Функция для подставления номера стороны и номера треугольника для отображения
def enter_length(side_num: str, triangle_num: str):
return f'Enter the length of {side_num} side of triangle {triangle_num} (cm): '
error_msg = 'Error! Please enter an integer or fractional number for the program to work correctly.'
repeat_msg = "Enter 'Y' for one more triangle or any key to exit: "
# Номер треугольника
triangle_num = 1
while True:
try:
sides = []
# Номер стороны из 3
for side_num in range(1, 4):
sides.append(
float(input(enter_length(str(side_num), str(triangle_num)))))
area_of_triangle(*sides)
except ValueError:
print(error_msg)
else:
response = input(repeat_msg)
if response == 'Y':
triangle_num += 1
else:
break
from aiogram import Bot, Dispatcher, F
from aiogram import types
from aiogram.types.input_file import BufferedInputFile
import asyncio
token = 'ВАШ_ТОКЕН'
bot = Bot(token=token)
dp = Dispatcher()
# Открываем файл с компьютера
with open('photos/photo.webp', 'rb') as file:
input_file = BufferedInputFile(file.read(), 'any_filename')
# Или устанавливаем ID стикера
sticker_id = 'CAACAgIAAxkBAAEKdDVlHm_tbwKnOGandpJwjTBEUXy2zAAC3ggAAgi3GQLYQTVG1h5WQDAE'
@dp.message(F.text == '/start')
async def send_file(message: types.Message):
# Загрузка файла с комьютера
await bot.send_sticker(message.chat.id, input_file)
# Или отправляем по ID стикера
await bot.send_sticker(message.chat.id, sticker_id)
asyncio.run(dp.start_polling(bot))
users = {
12398767: {'name': 'Vasya'},
98765467: {'name': 'Lena'}
}
def edit(user_id: int):
global users
users[user_id]['name'] = 'Petya'
def read(user_id: int):
print(users[user_id]['name'])
edit(12398767)
read(12398767) # Petya
print(users) # {12398767: {'name': 'Petya'}, 98765467: {'name': 'Lena'}}
with open('text_file', encoding='utf-8') as file:
sorted_list = sorted(word.rstrip() for word in file.readlines())
with open('text_file', encoding='utf-8') as file:
sorted_dict = {i: word.rstrip() for i, word in enumerate(file.readlines())}
with open('text_file', encoding='utf-8') as file:
sorted_list_with_index = sorted(
{i: word.rstrip() for i, word in enumerate(file.readlines())}.items(),
key=lambda x: x[1]
)
@bot.message_handler(commands=['грустно', 'весело'])
def pomosh(message):
if message.text == '/грустно':
bot.reply_to(message, 'не грусти( я с тобой)!')
elif message.text == '/весело':
bot.reply_to(message, 'мне тоже!)')
bot.infinity_polling()
@bot.message_handler(commands=['грустно'])
def sad(message):
bot.reply_to(message, 'не грусти( я с тобой)!')
@bot.message_handler(commands=['весело'])
def fun(message):
bot.reply_to(message, 'мне тоже!)')
bot.infinity_polling()
task = Future()
is_running = False
async def infinite_loop():
counter = 0
while True:
await asyncio.sleep(1)
print(counter)
counter += 1
@dp.message_handler(text='вкл/выкл код')
async def all_message(message: types.Message):
global task, is_running
if message.from_user.id == int(ADMIN_ID):
if is_running:
await bot.send_message(message.from_user.id, "Код уже запущен")
else:
await bot.send_message(message.from_user.id,
"Код запущен, если вы хотите отключить код, то нажмите /off")
# Создаем задачу
is_running = True
task = asyncio.create_task(infinite_loop())
# Добавляем в пул для выполнения
await asyncio.gather(task)
@dp.message_handler(commands=['off'])
async def off_command(message: types.Message):
global is_running
if message.from_user.id == int(ADMIN_ID):
if is_running:
await bot.send_message(message.chat.id, "Код был остановлен")
# Отменяем задачу
task.cancel()
is_running = False
# Убираем из пула выполнения
await asyncio.gather(task)
else:
await bot.send_message(message.chat.id, "Код еще не запущен")
executor.start_polling(dp, skip_updates=True)
post_data = {'photo': 'some_photo', 'video': 'some_video', 'text': 'some_text'}
for key, value in post_data.items():
if post_data.get('text'):
album.add(type=key, media=value, caption=post_data['text'])
post_data['text'] = None
else:
album.add(type=key, media=value)
await callback.message.delete_reply_markup()
await callback.message.delete()