Last active
July 8, 2021 21:39
-
-
Save landgrafhomyak/06268797ad793953aa6c419c538b0e4b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import asyncio | |
import datetime | |
import random | |
from typing import Optional | |
from telethon import TelegramClient | |
from telethon.sessions import MemorySession | |
API_ID: int = ... | |
API_HASH: str = ... | |
""" | |
if START_DATE is None, it will be set to datetime.datetime.now() | |
""" | |
START_DATE: Optional[datetime.datetime] = datetime.datetime.now() | |
""" | |
if TEXT is None, script will be use values TEXT_*** | |
if one of them is None, the appropriated schedule wouldn't sent | |
""" | |
TEXT: Optional[str] = "/ga_def" | |
TEXT_NIGHT: Optional[str] = None # 22:00+0, 1:00+3 | |
TEXT_MORNING: Optional[str] = None # 6:00+0, 9:00+3 | |
TEXT_DAY: Optional[str] = None # 14:00+0, 17:00+3 | |
""" | |
count of schedules | |
""" | |
COUNT: int = 100 | |
TARGET_CHAT: int = 265204902 # @ChatWarsBot | |
client = TelegramClient(MemorySession(), API_ID, API_HASH) | |
client.start() | |
async def main(): | |
global START_DATE, TEXT_NIGHT, TEXT_MORNING, TEXT_DAY | |
if START_DATE is None: | |
START_DATE = datetime.datetime.now() | |
if TEXT is not None: | |
TEXT_MORNING = TEXT_DAY = TEXT_NIGHT = TEXT | |
if START_DATE.hour < 6: | |
phi = datetime.datetime.combine(START_DATE.date(), datetime.time(hour=5, minute=50)) | |
e = 0 | |
elif 6 <= START_DATE.hour < 14: | |
phi = datetime.datetime.combine(START_DATE.date(), datetime.time(hour=13, minute=50)) | |
e = 1 | |
elif 14 <= START_DATE.hour < 22: | |
phi = datetime.datetime.combine(START_DATE.date(), datetime.time(hour=21, minute=50)) | |
e = 2 | |
elif 22 <= START_DATE.hour: | |
phi = datetime.datetime.combine((START_DATE + datetime.timedelta(days=1)).date(), | |
datetime.time(hour=5, minute=50)) | |
e = 0 | |
omega = datetime.timedelta(hours=8) | |
try: | |
await client.get_dialogs() | |
for i in range(COUNT): | |
if (i - e) % 3 == 0: | |
text = TEXT_NIGHT | |
elif (i - e) % 3 == 1: | |
text = TEXT_MORNING | |
elif (i - e) % 3 == 2: | |
text = TEXT_DAY | |
if text is not None: | |
rnd = datetime.timedelta(minutes=random.randint(0, 9), seconds=random.randint(0, 59)) | |
await client.send_message(TARGET_CHAT, text, schedule=phi + omega * i + rnd) | |
finally: | |
await client.log_out() | |
await client.disconnect() | |
asyncio.ensure_future(main()) | |
client.run_until_disconnected() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment