From 1d3221932ae2d0a86833b85c125ca811a6ccc81c Mon Sep 17 00:00:00 2001 From: bakatrouble Date: Fri, 3 Nov 2023 15:17:24 +0300 Subject: [PATCH] add resend_after command --- main.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/main.py b/main.py index 87721f9..1042ccf 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ import asyncio import base64 +import datetime import logging import os import random @@ -143,6 +144,35 @@ async def check_updates(): await sleep(1) +@dp.message(filters.Command('resend_after'), ChatFilter) +async def resend_after(msg: Message): + try: + timestamp = int(msg.text.split()[1]) + except: + traceback.print_exc() + await msg.reply('Invalid timestamp or not provided') + return + + async with redis.lock('e621:update'): + tag_list = [t.decode() for t in await redis.smembers('e621:subs')] + for i, tag in enumerate(tag_list): + await msg.reply(f'Checking tag {tag} ({i+1}/{len(tag_list)}') + posts = [] + page = 1 + while True: + page_posts = await e621.get_posts(tag, page) + if not page_posts: + break + for post in page_posts: + if datetime.datetime.fromisoformat(post.created_at).timestamp() < timestamp: + break + posts.append(post) + page += 1 + for post in posts[::-1]: + await send_post(post, tag_list) + await msg.reply('Finished') + + @dp.message(filters.Command('add'), ChatFilter) async def add_tag(msg: Message): args = ' '.join(msg.text.split()[1:])