Jacek Kowalski
2012-06-30 64d3114c3eeb933152732e024b81b2a94c8db87f
commit | author | age
8bd4d9 1 <?php
64d311 2 require_once(dirname(__FILE__).'/msapi.php');
JK 3
8bd4d9 4 class bot_lang_module implements BotModule {
JK 5     function handle($msg, $params) {
6         $args = trim($msg->args);
7         
8         if(empty($args)) {
9             return BotMsg('Podaj tekst do przetłumaczenia!');
10         }
11         
12         $url = 'http://translate.google.com/translate_a/t?client=t&text='.urlencode($args).'&sl='.$params[0].'&tl='.$params[1].'&hl=pl&ie=utf-8&oe=utf-8';
13         $data = @file_get_contents($url, 0, stream_context_create(array(
14             'http' => array(
15                 'method' => 'GET',
16             ),
17         )));
18         
19         if(!$data) {
20             return new BotMsg('Błąd podczas pobierania danych ze słownika. Przepraszamy.');
21         }
22         
23         $data = jsarray::parse($data);
24         
25         if(!$data OR count($data)==0 OR count($data[1])==0) {
64d311 26             $api = new msapi('https://api.datamarket.azure.com/Bing/MicrosoftTranslator/');
JK 27             $data = $api->execute(array(
28                 'From' => $params[0],
29                 'To' => $params[1],
30                 'Text' => $args,
31                 '$skip' => 0,
32                 '$top' => 1
33             ));
8bd4d9 34             
64d311 35             if(!$data || !isset($data['d']['results'][0]['Text'])) {
JK 36                 return new BotMsg('Błąd podczas pobierania danych z tłumacza. Przepraszamy.');
8bd4d9 37             }
JK 38             
64d311 39             $data = $data['d']['results'][0]['Text'];
JK 40             
41             return new BotMsg('<u>Tłumaczenie (by Microsoft Translator):</u><br />'."\n".htmlspecialchars($data));
8bd4d9 42         }
JK 43         else
44         {
45             $html = '<u>Słownik (by Google):</u>';
46             foreach($data[1] as $przyp) {
47                 $html .= '<br />'."\n".'<b>'.htmlspecialchars($przyp[0]).'</b>';
48                 foreach($przyp[1] as $term) {
49                     $html .= '<br />'."\n".'- '.htmlspecialchars($term);
50                 }
51             }
52             
53             return new BotMsg($html);
54         }
55     }
56     
57     function typo($msg, $params) {
58         return new BotMsg('Wybrana komenda nie istnieje. Prawdopodobnie chodziło ci o jedną z komend językowych, których nazwy zapisywane są <b>bez</b> spacji pomiędzy spacji pomiędzy kodami języków (angpol, a nie: ang pol).<br /><br />'."\n\n"
59         
60         . '<u>Spróbuj:</u><br />'."\n"
61         . $msg->command.ltrim($msg->args));
62     }
63 }
64 ?>