1. Przeportowanie modułu data do nowej wersji API.
2. Dodanie metody setClass() do klasy BotSession.
3. Aktualizacja "Instrukcji tworzenia modułów" o w/w metodę.
2 files modified
1 files deleted
2 files added
| | |
| | | |
| | | <p>Odpowiednik klasy database z poprzedniej wersji bota. Aktualnie instancja klasy BotSession, umożliająca przechowywanie danych przypisanych do użytkownika, m.in. miasta, nazwy kina i tym podobnych.</p> |
| | | |
| | | <p class="warning">Przed użyciem sesji należy ustawić nazwę klasy, dla której zmienne będą przetwarzane. Jest to odpowiednik drugiego argumentu przekazywanego do metody database::get() z pierwszych wersji bota.</p> |
| | | |
| | | <p>Przykład użycia:</p> |
| | | |
| | | <pre> |
| | | <code><i>// Ustawienie pojedynczej wartości</i> |
| | | <code> |
| | | <i>// Ustawienie nazwy modułu. WYMAGANE!</i> |
| | | <var>$msg<b>-></b>session<b>-></b>setClass</var><b>(<cite>'przyklad'</cite>);</b> |
| | | |
| | | <i>// Ustawienie pojedynczej wartości</i> |
| | | <var>$msg<b>-></b>session<b>-></b>zmienna</var> <b>= <cite>'To jest test'</cite>;</b> |
| | | <a href="http://php.net/assert"><b>assert</b></a><b>(</b><var>$msg<b>-></b>session<b>-></b>zmienna</var> <b>=== <cite>'To jest test'</cite>);</b> |
| | | |
| | |
| | | |
| | | /** |
| | | * Nazwa modułu, którego zmienne klasa przetwarza |
| | | * @var string max. 40 znaków |
| | | * @var string max. 40 znaków |
| | | */ |
| | | var $class; |
| | | |
| | |
| | | } |
| | | |
| | | private function init() { |
| | | if(strlen($this->class) == 0) { |
| | | throw new Exception('Przed użyciem $msg->session należy ustawić nazwę modułu za pomocą metody setClass - patrz "Poradnik tworzenia modułów", dział "Klasa BotMessage", rozdział "Pole $session".'); |
| | | } |
| | | |
| | | if($this->PDO) { |
| | | return NULL; |
| | | } |
| | |
| | | return $return; |
| | | } |
| | | |
| | | function setClass($class) { |
| | | $this->class = $class; |
| | | } |
| | | |
| | | function truncate() { |
| | | $this->init(); |
| | | |
New file |
| | |
| | | <?php |
| | | class bot_data_module implements BotModule { |
| | | static $dni = array( |
| | | 'niedziela', |
| | | 'poniedzia³ek', |
| | | 'wtorek', |
| | | '¶roda', |
| | | 'czwartek', |
| | | 'pi±tek', |
| | | 'sobota', |
| | | ); |
| | | static $miesiace = array( |
| | | 1 => 'stycznia', |
| | | 'lutego', |
| | | 'marca', |
| | | 'kwietnia', |
| | | 'maja', |
| | | 'czerwca', |
| | | 'lipca', |
| | | 'sierpnia', |
| | | 'wrze¶nia', |
| | | 'pa¼dziernika', |
| | | 'listopada', |
| | | 'grudnia', |
| | | ); |
| | | |
| | | function data($msg, $params) { |
| | | $arg = funcs::utfToAscii($msg->args); |
| | | |
| | | if(empty($arg)) { |
| | | $data = time(); |
| | | } |
| | | else |
| | | { |
| | | $data = calendar::parse_date($arg); |
| | | if(!$data) { |
| | | return new BotMsg('Podana data nie zosta³a rozpoznana<br />'."\n" |
| | | . '<br />'."\n" |
| | | . '<u>Przyk³ady:</u><br />'."\n" |
| | | . 'data<br />'."\n" |
| | | . 'data pojutrze<br />'."\n" |
| | | . 'data 1.01.2009'); |
| | | } |
| | | } |
| | | |
| | | if(date('d.m.Y') == date('d.m.Y', $data)) { |
| | | $txt = 'Dzi¶ jest '; |
| | | } |
| | | else |
| | | { |
| | | $txt = 'Wybrany dzieñ to '; |
| | | } |
| | | |
| | | include('./data/data/data.php'); |
| | | |
| | | $txt .= self::$dni[date('w', $data)].', '.date('j', $data).' '.self::$miesiace[date('n', $data)].' '.date('Y').' r., '.(date('z', $data)+1).' dzieñ roku.<br />'."\n" |
| | | . '<br />'."\n"; |
| | | |
| | | $msg->session->setClass('pogoda'); |
| | | if(!isset($msg->session->geo)) { |
| | | $geo = array('lon' => '52.25', 'lat' => '21.0'); |
| | | } |
| | | else |
| | | { |
| | | $geo = $msg->session->geo; |
| | | } |
| | | |
| | | $txt .= 'Imieniny: '.$imieniny[date('n', $data)][date('j', $data)].'<br />'."\n" |
| | | . 'Wschód S³oñca: '.date_sunrise($data, SUNFUNCS_RET_STRING, $geo['lat'], $geo['lon'], 90.58, 1+date('I')).'<br />'."\n" |
| | | . 'Zachód S³oñca: '.date_sunset($data, SUNFUNCS_RET_STRING, $geo['lat'], $geo['lon'], 90.58, 1+date('I')); |
| | | |
| | | return new BotMsg($txt); |
| | | } |
| | | |
| | | function imieniny($msg, $params) { |
| | | $arg = funcs::utfToAscii($arg); |
| | | |
| | | if(empty($arg)) { |
| | | return new BotMsg('Nie podano imienia!<br />'."\n" |
| | | . '<br />'."\n" |
| | | . '<u>Przyk³ady:</u><br />'."\n" |
| | | . 'imieniny Adama<br />'."\n" |
| | | . 'imieniny Ewy'); |
| | | } |
| | | |
| | | include('./data/data/imieniny.php'); |
| | | |
| | | if(!isset($imiona[$arg])) { |
| | | return new BotMsg('Nie znaleziono imienia w bazie. Pamiêtaj, by podaæ imiê w dope³niaczu liczby pojedynczej!<br />'."\n" |
| | | . '<br />'."\n" |
| | | . '<u>Przyk³ady:</u><br />'."\n" |
| | | . 'imieniny Adama<br />'."\n" |
| | | . 'imieniny Ewy'); |
| | | } |
| | | |
| | | foreach($imiona[$arg] as $dzien) { |
| | | $dzien = explode('.', $dzien); |
| | | |
| | | $txt[] = $dzien[0].' '.self::$miesiace[$dzien[1]]; |
| | | } |
| | | |
| | | return new BotMsg('Imieniny '.ucfirst($arg).' s± '.implode(', ', $txt)); |
| | | } |
| | | } |
| | | ?> |
New file |
| | |
| | | <?php |
| | | class bot_data_init implements BotModuleInit { |
| | | function register() { |
| | | $handler_data = array( |
| | | array( |
| | | 'file' => 'handler.php', |
| | | 'class' => 'bot_data_module', |
| | | 'method' => 'data', |
| | | ) |
| | | ); |
| | | $handler_imieniny = array( |
| | | array( |
| | | 'file' => 'handler.php', |
| | | 'class' => 'bot_data_module', |
| | | 'method' => 'imieniny', |
| | | ) |
| | | ); |
| | | |
| | | return array( |
| | | 'data' => $handler_data, |
| | | 'dzien' => $handler_data, |
| | | 'd' => $handler_data, |
| | | 'imieniny' => $handler_imieniny, |
| | | 'im' => $handler_imieniny, |
| | | 'i' => $handler_imieniny, |
| | | ); |
| | | } |
| | | |
| | | function help($params = NULL) { |
| | | if($params === NULL) { |
| | | return new BotMsg('<b>data</b> <i>[dzień]</i><br />'."\n" |
| | | . ' Informacje o danym dniu.<br />'."\n" |
| | | . '<b>imieniny</b> <i>imię</i><br />'."\n" |
| | | . ' Kiedy <i>imię</i> obchodzi imieniny.'); |
| | | } |
| | | elseif(substr($params, 0, 1) == 'd') { |
| | | return new BotMsg('<b>data</b> <i>[dzień]</i> (aliasy: <b>d, dzień</b>)<br />'."\n" |
| | | . ' Zwraca informacje (wschód/zachód słońca, imieniny) o dniu podanym w argumencie <i>[dzień]</i> lub o dniu dzisiejszym - gdy nie uda się określić dnia lub nie podano argumentu.<br />'."\n" |
| | | . '<br />'."\n" |
| | | . '<u>Przykłady:</u><br />'."\n" |
| | | . 'data<br />'."\n" |
| | | . 'data pojutrze<br />'."\n" |
| | | . 'data 1.01.2009'); |
| | | } |
| | | else |
| | | { |
| | | return new BotMsg('<b>imieniny</b> <i>imię</i> (alias: <b>i</b>)<br />'."\n" |
| | | . ' Podaje dni, w których <i>imię</i> obchodzi imieniny. Parametr <i>imię</i> winien być podany w dopełniaczu liczby pojedynczej.<br />'."\n" |
| | | . '<br />'."\n" |
| | | . '<u>Przykłady:</u><br />'."\n" |
| | | . 'imieniny Adama<br />'."\n" |
| | | . 'imieniny Ewy'); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return 'bot_data_init'; |
| | | ?> |