Ibitial commit
This commit is contained in:
		
						commit
						0f1a3bc404
					
				| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					config.yaml
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					MIT License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2021 blank X
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
					in the Software without restriction, including without limitation the rights
 | 
				
			||||||
 | 
					to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
				
			||||||
 | 
					copies of the Software, and to permit persons to whom the Software is
 | 
				
			||||||
 | 
					furnished to do so, subject to the following conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The above copyright notice and this permission notice shall be included in all
 | 
				
			||||||
 | 
					copies or substantial portions of the Software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
				
			||||||
 | 
					IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
				
			||||||
 | 
					FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
				
			||||||
 | 
					LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
				
			||||||
 | 
					OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
				
			||||||
 | 
					SOFTWARE.
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					telegram:
 | 
				
			||||||
 | 
					    api_id: https://my.telegram.org
 | 
				
			||||||
 | 
					    api_hash: https://my.telegram.org
 | 
				
			||||||
 | 
					    bot_token: https://t.me/BotFather
 | 
				
			||||||
 | 
					config:
 | 
				
			||||||
 | 
					    lock_chat_id: -1001289824958
 | 
				
			||||||
 | 
					    lock_wait_delay: 10
 | 
				
			||||||
 | 
					    command_when_unlocked: sh /run.sh
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					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())
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					telethon
 | 
				
			||||||
 | 
					pyyaml
 | 
				
			||||||
		Loading…
	
		Reference in New Issue