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
	 Lia Schöneweiß
					Lia Schöneweiß