[9be02d9] | 1 | # This file is part of python-cinema-club-bot
|
---|
| 2 | # contributed in 2024 by Mikhail Kirillov (~w96k) <w96k@runbox.com>
|
---|
| 3 |
|
---|
| 4 | # To the extent possible under law, the author(s) have dedicated all copyright
|
---|
| 5 | # and related and neighboring rights to this software to the public domain
|
---|
| 6 | # worldwide. This software is distributed without any warranty.
|
---|
| 7 |
|
---|
| 8 | # You should have received a copy of the CC0 Public Domain Dedication along
|
---|
| 9 | # with this software. If not, see:
|
---|
| 10 | # <http://creativecommons.org/publicdomain/zero/1.0/>
|
---|
| 11 |
|
---|
| 12 | from telegram.ext import ContextTypes
|
---|
| 13 | from datetime import datetime
|
---|
[69dd60c] | 14 | from typing import Optional
|
---|
[9be02d9] | 15 |
|
---|
| 16 |
|
---|
[69dd60c] | 17 | def is_past(dt: Optional[datetime]) -> bool:
|
---|
| 18 | if dt is None:
|
---|
| 19 | return False
|
---|
[9be02d9] | 20 |
|
---|
| 21 | return dt < datetime.today()
|
---|
| 22 |
|
---|
| 23 |
|
---|
[69dd60c] | 24 | def has_finished_movie(context: ContextTypes.DEFAULT_TYPE) -> bool:
|
---|
[9be02d9] | 25 | events = context.chat_data["events"]
|
---|
[69dd60c] | 26 | movies = context.chat_data["movies"]
|
---|
| 27 |
|
---|
[9be02d9] | 28 | last_event = events[-1] if events != [] else None
|
---|
[69dd60c] | 29 | last_movie = movies[-1] if movies != [] else None
|
---|
[9be02d9] | 30 |
|
---|
[69dd60c] | 31 | return last_event is not None and last_movie is not None and \
|
---|
| 32 | last_event["user"] == last_movie["user"] and \
|
---|
[9be02d9] | 33 | is_past(last_event["when"])
|
---|
[23bddf3] | 34 |
|
---|
| 35 |
|
---|
[69dd60c] | 36 | def has_event_without_movie(context: ContextTypes.DEFAULT_TYPE) -> bool:
|
---|
| 37 | events = context.chat_data["events"]
|
---|
| 38 | last_event = events[-1] if events != [] else None
|
---|
| 39 |
|
---|
| 40 | return last_event and last_event["movie"] is None
|
---|
| 41 |
|
---|
| 42 |
|
---|
[23bddf3] | 43 | def has_unfinished_event(context: ContextTypes.DEFAULT_TYPE) -> bool:
|
---|
| 44 | events = context.chat_data["events"]
|
---|
| 45 | last_event = events[-1] if events != [] else None
|
---|
| 46 |
|
---|
[69dd60c] | 47 | if last_event is None:
|
---|
| 48 | return False
|
---|
| 49 |
|
---|
| 50 | if last_event["movie"] is None:
|
---|
| 51 | return False
|
---|
| 52 |
|
---|
| 53 | return not is_past(last_event["when"])
|
---|
| 54 |
|
---|