Skip to content

Commit

Permalink
readme update & version bumped
Browse files Browse the repository at this point in the history
  • Loading branch information
noXplode committed Dec 6, 2023
1 parent a705d82 commit 19b4718
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 9 deletions.
63 changes: 55 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,106 @@



# Date Selection tool for Aiogram Telegram Bots





## Description



A simple inline calendar, date selection tool for [aiogram](https://github.com/aiogram/aiogram) telegram bots written in Python.



Offers two types of date pickers:



Navigation calendar - user can either select a date or move to the next or previous month/year by clicking a singe button.



Dialog calendar - user selects year on first stage, month on next stage, day on last stage.





**From version 0.2 supports aiogram 3, use version 0.1.1 with aiogram 2.**


## Main features
- Two calendars with abilities to navigate years, months, days altogether or in dialog
- Ability to set specified locale (language of captions) or inherit from user`s locale
- Limiting the range of dates to select from
- Highlighting todays date


## Usage



Install package



pip install aiogram_calendar


pip install aiogram_calendar





A full working example on how to use aiogram-calendar is provided in *`bot_example.py*`.



In example keyboard with buttons is created.


In example keyboard with buttons is created.



Each button triggers a calendar in a different way by adding it to a message with a *reply_markup*.

Each button triggers a calendar in a different way by adding it to a message with a *reply_markup*.


reply_markup=await SimpleCalendar().start_calendar()

reply_markup=await SimpleCalendar().start_calendar()
^^ will reply with a calendar created using English localization (months and days of week captions). Locale can be overridden by passing locale argument:

reply_markup=await SimpleCalendar(locale='uk_UA').start_calendar()


reply_markup=await SimpleCalendar(locale='uk_UA').start_calendar()

or by getting locale from User data provided by telegram API using get_user_locale method by passing `message.from_user` to it

reply_markup=await SimpleCalendar(locale=await get_user_locale(message.from_user)).start_calendar()


reply_markup=await SimpleCalendar(locale=await get_user_locale(message.from_user)).start_calendar()



Depending on what button of calendar user will press callback is precessed using the *process_selection* method.

selected, date = await SimpleCalendar(locale=await get_user_locale(callback_query.from_user)).process_selection(callback_query, callback_data)
Here locale is specified from `callback_query.from_user`


selected, date = await SimpleCalendar(locale=await get_user_locale(callback_query.from_user)).process_selection(callback_query, callback_data)

Here locale is specified from `callback_query.from_user`





## Gif demo:





![aiogram_calendar](https://j.gifs.com/nRQlqW.gif)
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "aiogram_calendar"
version = "0.4.0"
version = "0.5.0"
description = "Simple Inline Calendar & Date Selection tool for Aiogram Telegram bots"
readme = "README.md"
authors = [{ name = "Andrii Nikolabai", email = "nikolabay.as@gmail.com" }]
Expand Down

0 comments on commit 19b4718

Please sign in to comment.