Skip to content

Instantly share code, notes, and snippets.

@romainneutron romainneutron/run.php forked from lyrixx/run.php
Last active Mar 14, 2018

What would you like to do?
Slack delete all your files (rewrite of
- "kriswallsmith/buzz: ^0.15.0"
- "symfony/console: ^3.2@dev"
// Find you token on
use Buzz\Message\Response;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ConfirmationQuestion;
(new Application())
->addArgument('token', InputArgument::REQUIRED)
->setCode(function(InputInterface $input, OutputInterface $output) {
$token = $input->getArgument('token');
$validateResponse = function( $response) {
$responseDecoded = json_decode($response->getContent(), true);
if (!$responseDecoded) {
throw new \Exception('Something goes wrong. Unable to decode the response.');
if (!$responseDecoded['ok']) {
throw new \Exception('Something goes wrong. Error: '.$responseDecoded['error']);
return $responseDecoded;
$client = new Buzz\Browser();
// get "all" files
$response = $client->get(''.http_build_query([
'token' => $token,
'count' => 1000,
'ts_to' => (new \DateTime('-5 months'))->format('U'),
$responseDecoded = $validateResponse($response);
$total = $responseDecoded['paging']['total'];
// Validate
$q = new ConfirmationQuestion(sprintf('You are going to delete %d files, are you sure? [Y/n]', $total));
if (!$this->getHelper('question')->ask($input, $output, $q)) {
$output->writeln('Abort the mission');
// delete
$bar = new ProgressBar($output, $total);
foreach ($responseDecoded['files'] as $file) {
$response = $client->get(''.http_build_query([
'token' => $token,
'file' => $file['id'],
->setDefaultCommand('delete-files', true)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.