/
Esgalnor
/
TG_Bot
Обзор
Документация
Войти
/
Esgalnor
/
TG_Bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
patch
set_days.py
114 строк
3 KB
Esgalnor
upload files
18 авг 2025, 17:25
18 авг 2025, 17:25
54b1c23
Код
Авторство
О чём код?
import datetime from telebot.types import Message, CallbackQuery, InlineKeyboardMarkup, InlineKeyboardButton from telebot_calendar import RUSSIAN_LANGUAGE from loader import bot from database.user_pw import users from database.calendar_pw import my_calendar from config.config import MASTER_ID YEAR = datetime.date.today().year def choice_year(): keyboard = InlineKeyboardMarkup(row_width=3) global YEAR row_text = ['<', str(YEAR), '>'] row = list() for elem in row_text: if elem.isdigit(): text = ' '.join(('year', str(YEAR))) else: text = elem row.append(InlineKeyboardButton(elem, callback_data=text)) keyboard.add(*row) return keyboard @bot.message_handler(state="*", commands=["set_days"]) def set_days(message: Message): id = message.from_user.id if id == MASTER_ID: bot.send_message( id, 'Выберите год:', reply_markup=choice_year()) @bot.callback_query_handler(func=lambda call: call.data.startswith('year')) def set_days_to_month(call: CallbackQuery): id = call.from_user.id if id == MASTER_ID: keyboard = InlineKeyboardMarkup(row_width=3) row = list() for num, month in enumerate(RUSSIAN_LANGUAGE.months): row.append(InlineKeyboardButton(month, callback_data=' '.join(('month', month, str(num + 1), str(YEAR))))) keyboard.add(*row) bot.send_message( id, 'Выберите месяц:', reply_markup=keyboard) @bot.callback_query_handler(func=lambda call: call.data.startswith("<")) def callback_inline_below(call: CallbackQuery): id = call.from_user.id message_id = call.message.message_id print(message_id) if id == MASTER_ID: global YEAR YEAR -= 1 bot.edit_message_text( chat_id=id, message_id=message_id, text='Выберите год', reply_markup=choice_year() ) @bot.callback_query_handler(func=lambda call: call.data.startswith(">")) def callback_inline_above(call: CallbackQuery): id = call.from_user.id message_id = call.message.message_id if id == MASTER_ID: global YEAR YEAR += 1 bot.edit_message_text( chat_id=id, message_id=message_id, text='Выберите год', reply_markup=choice_year() ) @bot.callback_query_handler(func=lambda call: call.data.startswith("month")) def callback_inline(call: CallbackQuery): id = call.from_user.id if id == MASTER_ID: message_list = call.data.split() num_month_txt = message_list[2].zfill(2) #users.set_temp(id, num_month_txt) year = message_list[3] try: date = "{}.{}.{}".format("01", num_month_txt, year) my_calendar.get_recs(date) bot.send_message(id, "База месяца уже сформирована.") except: my_calendar.new_month(int(message_list[2])) bot.send_message(id, "База месяца сформирована.") bot.edit_message_text( chat_id=id, message_id=call.message.message_id, text="Год {} месяц {}\n" "/set_work_day - задать рабочие дни\n" "/set_unwork_day - задать нерабочие дни".format(year, message_list[1]) ) users.set_temp(id, year + ' ' + num_month_txt) bot.delete_state(id)