fixed stuck in memory function. implemented random memory
This commit is contained in:
@@ -30,7 +30,6 @@ class MemoryHandler(BaseHandler):
|
||||
|
||||
search_string = " ".join(context.args)
|
||||
|
||||
|
||||
if search_string == '~photo':
|
||||
matching_models = self.models.JournalEntry.select().where(self.models.JournalEntry.media_path != "").order_by(self.models.JournalEntry.date)
|
||||
else: # searching for text
|
||||
@@ -40,7 +39,12 @@ class MemoryHandler(BaseHandler):
|
||||
)
|
||||
).order_by(self.models.JournalEntry.date)
|
||||
|
||||
|
||||
|
||||
# exit if no memory matches the string
|
||||
if len(matching_models) == 0:
|
||||
await update.message.reply_text(f"There is no matching memory yet.")
|
||||
return ConversationHandler.END
|
||||
|
||||
options = [[InlineKeyboardButton(m.date_pretty, callback_data=i)] for i,m in enumerate(matching_models)]
|
||||
|
||||
keyboard = InlineKeyboardMarkup(options)
|
||||
|
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}"
|
||||
)
|
||||
|
@@ -5,7 +5,7 @@ import logging
|
||||
import models
|
||||
from commands import journal, status, turtle, memory
|
||||
from commands.list import list
|
||||
from cronjob import chat_photo
|
||||
from cronjob import chat_photo, random_memory
|
||||
|
||||
logging.basicConfig(
|
||||
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
||||
@@ -24,13 +24,14 @@ def main() -> None:
|
||||
models.set_db(db_path)
|
||||
application = Application.builder().token(token).build()
|
||||
|
||||
|
||||
application.add_handler(journal.JournalHandler("journal", models).handler)
|
||||
application.add_handler(list.ListHandler("list", models).handler)
|
||||
application.add_handler(status.StatusHandler("status", models).handler)
|
||||
application.add_handler(turtle.TurtleHandler().handler)
|
||||
application.add_handler(memory.MemoryHandler("memory", models).handler)
|
||||
|
||||
random_memory.RandomMemoryJob(models, application.bot, application.job_queue)
|
||||
|
||||
# application.add_handler(CommandHandler("help", help_command))
|
||||
# on non command i.e message - echo the message on Telegram
|
||||
# application.add_handler(InlineQueryHandler(inline_query))
|
||||
|
Reference in New Issue
Block a user