Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Losowanie odpowiedzi
Mateoo88
post 23.07.2012, 13:34:17
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


Witam,
to jest fragment kodu bota w php:
  1. case "cześć": $M->addText('Cześć :)'); break;

A chciałbym by na słowo "cześć" owy bot losował z kilku odpowiedzi a nie tylko z jednej "Cześć smile.gif".

Proszę o pomoc.
Będę wdzięczny
Go to the top of the page
+Quote Post
czychacz
post 23.07.2012, 14:31:12
Post #2





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


http://php.net/manual/en/function.rand.php
http://php.net/manual/en/language.types.array.php
a jak nie chcesz trzymać odpowiedzi w tablicach, to skorzystaj z bazy
http://php.net/manual/en/book.pdo.php
Go to the top of the page
+Quote Post
d.stp
post 23.07.2012, 14:36:28
Post #3





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 19.04.2012

Ostrzeżenie: (0%)
-----


array_rand()
Go to the top of the page
+Quote Post
bpskiba
post 23.07.2012, 14:49:31
Post #4





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


A ja poskładam

  1. case "cześć":
  2. $f=array("sie ma","witaj","you","hej");
  3. $M->addText($f[array_rand($f)]);
  4. break;


Ten post edytował bpskiba 23.07.2012, 15:10:13
Go to the top of the page
+Quote Post
Beniooo
post 23.07.2012, 16:44:47
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 26
Dołączył: 26.01.2012
Skąd: Ci to przyszło do głowy?

Ostrzeżenie: (0%)
-----


Mateo88, w BotAPI masz tą funkcję opisaną, nawet gdy pobrales biblioteke był przykład jej użycia


--------------------
Mój post rozwiązał Twój problem? Naciśnij co Ci szkodzi? ;-)
Go to the top of the page
+Quote Post
Mateoo88
post 6.08.2012, 14:07:11
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


Nie dokładnie taki przykład bo tam losuje jedna z 7 odpowiedzi, obojętnie co napiszesz.
Jedną wade ma ten bot. Nie odpowie Ci jak mu na przykład napiszesz (jeżeli chodzi o górny przykład) "cześć jak się masz". Nie wyłapuje fragmentów zdań. Jest na to jakaś rada?
Z góry dzięki za pomoc
Go to the top of the page
+Quote Post
markonix
post 6.08.2012, 16:23:57
Post #7





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


preg_match


--------------------
Go to the top of the page
+Quote Post
Giluś
post 6.08.2012, 16:39:48
Post #8





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Coś takiego ?smile.gif

  1. <?
  2. require_once('MessageBuilder.php');
  3. $M=new MessageBuilder();
  4.  
  5.  
  6. switch ($HTTP_RAW_POST_DATA) {
  7. case "cześć":
  8.  
  9. switch (rand(1, 7)) {
  10. case 1: $M->addText('Tekst pomarańczowy', FORMAT_NONE, 255, 165, 0); break;
  11. case 2: $M->addText('Tekst pogrubiony, pochylony i podkreślony', FORMAT_BOLD_TEXT | FORMAT_ITALIC_TEXT | FORMAT_UNDERLINE_TEXT); break;
  12. case 3: $M->addText('Tekst podkreślony w kolorze czerwonym', FORMAT_UNDERLINE_TEXT, 255, 0, 0)); break;
  13. case 4: $M->addText("Pierwsza linia\nDruga linia"); break;
  14. case 5: $M->addText('Tekst wysłany do innych')->setRecipients(array(123,456)); break;
  15. case 6: $M->addBBcode('Tekst wysłany do Ciebie i innych')->setRecipients(array(123,456,$_GET['from'])); break;
  16. case 7: $M->addRawHtml('Tekst <b>pogrubiony</b> oraz <i>pochylony</i> oraz <u>podkreślony</u>'); break;
  17. }
  18.  
  19.  
  20. break;
  21.  
  22. default: $M->addBBcode('Nie rozumiem...[br]Napisz to innymi słowami.');
  23. }
  24.  
  25.  
  26. $M->reply();
  27.  
  28. ?>


Ten post edytował Giluś 6.08.2012, 16:42:19
Go to the top of the page
+Quote Post
Mateoo88
post 6.08.2012, 17:07:25
Post #9





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


Bardziej chodzi mi o to, gdy ktoś napisze np." Cześć Jak się masz?" a bot ma w kodzie sprecyzowaną tylko komende "cześć" to i tak odpisze. Bo przy obecnym kodzie nawet gdy ktoś napisze "cześć!" z wykrzyknikiem to bot nie odpisze.
Go to the top of the page
+Quote Post
Giluś
post 6.08.2012, 17:17:52
Post #10





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

Ostrzeżenie: (0%)
-----


Tu masz przykład:

  1.  
  2. $wzorzec = '/(Zgłoszenie)/'; $wzorzec1 = '/(zgłoszenie)/'; $wzorzec2 = '/(ZGŁOSZENIE)/';
  3. if(preg_match_all($wzorzec, $HTTP_RAW_POST_DATA, $wyniki)){$M->addRawHtml('<br /> <b>Dziękujemy za zgłoszenie.</b> <br />'); }
  4.  


Możesz tego użyć, lub ewentualnie szukać czegoś co nie patrzy na wielkość liter smile.gif
Go to the top of the page
+Quote Post
GoOx
post 6.08.2012, 17:29:03
Post #11





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Popatrz na funkcję strstr
Go to the top of the page
+Quote Post
markonix
post 6.08.2012, 19:05:59
Post #12





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Cytat(Mateoo88 @ 6.08.2012, 18:07:25 ) *
Bardziej chodzi mi o to, gdy ktoś napisze np." Cześć Jak się masz?" a bot ma w kodzie sprecyzowaną tylko komende "cześć" to i tak odpisze. Bo przy obecnym kodzie nawet gdy ktoś napisze "cześć!" z wykrzyknikiem to bot nie odpisze.

No to napisałem. Wyrażenia regularne tutaj w zupełności na początku wystarczą.
Najpierw switchem sprawdzasz czy nie wpisał określonej, konkretnej komendy, potem w default zaczynasz zabawę z ifami.
Potem jeżeli żaden if się nie spełni dopiero info o tym, że nie rozumiesz co napisał.

W każdym z tych etapów możesz losować odpowiedzi żeby urozmaicić wypowiedzi.

Osobiście tak właśnie napisałem bota i się sprawdza.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 07:31