support multi-message posts, fix message list fetching

This commit is contained in:
E. S. 2024-08-07 04:31:24 +03:00
parent f705ac831b
commit 0b21ef255b

View File

@ -13,7 +13,7 @@ from telethon.extensions.html import (
) )
from telethon.tl.patched import Message from telethon.tl.patched import Message
from telethon.tl.types import InputPeerChannel, InputMediaWebPage from telethon.tl.types import InputPeerChannel, InputMediaWebPage
from telethon.tl.functions.messages import EditMessageRequest, SendScheduledMessagesRequest from telethon.tl.functions.messages import EditMessageRequest, SendScheduledMessagesRequest, GetScheduledHistoryRequest
# Set up logging # Set up logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
@ -30,20 +30,25 @@ def load_config():
async def main(mode, channel_id=None): async def main(mode, channel_id=None):
messages = reversed(await client.get_messages(channel_id, limit=100, scheduled=True))
channel = await client.get_entity(channel_id) channel = await client.get_entity(channel_id)
messages = reversed((await client(GetScheduledHistoryRequest(peer=channel.id, hash=0))).messages)
input_peer = InputPeerChannel(channel.id, channel.access_hash) input_peer = InputPeerChannel(channel.id, channel.access_hash)
send_date = None
for m in messages: for m in messages:
if not isinstance(m, Message): if not isinstance(m, Message):
continue continue
if mode == 'send': if mode == 'send':
await client(SendScheduledMessagesRequest( if send_date is None or m.date.date() == send_date:
peer=input_peer, send_date = m.date.date()
id=[m.id] await client(SendScheduledMessagesRequest(
)) peer=input_peer,
break id=[m.id]
))
continue
else:
break
elif mode == 'images': elif mode == 'images':
html = entities_to_html(m.message, m.entities) html = entities_to_html(m.message, m.entities)
@ -68,7 +73,7 @@ async def main(mode, channel_id=None):
await sleep(2) await sleep(2)
else: else:
logging.error(f'Message {m.id}: could not find link with a dot!') logging.warning(f'Message {m.id}: could not find link with a dot!')
if __name__ == '__main__': if __name__ == '__main__':