Compare commits

4 Commits

Author SHA1 Message Date
2bceb9c033 minor 2024-01-14 20:10:16 -05:00
82a06046b0 minor comment removal 2024-01-01 21:26:11 -05:00
62a412b465 removal of tags 2023-12-27 11:10:58 -05:00
6241b57172 big oof 2023-12-27 00:12:44 -05:00

49
bot.py
View File

@@ -6,7 +6,7 @@ from telethon import TelegramClient, events
from telethon.tl.types import InputChannel
from telethon.errors import FloodWaitError
import asyncio, json, time, sys, yaml, os, time
import asyncio, json, time, sys, yaml, os, time, re
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from datetime import (
datetime,
@@ -20,6 +20,14 @@ job_defaults = {
'max_instances': 1
}
# Regexp patterns to remove from group
patterns = [
'https:\/\/t.me\/\w*',
'@[Ww]hite[Aa]ction'
]
combined_patterns = r'|'.join(map(r'(?:{})'.format, patterns))
# Start Scheduler
scheduler = AsyncIOScheduler(job_defaults=job_defaults)
@@ -56,7 +64,7 @@ async def _indexer(client, config):
start_time = time.time()
for input_channel in input_channels_entities:
async for message in client.iter_messages(input_channel, limit=None, likewhoareverse=True, wait_time=10):
async for message in client.iter_messages(input_channel, limit=None, reverse=True, wait_time=10):
try:
for output_channel in output_channel_entities:
# Process attachments
@@ -65,29 +73,38 @@ async def _indexer(client, config):
path = await client.download_media(message.media, file='usermedia/', progress_callback=callback)
if path is not None:
logging.info(f'Sending file to {output_channel}.')
await client.send_file(
output_channel,
path,
caption=message.text
)
if message.text:
logging.info(f'Sending file to {output_channel}.')
txt = re.sub(combined_patterns, '', message.text)
await client.send_file(
output_channel,
path,
caption=txt
)
else:
await client.send_file(
output_channel,
path
)
# Remove file after upload
os.remove(path)
else:
if message.text:
logging.info(f'Sending message to {output_channel}..')
elif message.text:
logging.info(f'Sending message to {output_channel}..')
txt = re.sub(combined_patterns, '', message.text)
await client.send_message(
output_channel,
message.text
)
await client.send_message(
output_channel,
txt
)
elif message.text:
logging.info(f'Sending message to {output_channel}.')
txt = re.sub(combined_patterns, '', message.text)
await client.send_message(
output_channel,
message.text
txt
)
except FloodWaitError as e:
logging.error(f'Flood wait for {e.seconds} for _indexer.')