Vaktija: dodaj izlazak sunca (granica sabaha)
- namaz_vrijeme prima i koji="izlazak" (izlazak sunca, vakat[1]). - Uz sabah odgovor se doda "Sabah se klanja do izlaska sunca, u HH:MM" (za današnji ili sutrašnji sabah, sa odgovarajućim danom). - "Sljedeći namaz" i dalje preskače izlazak sunca (nije namaz). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LzKpYaEsuWDevuNnvSjcFW
This commit is contained in:
@@ -12,16 +12,19 @@ from . import client, store
|
||||
|
||||
log = logging.getLogger("idriz.vaktija")
|
||||
|
||||
# indeks u vakat[] po namazu (index 1 = izlazak sunca, nije namaz)
|
||||
IDX = {"sabah": 0, "podne": 2, "ikindija": 3, "aksam": 4, "jacija": 5}
|
||||
PRETTY = {"sabah": "sabah", "podne": "podne", "ikindija": "ikindija", "aksam": "akšam", "jacija": "jacija"}
|
||||
REDOSLIJED = ["sabah", "podne", "ikindija", "aksam", "jacija"]
|
||||
# indeks u vakat[] (index 1 = izlazak sunca — nije namaz, ali granica sabaha)
|
||||
IDX = {"sabah": 0, "izlazak": 1, "podne": 2, "ikindija": 3, "aksam": 4, "jacija": 5}
|
||||
PRETTY = {"sabah": "sabah", "izlazak": "izlazak sunca", "podne": "podne",
|
||||
"ikindija": "ikindija", "aksam": "akšam", "jacija": "jacija"}
|
||||
REDOSLIJED = ["sabah", "podne", "ikindija", "aksam", "jacija"] # "sljedeći namaz" — bez izlaska sunca
|
||||
# rod za "već prošao/prošlo/prošla"
|
||||
PROSAO = {"sabah": "prošao", "podne": "prošlo", "ikindija": "prošla", "aksam": "prošao", "jacija": "prošla"}
|
||||
PROSAO = {"sabah": "prošao", "izlazak": "prošao", "podne": "prošlo",
|
||||
"ikindija": "prošla", "aksam": "prošao", "jacija": "prošla"}
|
||||
|
||||
INSTRUCTIONS = """NAMAZ / VAKTIJA (alat: namaz_vrijeme): kazuješ vremena dnevnih namaza (sabah, podne, ikindija, akšam, jacija) za postavljenu lokaciju.
|
||||
- Kad dijete pita "kad je sljedeći namaz?", pozovi namaz_vrijeme sa koji="sljedeci".
|
||||
- Kad pita za određeni namaz ("kad je ikindija?", "kad je sabah?"), pozovi namaz_vrijeme sa tim imenom (sabah, podne, ikindija, aksam, jacija). Alat sam odlučuje odnosi li se na današnji (ako tek nadolazi) ili sutrašnji namaz (ako je današnji već prošao).
|
||||
- Kad dijete pita "kad je sljedeći namaz?", pozovi namaz_vrijeme sa koji="sljedeci". (Izlazak sunca nije namaz, pa nije "sljedeći namaz".)
|
||||
- Kad pita za određeni namaz ("kad je ikindija?", "kad je sabah?"), pozovi namaz_vrijeme sa tim imenom (sabah, podne, ikindija, aksam, jacija). Alat sam odlučuje odnosi li se na današnji (ako tek nadolazi) ili sutrašnji (ako je današnji već prošao).
|
||||
- Može se pitati i "kad je izlazak sunca?" (koji="izlazak") — to je granica do kad se klanja sabah. Kod sabaha alat to i sam doda.
|
||||
- Alat vraća gotovu rečenicu na bosanskom — izgovori je djetetu prirodno, bez izmišljanja vremena.
|
||||
- Ako alat kaže da nema podataka, reci to iskreno (možda nema interneta)."""
|
||||
|
||||
@@ -32,8 +35,8 @@ SCHEMA = {
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"koji": {"type": "string", "enum": ["sljedeci", "sabah", "podne", "ikindija", "aksam", "jacija"],
|
||||
"description": "'sljedeci' ili ime namaza."},
|
||||
"koji": {"type": "string", "enum": ["sljedeci", "sabah", "izlazak", "podne", "ikindija", "aksam", "jacija"],
|
||||
"description": "'sljedeci' za sljedeći namaz, ime namaza, ili 'izlazak' za izlazak sunca."},
|
||||
},
|
||||
"required": ["koji"],
|
||||
},
|
||||
@@ -74,6 +77,11 @@ def _hhmm(t: dt.datetime) -> str:
|
||||
return t.strftime("%H:%M")
|
||||
|
||||
|
||||
def _do_izlaska(vakat: list[str], date: dt.date) -> str:
|
||||
"""Napomena uz sabah: do kad se može klanjati (do izlaska sunca)."""
|
||||
return f" Sabah se klanja do izlaska sunca, u {_hhmm(_dt(vakat, IDX['izlazak'], date))}."
|
||||
|
||||
|
||||
async def namaz_vrijeme(ctx: AppContext, args: dict) -> str:
|
||||
koji = (args.get("koji") or "sljedeci").strip().lower()
|
||||
loc_id = store.get_location_id()
|
||||
@@ -91,6 +99,8 @@ async def namaz_vrijeme(ctx: AppContext, args: dict) -> str:
|
||||
if t > now:
|
||||
delta = int((t - now).total_seconds() // 60)
|
||||
recenica = f"Sljedeći namaz je {PRETTY[name]}, u {_hhmm(t)}, {_za(delta)}."
|
||||
if name == "sabah":
|
||||
recenica += _do_izlaska(vakat, today)
|
||||
return f'Reci djetetu prirodno na bosanskom: "{recenica}"'
|
||||
# svi današnji prošli -> sutra sabah
|
||||
tomorrow = today + dt.timedelta(days=1)
|
||||
@@ -100,6 +110,7 @@ async def namaz_vrijeme(ctx: AppContext, args: dict) -> str:
|
||||
t = _dt(vsutra, IDX["sabah"], tomorrow)
|
||||
delta = int((t - now).total_seconds() // 60)
|
||||
recenica = f"Svi današnji namazi su prošli. Sljedeći je sabah sutra, u {_hhmm(t)}, {_za(delta)}."
|
||||
recenica += _do_izlaska(vsutra, tomorrow)
|
||||
return f'Reci djetetu prirodno na bosanskom: "{recenica}"'
|
||||
|
||||
if koji not in IDX:
|
||||
@@ -109,6 +120,8 @@ async def namaz_vrijeme(ctx: AppContext, args: dict) -> str:
|
||||
if t_today > now:
|
||||
delta = int((t_today - now).total_seconds() // 60)
|
||||
recenica = f"{PRETTY[koji].capitalize()} je danas u {_hhmm(t_today)}, {_za(delta)}."
|
||||
if koji == "sabah":
|
||||
recenica += _do_izlaska(vakat, today)
|
||||
return f'Reci djetetu prirodno na bosanskom: "{recenica}"'
|
||||
# danas prošao -> sutra
|
||||
tomorrow = today + dt.timedelta(days=1)
|
||||
@@ -118,6 +131,8 @@ async def namaz_vrijeme(ctx: AppContext, args: dict) -> str:
|
||||
t = _dt(vsutra, IDX[koji], tomorrow)
|
||||
delta = int((t - now).total_seconds() // 60)
|
||||
recenica = f"{PRETTY[koji].capitalize()} je danas već {PROSAO[koji]}. Sutra je u {_hhmm(t)}, {_za(delta)}."
|
||||
if koji == "sabah":
|
||||
recenica += _do_izlaska(vsutra, tomorrow)
|
||||
return f'Reci djetetu prirodno na bosanskom: "{recenica}"'
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user