Top.Mail.Ru
Ответы

Помогите с кодом на python для телеграмм бота. выключается через 3 секунды после включения

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
from telegram.ext import Updater, CommandHandler, MessageHandler, filters, ConversationHandler
import datetime


# Функция для обработки команды /start
def start(update, context):
    update.message.reply_text('Привет! Я бот "Письмо в будущее".')
    update.message.reply_text('Для начала скажи, как тебя зовут?')
    return 'NAME'


# Функция для получения имени
def get_name(update, context):
    user_data = context.user_data
    user_data['name'] = update.message.text
    update.message.reply_text(f'Приятно познакомиться, {user_data["name"]}!')
    update.message.reply_text('Теперь напиши год своего выпуска:')
    return 'GRADUATION_YEAR'


# Функция для получения года выпуска
def get_year(update, context):
    user_data = context.user_data
    year = int(update.message.text)
    user_data['year'] = year
    update.message.reply_text('Отлично! Теперь напиши свое письмо в будущее:')
    return 'MESSAGE'


# Функция для получения письма
def get_message(update, context):
    user_data = context.user_data
    user_data['message'] = update.message.text

    # Рассчитываем дату доставки
    delivery_date = datetime.datetime(year=user_data['year'], month=7, day=1)

    # Добавляем задание на отправку
    context.job_queue.run_once(send_message, delivery_date, context=(update.message.chat_id, user_data['message']))

    update.message.reply_text('Твоё письмо будет доставлено 1 июля года выпуска!')
    return ConversationHandler.END


# Функция отправки сообщения
def send_message(context):
    chat_id, message = context.job.context
    context.bot.send_message(chat_id=chat_id, text=f"Пришло твоё письмо из прошлого:\n\n{message}")


# Основная функция
def main():
    # Замените TOKEN на ваш токен бота
    updater = Updater("тут написан мой токен", use_context=True)

    dp = updater.dispatcher

    # Создаем обработчик диалога
    conv_handler = ConversationHandler(
        entry_points=[CommandHandler('start', start)],
        states={
            'NAME': [MessageHandler(filters.text & ~filters.command, get_name)],
            'GRADUATION_YEAR': [MessageHandler(filters.text & ~filters.command, get_year)],
            'MESSAGE': [MessageHandler(filters.text & ~filters.command, get_message)]
        },
        fallbacks=[]
    )

    dp.add_handler(conv_handler)

    # Запускаем бота
    updater.start_polling()
    updater.idle()
    updater.dispatcher

if 'name' == '__main__':
    main()
Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Мыслитель
Изменено

У тебя if 'name' == '__main__'

убери кавычки с name, дальше должно нормально.

А лучше так:

if __name__ == '__main__':

Аватар пользователя
Ученик

Если ты и генерируешь коды в ИИ, выбери себе telebot или aiogram