Календарь - Библиотека для телеграм бота. 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

Вход

Либо введите логин и пароль:

Продолжая, я соглашаюсь с

Пользовательским соглашением,

Политикой конфиденциальности,

Политикой возврата.

Регистрация

Регистрация на сайте возможна только через один из предложенных сервисов:

Продолжая, я соглашаюсь с

Пользовательским соглашением,

Политикой конфиденциальности,

Политикой возврата.

Оплата