mirror of https://github.com/skygpu/skynet.git
				
				
				
			get db, config, help, cool, and txt2img working
							parent
							
								
									1d7633d340
								
							
						
					
					
						commit
						609c741ae9
					
				| 
						 | 
				
			
			@ -485,7 +485,7 @@ def discord(
 | 
			
		|||
            permission,
 | 
			
		||||
            node_url,
 | 
			
		||||
            hyperion_url,
 | 
			
		||||
            # db_host, db_user, db_pass,
 | 
			
		||||
            db_host, db_user, db_pass,
 | 
			
		||||
            remote_ipfs_node=ipfs_url,
 | 
			
		||||
            key=key
 | 
			
		||||
        )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,9 +40,9 @@ class SkynetDiscordFrontend:
 | 
			
		|||
        permission: str,
 | 
			
		||||
        node_url: str,
 | 
			
		||||
        hyperion_url: str,
 | 
			
		||||
        # db_host: str,
 | 
			
		||||
        # db_user: str,
 | 
			
		||||
        # db_pass: str,
 | 
			
		||||
        db_host: str,
 | 
			
		||||
        db_user: str,
 | 
			
		||||
        db_pass: str,
 | 
			
		||||
        remote_ipfs_node: str,
 | 
			
		||||
        key: str
 | 
			
		||||
    ):
 | 
			
		||||
