Merge stdout and stderr for shell
This commit is contained in:
		
							parent
							
								
									934f4f924e
								
							
						
					
					
						commit
						feff9c4d8f
					
				| 
						 | 
				
			
			@ -16,21 +16,17 @@ async def shell(client, message):
 | 
			
		|||
    command = match.group(1)
 | 
			
		||||
    stdin = match.group(2)
 | 
			
		||||
    reply = await message.reply_text('Executing...')
 | 
			
		||||
    process = await asyncio.create_subprocess_shell(command, stdin=asyncio.subprocess.PIPE if stdin else None, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE)
 | 
			
		||||
    stdout, stderr = await process.communicate(stdin.encode() if stdin else None)
 | 
			
		||||
    process = await asyncio.create_subprocess_shell(command, stdin=asyncio.subprocess.PIPE if stdin else None, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.STDOUT)
 | 
			
		||||
    stdout, _ = await process.communicate(stdin.encode() if stdin else None)
 | 
			
		||||
    returncode = process.returncode
 | 
			
		||||
    text = f'<b>Exit Code:</b> <code>{returncode}</code>\n'
 | 
			
		||||
    stdout = stdout.decode().replace('\r', '').strip('\n').rstrip()
 | 
			
		||||
    stderr = stderr.decode().replace('\r', '').strip('\n').rstrip()
 | 
			
		||||
    if stderr:
 | 
			
		||||
        text += f'<code>{html.escape(stderr)}</code>\n'
 | 
			
		||||
    if stdout:
 | 
			
		||||
        text += f'<code>{html.escape(stdout)}</code>'
 | 
			
		||||
 | 
			
		||||
    # send as a file if it's longer than 4096 bytes
 | 
			
		||||
    if len(text) > 4096:
 | 
			
		||||
        out = stderr.strip() + "\n" + stdout.strip()
 | 
			
		||||
        f = BytesIO(out.strip().encode('utf-8'))
 | 
			
		||||
        f = BytesIO(stdout.encode('utf-8'))
 | 
			
		||||
        f.name = "output.txt"
 | 
			
		||||
        await reply.delete()
 | 
			
		||||
        await message.reply_document(f, caption=f'<b>Exit Code:</b> <code>{returncode}</code>')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue