Skip to content

Instantly share code, notes, and snippets.

@landgrafhomyak
Last active July 8, 2021 21:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save landgrafhomyak/06268797ad793953aa6c419c538b0e4b to your computer and use it in GitHub Desktop.
Save landgrafhomyak/06268797ad793953aa6c419c538b0e4b to your computer and use it in GitHub Desktop.
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