| 
						 | 
				
			
			@ -51,9 +51,9 @@ class SkynetDiscordFrontend:
 | 
			
		|||
        self.permission = permission
 | 
			
		||||
        self.node_url = node_url
 | 
			
		||||
        self.hyperion_url = hyperion_url
 | 
			
		||||
        # self.db_host = db_host
 | 
			
		||||
        # self.db_user = db_user
 | 
			
		||||
        # self.db_pass = db_pass
 | 
			
		||||
        self.db_host = db_host
 | 
			
		||||
        self.db_user = db_user
 | 
			
		||||
        self.db_pass = db_pass
 | 
			
		||||
        self.remote_ipfs_node = remote_ipfs_node
 | 
			
		||||
        self.key = key
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -72,9 +72,9 @@ class SkynetDiscordFrontend:
 | 
			
		|||
        logging.info(
 | 
			
		||||
            f'connected to remote ipfs node: {self.remote_ipfs_node}')
 | 
			
		||||
 | 
			
		||||
        # self.db_call = await self._async_exit_stack.enter_async_context(
 | 
			
		||||
        #     open_database_connection(
 | 
			
		||||
        #         self.db_user, self.db_pass, self.db_host))
 | 
			
		||||
        self.db_call = await self._async_exit_stack.enter_async_context(
 | 
			
		||||
            open_database_connection(
 | 
			
		||||
                self.db_user, self.db_pass, self.db_host))
 | 
			
		||||
 | 
			
		||||
        create_handler_context(self)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -143,10 +143,10 @@ class SkynetDiscordFrontend:
 | 
			
		|||
        #     f'[{timestamp_pretty()}] <i>broadcasting transaction to chain...</i>',
 | 
			
		||||
        #     parse_mode='HTML'
 | 
			
		||||
        # )
 | 
			
		||||
        message = await ctx.send(
 | 
			
		||||
            f'processing a \'{method}\' request by {user}\n \
 | 
			
		||||
            [{timestamp_pretty()}] *broadcasting transaction to chain...*'
 | 
			
		||||
        )
 | 
			
		||||
        # message = await ctx.send(
 | 
			
		||||
        #     f'processing a \'{method}\' request by {user}\n \
 | 
			
		||||
        #     [{timestamp_pretty()}] *broadcasting transaction to chain...*'
 | 
			
		||||
        # )
 | 
			
		||||
 | 
			
		||||
        reward = '20.0000 GPU'
 | 
			
		||||
        res = await self.cleos.a_push_action(
 | 
			
		||||
| 
						 | 
				
			
			@ -183,12 +183,11 @@ class SkynetDiscordFrontend:
 | 
			
		|||
        #     f'[{timestamp_pretty()}] <i>workers are processing request...</i>',
 | 
			
		||||
        #     parse_mode='HTML'
 | 
			
		||||
        # )
 | 
			
		||||
 | 
			
		||||
        await message.edit(
 | 
			
		||||
            f'**broadcasted!**\n \
 | 
			
		||||
            **{enqueue_tx_link}**\n \
 | 
			
		||||
            [{timestamp_pretty()}] *workers are processing request...*'
 | 
			
		||||
        )
 | 
			
		||||
        # await message.edit(content=
 | 
			
		||||
        #     f'**broadcasted!**\n \
 | 
			
		||||
        #     **{enqueue_tx_link}**\n \
 | 
			
		||||
        #     [{timestamp_pretty()}] *workers are processing request...*'
 | 
			
		||||
        # )
 | 
			
		||||
 | 
			
		||||
        out = collect_stdout(res)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -250,11 +249,11 @@ class SkynetDiscordFrontend:
 | 
			
		|||
        #     f'[{timestamp_pretty()}] <i>trying to download image...</i>\n',
 | 
			
		||||
        #     parse_mode='HTML'
 | 
			
		||||
        # )
 | 
			
		||||
        await message.edit(
 | 
			
		||||
            f'**request processed!**\n \
 | 
			
		||||
            **{tx_link}**\n \
 | 
			
		||||
            [{timestamp_pretty()}] *trying to download image...*\n'
 | 
			
		||||
        )
 | 
			
		||||
        # await message.edit(content=
 | 
			
		||||
        #     f'**request processed!**\n \
 | 
			
		||||
        #     **{tx_link}**\n \
 | 
			
		||||
        #     [{timestamp_pretty()}] *trying to download image...*\n'
 | 
			
		||||
        # )
 | 
			
		||||
 | 
			
		||||
        # attempt to get the image and send it
 | 
			
		||||
        ipfs_link = f'https://ipfs.{DEFAULT_DOMAIN}/ipfs/{ipfs_hash}/image.png'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,46 +17,112 @@ def create_handler_context(frontend: 'SkynetDiscordFrontend'):
 | 
			
		|||
 | 
			
		||||
    bot = frontend.bot
 | 
			
		||||
    cleos = frontend.cleos
 | 
			
		||||
    # db_call = frontend.db_call
 | 
			
		||||
    db_call = frontend.db_call
 | 
			
		||||
    work_request = frontend.work_request
 | 
			
		||||
 | 
			
		||||
    ipfs_node = frontend.ipfs_node
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @bot.command(name='config', help='Responds with the configuration')
 | 
			
		||||
    async def config(ctx):
 | 
			
		||||
        response = "This is the bot configuration"  # Put your bot configuration here
 | 
			
		||||
        await ctx.send(response)
 | 
			
		||||
    async def set_config(ctx):
 | 
			
		||||
 | 
			
		||||
        user = ctx.author
 | 
			
		||||
        try:
 | 
			
		||||
            attr, val, reply_txt = validate_user_config_request(
 | 
			
		||||
                ctx.message.content)
 | 
			
		||||
 | 
			
		||||
            logging.info(f'user config update: {attr} to {val}')
 | 
			
		||||
            await db_call('update_user_config', user.id, attr, val)
 | 
			
		||||
            logging.info('done')
 | 
			
		||||
 | 
			
		||||
        except BaseException as e:
 | 
			
		||||
            reply_txt = str(e)
 | 
			
		||||
 | 
			
		||||
        finally:
 | 
			
		||||
            await ctx.reply(content=reply_txt)
 | 
			
		||||
 | 
			
		||||
    @bot.command(name='helper', help='Responds with a help')
 | 
			
		||||
    async def helper(ctx):
 | 
			
		||||
        response = "This is help information" # Put your help response here
 | 
			
		||||
        await ctx.send(response)
 | 
			
		||||
        splt_msg = ctx.message.content.split(' ')
 | 
			
		||||
 | 
			
		||||
        if len(splt_msg) == 1:
 | 
			
		||||
            await ctx.reply(content=HELP_TEXT)
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            param = splt_msg[1]
 | 
			
		||||
            if param in HELP_TOPICS:
 | 
			
		||||
                await ctx.reply(content=HELP_TOPICS[param])
 | 
			
		||||
 | 
			
		||||
            else:
 | 
			
		||||
                await ctx.reply(content=HELP_UNKWNOWN_PARAM)
 | 
			
		||||
 | 
			
		||||
    @bot.command(name='cool', help='Display a list of cool prompt words')
 | 
			
		||||
    async def send_cool_words(ctx):
 | 
			
		||||
        await ctx.reply(content='\n'.join(COOL_WORDS))
 | 
			
		||||
 | 
			
		||||
    @bot.command(name='txt2img', help='Responds with an image')
 | 
			
		||||
    async def send_txt2img(ctx, *, arg):
 | 
			
		||||
        user = 'testworker3'
 | 
			
		||||
        status_msg = 'status'
 | 
			
		||||
    async def send_txt2img(ctx):
 | 
			
		||||
 | 
			
		||||
        # grab user from ctx
 | 
			
		||||
        user = ctx.author
 | 
			
		||||
        user_row = await db_call('get_or_create_user', user.id)
 | 
			
		||||
 | 
			
		||||
        # init new msg
 | 
			
		||||
        init_msg = 'started processing txt2img request...'
 | 
			
		||||
        status_msg = await ctx.reply(init_msg)
 | 
			
		||||
        await db_call(
 | 
			
		||||
            'new_user_request', user.id, ctx.message.id, status_msg.id, status=init_msg)
 | 
			
		||||
 | 
			
		||||
        prompt = ' '.join(ctx.message.content.split(' ')[1:])
 | 
			
		||||
 | 
			
		||||
        if len(prompt) == 0:
 | 
			
		||||
            await status_msg.edit(content=
 | 
			
		||||
                'Empty text prompt ignored.'
 | 
			
		||||
            )
 | 
			
		||||
            await db_call('update_user_request', status_msg.id, 'Empty text prompt ignored.')
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        logging.info(f'mid: {ctx.message.id}')
 | 
			
		||||
 | 
			
		||||
        user_config = {**user_row}
 | 
			
		||||
        del user_config['id']
 | 
			
		||||
 | 
			
		||||
        params = {
 | 
			
		||||
            'prompt': arg,
 | 
			
		||||
            'seed': None,
 | 
			
		||||
            'step': 35,
 | 
			
		||||
            'guidance': 7.5,
 | 
			
		||||
            'strength': 0.5,
 | 
			
		||||
            'width': 512,
 | 
			
		||||
            'height': 512,
 | 
			
		||||
            'upscaler': None,
 | 
			
		||||
            'model': 'prompthero/openjourney',
 | 
			
		||||
            'prompt': prompt,
 | 
			
		||||
            **user_config
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ec = await work_request(user, status_msg, 'txt2img', params, ctx)
 | 
			
		||||
        print(ec)
 | 
			
		||||
        await db_call(
 | 
			
		||||
            'update_user_stats', user.id, 'txt2img', last_prompt=prompt)
 | 
			
		||||
 | 
			
		||||
        ec = await work_request(user.name, status_msg, 'txt2img', params, ctx)
 | 
			
		||||
 | 
			
		||||
        if ec == 0:
 | 
			
		||||
            await db_call('increment_generated', user.id)
 | 
			
		||||
 | 
			
		||||
        # TODO: DELETE BELOW
 | 
			
		||||
        # user = 'testworker3'
 | 
			
		||||
        # status_msg = 'status'
 | 
			
		||||
        # params = {
 | 
			
		||||
        #     'prompt': arg,
 | 
			
		||||
        #     'seed': None,
 | 
			
		||||
        #     'step': 35,
 | 
			
		||||
        #     'guidance': 7.5,
 | 
			
		||||
        #     'strength': 0.5,
 | 
			
		||||
        #     'width': 512,
 | 
			
		||||
        #     'height': 512,
 | 
			
		||||
        #     'upscaler': None,
 | 
			
		||||
        #     'model': 'prompthero/openjourney',
 | 
			
		||||
        # }
 | 
			
		||||
        #
 | 
			
		||||
        # ec = await work_request(user, status_msg, 'txt2img', params, ctx)
 | 
			
		||||
        # print(ec)
 | 
			
		||||
 | 
			
		||||
        # if ec == 0:
 | 
			
		||||
            # await db_call('increment_generated', user.id)
 | 
			
		||||
 | 
			
		||||
        response = f"This is your prompt: {arg}"
 | 
			
		||||
        await ctx.send(response)
 | 
			
		||||
        # response = f"This is your prompt: {arg}"
 | 
			
		||||
        # await ctx.send(response)
 | 
			
		||||
 | 
			
		||||
    # generic / simple handlers
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue