bot.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import telebot
  2. from telebot import types
  3. import re
  4. import sys
  5. import time
  6. sys.path.append('./modules/')
  7. from dates_2024 import calendar, month_name
  8. from create_calendar import CreatePicture
  9. from set_dots import SetDot
  10. from date_month import find_week_and_day
  11. API_TOKEN = '7263538943:AAGam4gQylREyzMd3GZEMdCVwUNaW0PHumM'
  12. bot = telebot.TeleBot(API_TOKEN)
  13. @bot.message_handler(commands=['start'])
  14. def start(message):
  15. markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
  16. markup.add(btn1, btn2)
  17. bot.send_message(message.from_user.id, "Для картинки с датой указать месяц в формате: 09\nГде '09' - число месяца \nДля установки даты указать дату в формате: 09.03 \nГде '09.03' - месяц и дата", reply_markup=markup)
  18. # Регулярные выражения для определения форматов
  19. month_pattern = r'^(0[1-9]|1[0-2])$' # Формат 09
  20. date_pattern = r'^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[0-2])$' # Формат 09.03
  21. @bot.message_handler(func=lambda message: True)
  22. def check_date_format(message):
  23. text = message.text.strip()
  24. # Создать календарь на месяц
  25. if re.match(month_pattern, text):
  26. bot.reply_to(message, f"Вы ввели месяц в формате: {text}")
  27. CreatePicture(month_name[int(text)-1], calendar[int(text)-1])
  28. with open("./photos/month.png", 'rb') as photo:
  29. bot.send_photo(message.from_user.id, photo)
  30. # На календаре поставить точку
  31. elif re.match(date_pattern, text):
  32. bot.reply_to(message, f"Вы ввели дату в формате: {text}")
  33. days = re.match(date_pattern, text).group(2)
  34. month = re.match(date_pattern, text).group(1)
  35. result = find_week_and_day(calendar[int(month)-1], int(days))
  36. if result:
  37. week, day = result
  38. print(f"Число {days} находится на неделе {week} и дне {day}.")
  39. SetDot(week, day)
  40. with open("./photos/dots.png", 'rb') as photo:
  41. bot.send_photo(message.from_user.id, photo)
  42. else:
  43. print(f"Число {days} не найдено в календаре.")
  44. else:
  45. bot.reply_to(message, "Формат не распознан. Пожалуйста, введите месяц в формате 09 или дату в формате 09.03.")
  46. bot.infinity_polling()