You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
1.2 KiB

import asyncio
import logging
import yaml
from telethon import TelegramClient, events
logging.basicConfig(level=logging.INFO)
with open('config.yaml') as file:
config = yaml.safe_load(file.read())
api_id = config['telegram']['api_id']
api_hash = config['telegram']['api_hash']
bot_token = config['telegram'].get('bot_token')
lock_chat_id = config['config']['lock_chat_id']
lock_wait_delay = config['config']['lock_wait_delay']
command_when_unlocked = config['config']['command_when_unlocked']
client = TelegramClient(None, api_id, api_hash)
@client.on(events.NewMessage(lock_chat_id, outgoing=True, pattern='^herokulock check$'))
async def herokulock_check(e):
await e.reply('herokulock online')
@client.on(events.NewMessage(lock_chat_id, outgoing=True, pattern='^herokulock online$'))
async def herokulock_online(e):
logging.error('A herokulock instance is running, exiting')
exit(1)
async def main():
await client.start(bot_token=bot_token)
await client.send_message(lock_chat_id, 'herokulock check')
await asyncio.sleep(lock_wait_delay)
proc = await asyncio.create_subprocess_shell(command_when_unlocked)
await proc.communicate()
exit(proc.returncode)
client.loop.run_until_complete(main())