Задать вопрос
@HabSteam

Как сделать так чтобы бот понимал какой сегодня день недели?

требуется сделать так что-бы бот понимал какой сегодня день недели с помощью модуля datetime.weekday(), и при нажатии на кнопку "Расписание на сегодня (Временно недоступно)", выдавал результат с сегодняшний день недели, Т.е Если сегодня четверг, нужно воспроизвести elif (message.text == "Четверг"): Если пятница, соответственно elif (message.text == "Пятница"):

from  config import *

import datetime
import telebot
from telebot import types # для указание типов
token='***********************'
bot=telebot.TeleBot(token)


today = datetime.date.today()
week = datetime.datetime.isoweekday(today)

@bot.message_handler(commands=['start'])
def handle_start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Расписание на сегодня (Временно недоступно)")
    btn2 = types.KeyboardButton("Расписание на завтра")
    btn3 = types.KeyboardButton("Расписание на другой день")
    btn4 = types.KeyboardButton('Чаты GPT')
    markup.add(btn1, btn3, btn4)
    bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я бот, в котором ты сможешь узнать расписание.\nСегодня: {1}".format(message.from_user, today), reply_markup=markup)
    
@bot.message_handler(content_types=['text'])
def func(message):
    if(message.text == "Расписание на другой день"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        back = types.KeyboardButton("Вернуться в главное меню")
        pn = types.KeyboardButton("Понедельник")
        vt = types.KeyboardButton("Вторник")
        sr = types.KeyboardButton("Среда")
        ch = types.KeyboardButton("Четверг")
        pt = types.KeyboardButton("Пятница")
        sb = types.KeyboardButton("Суббота")

        markup.add(pn, vt, sr, ch, pt, sb, back,)
        bot.send_message(message.chat.id, text="Расписание на другой день", reply_markup=markup)

    elif (message.text == "Чаты GPT"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Расписание на сегодня (Временно недоступно)")
        btn2 = types.KeyboardButton("Расписание на завтра")
        btn3 = types.KeyboardButton("Расписание на другой день")
        btn4 = types.KeyboardButton('Чаты GPT')
        markup.add(btn1, btn3, btn4)
        bot.send_message(message.chat.id, text=gpt, reply_markup=markup)

    elif (message.text == "Понедельник"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton("Расписание на другой день")
        markup.add(button1)
        bot.send_message(message.chat.id, text=pon, reply_markup=markup)

    elif (message.text == "Вторник"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton("Расписание на другой день")
        markup.add(button1)
        bot.send_message(message.chat.id, text=vto, reply_markup=markup)
    
    elif (message.text == "Среда"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton("Расписание на другой день")
        markup.add(button1)
        bot.send_message(message.chat.id, text=sre, reply_markup=markup)

    elif (message.text == "Четверг"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton("Расписание на другой день")
        markup.add(button1)
        bot.send_message(message.chat.id, text=che, reply_markup=markup)

    elif (message.text == "Пятница"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton("Расписание на другой день")
        markup.add(button1)
        bot.send_message(message.chat.id, text=pat, reply_markup=markup)

    elif (message.text == "Суббота"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton("Расписание на другой день")
        markup.add(button1)
        bot.send_message(message.chat.id, text=sub, reply_markup=markup)

    elif (message.text == "Расписание на сегодня (Временно недоступно)"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Расписание на сегодня (Временно недоступно)")
        btn2 = types.KeyboardButton("Расписание на завтра")
        btn3 = types.KeyboardButton("Расписание на другой день")
        btn4 = types.KeyboardButton('Чаты GPT')
        markup.add(btn1, btn3, btn4)
        bot.send_message(message.chat.id, text=ponedel, reply_markup=markup)
        bot.send_message(message.chat.id, text='Расписание на сегодня (Временно недоступно)', reply_markup=markup)

    elif (message.text == "Вернуться в главное меню"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Расписание на сегодня (Временно недоступно)")
        btn2 = types.KeyboardButton("Расписание на завтра")
        btn3 = types.KeyboardButton("Расписание на другой день")
        btn4 = types.KeyboardButton('Чаты GPT')
        markup.add(btn1, btn3, btn4)
        bot.send_message(message.chat.id, text="Вы вернулись в главное меню\nСегодня: {1}".format(message.from_user, today), reply_markup=markup)

bot.polling(none_stop=True)
  • Вопрос задан
  • 310 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
mayton2019
@mayton2019
Bigdata Engineer
Почитай про structural pattern matching в Python.

И почитай про шаблон RCWP (Replace Condition With Polymorphism)
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Учим стандартную библиотекц питона.
Там это есть.
import datetime
day_of_week = datetime.datetime.now.weekday()
Ответ написан
@SynapticWhisper
import datetime

weekdays = {
    1: "Понедельник",
    2: "Вторник",
    3: "Среда",
    4: "Четверг",
    ...
}

today = datetime.date.today().isoweekday()

В today будет численное представление сегодняшнего дня недели.
Дальше если нужно дергаешь значение из словаря, и получаешь в текстовом формате на русском языке.
t = weekdays[today]
И как-то обрабатываешь и встраиваешь это в свою логику.
Было бы неплохо разделить эту простыню кода на модули, отдельный класс или модуль для создания клавиатур, вытащить из бесконечных if-else логику и разделить ее на функции. Тогда можно было бы организовать это все как то так:
def foo_1(*args, **kwargs):
   """Твой код"""
   ...
def foo_2(*args, **kwargs):
   """Твой код"""
   ...
functions = {
   "Понедельник": foo_1,
   "Вторник": foo_2,
   ...
}
def func(message):
   if message.text == "Расписание на сегодня":
      today = datetime.date.today().isoweekday()
      t = weekdays[today]
   else:
      t = message.text
   functions[t]()


объем сократится, читаемость повысится, все в шоколаде
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы