Home > Enterprise >  Refactoring multiple if or switch
Refactoring multiple if or switch

Time:12-14

I'm developing a discord bot and I have multiple if statment, that depend of the type of command that user puts in the discord chat.

if($content == '!saludo'){
            $message->reply('@everyone Hola aguante php');
        }

        if($content == '!search')
        {

        }
        if($content == '!information'){
            $message->reply('Mi inteligencia artificial es peor que un bucle cimoliano y un cuadruple for del facha, por favor no me pdias mucho.');
        }
        if($content == '!bot'){
            $message->reply(
                'Fui creado el 12/12/2021 por Turquito, me considero un bot totalmente turco, mi version de php es 7.4 y utilizo web-sockets para comunicarme!');
        }

how can I refactor this? Every time you want to add a new command, you should add an if

CodePudding user response:

You could use an array that maps to the different responses:

<?php
$arr = [
  '!saludo' =>  '@everyone Hola aguante php',
  '!search' =>  '...',
  '!information' =>  'Mi inteligencia artificial es peor que un bucle cimoliano y un cuadruple for del facha, por favor no me pdias mucho.',
  '!bot' =>  'Fui creado el 12/12/2021 por Turquito, me considero un bot totalmente turco, mi version de php es 7.4 y utilizo web-sockets para comunicarme!',
];
$content = '!bot';
$message->reply($arr[$content]);

CodePudding user response:

I suggest this:

<?php
        $ms = "";

        switch($content) {
            case '!saludo':
                $ms = '@everyone Hola aguante php';
                break;
            case '!search':
                $ms = 'Cat gamer';
                break;
            case '!information':
                $ms = 'Mi inteligencia artificial es...';
                break;
            case '!bot':
                $ms = 'Fui creado el 12/12/2021 por Turquito...';
                break;
            default:
                $ms = 'Dog gamer';
                break;
        }

        $message->reply($ms);
?>
  •  Tags:  
  • php
  • Related