Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Делал бота тг на питоне.

Данил Трунченко Ученик (131), открыт 1 неделю назад
Я решил сделать бота на питоне и возникла во такая ошибка "ImportError: cannot import name 'NoReturn'" что делать? Вот скрипт
 import logging 
from datetime import datetime
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes


# Установка уровня логирования
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)

# Определяем токен вашего бота
TOKEN = '7692964348:AAHVwmCOeOcYzvREGSJlD37ERGBtPHS3v2U'

# Функция для вычисления дней до дня рождения
def days_until_birthday(birthday: str) -> int:
today = datetime.now()
birthday_date = datetime.strptime(birthday, "%Y-%m-%d")
current_year = today.year

# Если день рождения уже прошел в этом году, то берем следующий год
if birthday_date.replace(year=current_year) < today:
birthday_date = birthday_date.replace(year=current_year + 1)

return (birthday_date - today).days

# Команда /start
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
await update.message.reply_text("Привет! Укажите свою дату рождения в формате YYYY-MM-DD, чтобы я подсчитал, сколько осталось дней до нее.")

# Команда /birthday
async def birthday(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
if context.args:
birthday = context.args[0]
try:
days_left = days_until_birthday(birthday)
await update.message.reply_text(f"До твоего дня рождения осталось {days_left} дней!")
except ValueError:
await update.message.reply_text("Пожалуйста, укажите дату в правильном формате YYYY-MM-DD.")
else:
await update.message.reply_text("Пожалуйста, укажите дату рождения после команды, например: /birthday 2000-12-31")

async def main() -> None:
# Создаем приложение и передаем ему токен вашего бота
application = ApplicationBuilder().token(TOKEN).build()

# Регистрация обработчиков команд
application.add_handler(CommandHandler("start", start))
application.add_handler(CommandHandler("birthday", birthday))

# Запуск бота
await application.run_polling()

if __name__ == '__main__':
import asyncio
asyncio.run(main())
1 ответ
LaoYe Знаток (490) 1 неделю назад
У тебя класс private, либо не с той буквы написал.
Похожие вопросы