@Zhoraboba

Что с телеграм ботом для отправки файлов по выбранной дате что это может быть?

вот я настроил бота написал все сделал хочу получить файл выбиваю дату но он пишет что нет файла по этой дате но он есть

import telebot
import datetime
import os

API_TOKEN = 'TOKEN'
bot = telebot.TeleBot(API_TOKEN)

@bot.message_handler(commands=['start'])
def send_welcome(message):
    keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
    button_date = telebot.types.KeyboardButton("Запросить документ за определенную дату")
    button_period = telebot.types.KeyboardButton("Загрузить документы за весь период")
    keyboard.add(button_date, button_period)
    
    bot.send_message(message.chat.id, "Добро пожаловать! Пожалуйста, выберите опцию:", reply_markup=keyboard)

@bot.message_handler(func=lambda message: message.text == "Запросить документ за определенную дату")
def request_date(message):
    keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
    today = datetime.date.today()
    
  
    for i in range(7):
        date_button = telebot.types.KeyboardButton(today + datetime.timedelta(days=i)).strftime("%d-%m-%Y")
        keyboard.add(date_button)
        
    bot.send_message(message.chat.id, "Выберите дату:", reply_markup=keyboard)

@bot.message_handler(func=lambda message: message.text == "Загрузить документы за весь период")
def request_period(message):
    bot.send_message(message.chat.id, "Введите дату начала в формате DD-MM-YYYY:")

@bot.message_handler(func=lambda message: True)
def handle_date_input(message):
    try:
        selected_date = datetime.datetime.strptime(message.text, "%d-%m-%Y").date()
        file_name = f"{selected_date.strftime('%Y-%m-%d')}.xlsx"
        file_path = os.path.join(r'C:\Users\user\Downloads', file_name)
        
        if os.path.exists(file_path):
            with open(file_path, 'rb') as file:
                bot.send_document(message.chat.id, file)
        else:
            bot.send_message(message.chat.id, "Файл не найден. Убедитесь, что файл с указанной датой существует.")
    except ValueError:
        bot.send_message(message.chat.id, "Неверный формат. Пожалуйста, введите дату в формате DD-MM-YYYY:")
    except Exception as e:
        bot.send_message(message.chat.id, f"Произошла ошибка: {e}")

bot.polling()
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
grantur5707
@grantur5707
Full Stack Web Developer
У вас метод .strftime("%d-%m-%Y") применяется не к тому методу.
Должно быть так:

date_button = telebot.types.KeyboardButton((today + datetime.timedelta(days=i)).strftime("%d-%m-%Y"))
keyboard.add(date_button)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы