Меню
Календарь - Библиотека для телеграм бота. Python
• Нет отзывов
Автор
Описание
Python Библиотека для телеграм бота которая добавляет календарь с годами, месяцами и днями
Установка
pip install python-telegram-bot-calendar
Использование
Есть один основной класс — DetailedTelegramCalendar, который можно использовать следующим образом. Это пример библиотеки pyTelegramBotAPI. Поддерживаются и другие библиотеки.
from telegram_bot_calendar import DetailedTelegramCalendar, LSTEP
…
@bot.message_handler(commands=[‘start’])
def start(m):
calendar, step = DetailedTelegramCalendar().build()
bot.send_message(m.chat.id,
f”Select {LSTEP[step]}”,
reply_markup=calendar)
@bot.callback_query_handler(func=DetailedTelegramCalendar.func())
def cal(c):
result, key, step = DetailedTelegramCalendar().process(c.data)
if not result and key:
bot.edit_message_text(f”Select {LSTEP[step]}”,
c.message.chat.id,
c.message.message_id,
reply_markup=key)
elif result:
bot.edit_message_text(f”You selected {result}”,
c.message.chat.id,
c.message.message_id)
В обработчике запуска создается календарь. Можно передать несколько аргументов:
calendar_id – небольшое целое число или строка, используемая для идентификации календаря. Он используется, когда вам нужно несколько разных календарей (по умолчанию – 0)
current_date – дата и время.объект даты, начальное значение даты (по умолчанию – сегодняшняя дата)
additional_buttons – 1D список кнопок, которые будут добавлены в нижнюю часть календаря
locale – либо en, ru, либо eo, может быть добавлен дополнительно
min_date и max_date – оба используются в качестве минимального и максимального значений для календаря
Как вы можете видеть, специальная функция, которая предоставляется, должна быть передана обработчику запроса обратного вызова. Это сработает автоматически. Функция принимает только один аргумент – calendar_id, который по умолчанию равен 0.
В теле функции-обработчика вам нужно вызвать функцию процесса для данных обратного вызова. предупреждение! Вам нужно снова создать объект календаря, если он не был сохранен ранее.
Функция process возвращает кортеж размера 3 – результат, клавиатура, шаг.
result – дата и время.объект даты, если пользователь закончил выбор. В противном случае Нет
keyboard – онлайн-разметка клавиатуры, если результат еще не готов. В противном случае Нет
step – ГОД, МЕСЯЦ или ДЕНЬ, если вы не готовы. Нет также возможно, если нет изменений в клавиатуре.
Расширенное использование
Несколько календарей
Вы можете создать столько календарей, сколько захотите. Однако, чтобы правильно их обрабатывать, установите разные идентификаторы calendar_id, когда вы хотите их различать. Взгляните на примеры.
Диапазоны дат
В конструкторе класса min_date и max_date – оба используются как минимальные и максимальные значения для календаря. Если вы добавите их, в календаре не будут отображаться нежелательные даты.
Пользовательский стиль
Вы также можете написать свой собственный код. Одним из примеров является переопределение порядка шагов.
В пакете вы можете найти WMonthTelegramCalendar и WYearTelegramCalendar, которые начинаются с выбора дня и месяца, а не с года.
Вы также можете переопределить параметры стиля. Пример:
class MyStyleCalendar(DetailedTelegramCalendar):
# previous and next buttons style. they are emoji now!
prev_button = “⬅️”
next_button = “➡️”
# you do not want empty cells when month and year are being selected
empty_month_button = “”
empty_year_button = “”
Пользовательский Перевод
your_translation_months = list(‘abcdefghijkl’)
your_translation_days_of_week = list(‘yourtra’)
class MyTranslationCalendar(DetailedTelegramCalendar):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.days_of_week[‘yourtransl’] = your_translation_days_of_week
self.months[‘yourtransl’] = your_translation_months
Ссылка на гитхаб: https://github.com/artembakhanov/python-telegram-bot-calendar
Похожие
Похожие товары
Телеграм бот – бронирования отелей, коворкинга, записи к мастеру. GrandHotelBot
0,00руб. Telegram - боты