initial commit
This commit is contained in:
		
							parent
							
								
									1307dbcbee
								
							
						
					
					
						commit
						4302290482
					
				
					 8 changed files with 481 additions and 0 deletions
				
			
		
							
								
								
									
										62
									
								
								pgbot
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										62
									
								
								pgbot
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,62 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
import threading
 | 
			
		||||
 | 
			
		||||
import telethon
 | 
			
		||||
import yaml
 | 
			
		||||
 | 
			
		||||
import pgbotlib.dbstuff
 | 
			
		||||
import pgbotlib.commands
 | 
			
		||||
import pgbotlib.misc
 | 
			
		||||
import pgbotlib.response
 | 
			
		||||
import pgbotlib.sched
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def init(args: list) -> tuple:
 | 
			
		||||
    conf_path = args[0] if args else 'config.yml'
 | 
			
		||||
    try:
 | 
			
		||||
        with open(conf_path, 'r', encoding='utf-8') as data:
 | 
			
		||||
            config = yaml.safe_load(data.read())
 | 
			
		||||
    except FileNotFoundError as err:
 | 
			
		||||
        sys.exit(err)
 | 
			
		||||
 | 
			
		||||
    client = telethon.TelegramClient(
 | 
			
		||||
            'bot_session', config['api_id'],
 | 
			
		||||
            config['api_hash']).start(bot_token=config['bot_token'])
 | 
			
		||||
 | 
			
		||||
    # db_conn = pgbotlib.dbstuff.DBConn(
 | 
			
		||||
    #         f'dbname={config['db_name']} user={config['db_user']}')
 | 
			
		||||
    db_conn = pgbotlib.dbstuff.DBConn(config['db_spec'])
 | 
			
		||||
 | 
			
		||||
    return config, db_conn, client
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    config, db_conn, client = init(sys.argv[1:])
 | 
			
		||||
 | 
			
		||||
    responder = pgbotlib.response.Responder(config, client, db_conn)
 | 
			
		||||
    commander = pgbotlib.commands.Commander(config, client, config['admins'],
 | 
			
		||||
                                            db_conn, responder)
 | 
			
		||||
 | 
			
		||||
    sched_thread = threading.Thread(
 | 
			
		||||
            target=pgbotlib.sched.spawn_scheduler,
 | 
			
		||||
            args=(config, client, responder),
 | 
			
		||||
            daemon=True)
 | 
			
		||||
    sched_thread.start()
 | 
			
		||||
 | 
			
		||||
    @client.on(telethon.events.NewMessage())
 | 
			
		||||
    async def handle_new_message(event):
 | 
			
		||||
        chat = await event.get_chat()
 | 
			
		||||
        result = await client.get_messages(chat.id, ids=[event.message.reply_to.reply_to_msg_id])
 | 
			
		||||
        print(result)
 | 
			
		||||
        if event.message.text.startswith('/'):
 | 
			
		||||
            await commander.action(event)
 | 
			
		||||
        else:
 | 
			
		||||
            await responder.respond(event)
 | 
			
		||||
 | 
			
		||||
    client.run_until_disconnected()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue