fixed stuck in memory function. implemented random memory
This commit is contained in:
59
bot/cronjob/random_memory.py
Normal file
59
bot/cronjob/random_memory.py
Normal file
@@ -0,0 +1,59 @@
|
||||
from datetime import time, timedelta, timezone, datetime, date
|
||||
import os
|
||||
from peewee import fn
|
||||
|
||||
|
||||
class RandomMemoryJob():
|
||||
def __init__(self, models, bot, job_queue):
|
||||
self.models = models
|
||||
self.bot = bot
|
||||
|
||||
|
||||
# set the message sending time; include UTC shift +2
|
||||
sending_time = time(hour=12, minute=00, second=0, tzinfo=timezone(timedelta(hours=2)))
|
||||
|
||||
# context.job_queue.run_daily(self.callback_memory, sending_time, chat_id=chat_id)
|
||||
# job_queue.run_repeating(self.callback_memory, interval=10, first=sending_time)
|
||||
job_queue.run_once(self.callback_memory, timedelta(seconds=2))
|
||||
|
||||
|
||||
async def callback_memory(self, context):
|
||||
|
||||
# last_seen of memory must be older than 10 days in past or None
|
||||
possible_entries = self.models.JournalEntry.select().where(
|
||||
(datetime.today().date().year - self.models.JournalEntry.last_shown.year >= 0) | (self.models.JournalEntry.last_shown == None)).where(
|
||||
(datetime.today().date().month - self.models.JournalEntry.last_shown.month >= 0) | (self.models.JournalEntry.last_shown == None)).where(
|
||||
(datetime.today().date().day - self.models.JournalEntry.last_shown.day >= 0) | (self.models.JournalEntry.last_shown == None)).order_by(fn.Random())
|
||||
|
||||
# returns if all entries have been seen recently
|
||||
if len(possible_entries) == 0:
|
||||
print("Come back later for another memory.")
|
||||
return
|
||||
|
||||
# update the last_shown of the chosen entry
|
||||
chosen_entry = possible_entries.get()
|
||||
# chosen_entry = self.models.JournalEntry.select().get()
|
||||
# chosen_entry.last_shown = date(year=2023, month=5, day=3)
|
||||
chosen_entry.last_shown = datetime.today().date()
|
||||
chosen_entry.save()
|
||||
|
||||
chat_id = os.getenv("CHAT_ID")
|
||||
|
||||
if chosen_entry.media_path:
|
||||
await self.bot.send_photo(
|
||||
chat_id = chat_id,
|
||||
photo = chosen_entry.media_path,
|
||||
caption =
|
||||
f"On {chosen_entry.date_pretty}, "
|
||||
f"{chosen_entry.author} wrote: \n"
|
||||
f"{chosen_entry.text}"
|
||||
)
|
||||
else:
|
||||
await self.bot.send_message(
|
||||
chat_id = chat_id,
|
||||
text =
|
||||
f"On {chosen_entry.date_pretty}, "
|
||||
f"{chosen_entry.author} wrote: \n"
|
||||
f"{chosen_entry.text}"
|
||||
)
|
||||
|
Reference in New Issue
Block a user