msnbot PHP probleem

Status
Niet open voor verdere reacties.

kaakmans

Gebruiker
Lid geworden
29 nov 2006
Berichten
164
Iedereen kent chatman wel, of alice. Dat zijn MSN botjes. Deze geven automatisch antwoord op bepaalde woorden of zinnen. Nu heb ik een PHP file gemaakt die ervoor zorgt dat er automatisch antwoorden komen. zie hieronder.

PHP:
<? 
    class Resp { 
        var $xmlData; 
         
        function send() { 
            $this->xmlData .= '</Response>'; 
            header('Content-Type: text/xml'); 
            echo $this->xmlData; 
        } 
         
        function init() { 
            $this->xmlData = '<?xml version="1.0"?>'; 
            $this->xmlData .= '<Response>'; 
        } 
         
        function addMsg($msg, $newnick = '') { 
            $this->xmlData .= '<Message'.($newnick != '' ? ' nick="'.htmlentities($newnick, ENT_QUOTES).'"' : '').'>'; 
            $this->xmlData .= htmlentities($msg, ENT_QUOTES); 
            $this->xmlData .= '</Message>'; 
        } 
         
        function buzzer() { 
            $this->xmlData .= '<Buzzer />'; 
        } 
         
        function newNick($nick) { 
            $this->xmlData .= '<Nick>'.htmlentities($nick, ENT_QUOTES).'</Nick>'; 
        } 

        function newPSM($psm) { 
            $this->xmlData .= '<PSM>'.htmlentities($psm, ENT_QUOTES).'</PSM>'; 
        } 
         
        function leave() { 
            $this->xmlData .= '<Leave />'; 
        } 
    } 
     

    $woorden = array( // Voeg alle woorden hieronder toe 
        'hoi' => 'Hoi',
        'hoest' => 'Gezondheid', 
        'haha' => 'ey, waarom lach je?!',
        'ben je er' => 'JA! wat mot je dan?!',
        'alles goed' => 'zijn gangetje, met jou ook alles goed?!',
        'ja' => 'Good for you!',
        'nee' => 'dan niet!',
        'hey' => 'heya!',
        'sukkel' => 'je bent zelf een sukkel',
        'hallo' => 'ghalleu!',
        'haai' => 'heuj!',
        'hai' => 'heuj!',
        'wattan' => 'niks:P',
        'wat dan' => 'niks:P',
        'wattan?' => 'niks:P',
        'wat dan?' => 'niks:P',
        'TV' => 'nee ik kijk geen tv, ik zit achter de pc',
        'heeeeey' => 'heyy',
        'hey botje' => 'Hey mensch',
        'hahaha' => 'wat is er zo grappig?!',
        'heeeey' => 'heyaa!', 
        'hoe oud ben je' => 'ik ben 20 jaar oud dat weet je best!',
        'newwindow_msg' => 'Wat mot je?!'); 
    $anders = 'ik begrijp er geen tyfus van'; // Dit wordt gezegd als de bot het niet snapt 
     
    // Het script, hier neits veranderen 
    $resp = new Resp(); 
    $resp->init(); 
    $msg = str_replace(array(':', ')', '(', ';', '\'', '"', '?', '!'), '', strip_tags(strtolower(base64_decode($_POST['msg'])))); 
    if(isset($woorden[$msg])) { 
        $resp->addMsg($woorden[$msg]); 
    } else $resp->addMsg($anders); 
    $resp->send(); 
?>


Nu is mijn vraag, ik wil dat mijn msn bot antwoord geeft wanneer hij een woord ziet in welke zin of format dan ook.

Bijvoorbeeld. Als iemand nu sukkel zegt, zegt hij terug "je bent zelf een sukkel". Maar als iemand je bent een sukkel zegt. Dan begrijpt hij dit niet.
Ik wil dus dat hij een reactie geeft wanneer iemand sukkel zegt, ongeacht wat er omheen nog aan woorden staat. Hoe kan ik dat doen?

Alvast bedankt.
 
Je kunt over de lijst met mogelijk antwoorden heenlopen en kijken of de key in de tekst zit:

PHP:
foreach ( $woorden as $trigger => $response ) {
  if ( strpos( $msg, $trigger ) !== false ) ) {
    // het woord zit in de gesproken zin.
     $resp->addMsg($woorden[ $trigger ]); 
  }
}
 
Je kunt over de lijst met mogelijk antwoorden heenlopen en kijken of de key in de tekst zit:

PHP:
foreach ( $woorden as $trigger => $response ) {
  if ( strpos( $msg, $trigger ) !== false ) ) {
    // het woord zit in de gesproken zin.
     $resp->addMsg($woorden[ $trigger ]); 
  }
}

Ik ben echt een leek hiermee... kun je me iets verder helpen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan