Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przeróbka skryptu
Forum PHP.pl > Forum > PHP
jarmiar
Witam,

Mam takie pytanie:

Czy skrypt www2gg (do wysyłania wiadomości na Gadu-Gadu, można przerobić w ten sposób, aby wiadomości przychodzące na numer bramki były automatycznie odpowiadane przez skrypt np.
ktoś wpisze: Cześć - skrypt mu odpowie również cześć, jeśli ktoś wpisze do widzenia - skrypt się z nim też pożegna.

Jeżeli jest taka możliwość to proszę o jakieś sugestie.

Pozdrawiam smile.gif


jeszcze raz bardzo proszę o jakieś sugestie
dokch
Polecam poczytać o phplibgadu.
Google
jarmiar
zapoznałem się z tym, ale jak sobie za pomocą tej klasy i instrukcji warunkowych ustawię na jakie wpisane przez użytkownika zwroty ma odpowiadać to to nie działa!
dokch
To może pokażesz kod? Inaczej Ci nie pomogę winksmiley.jpg
Też kiedyś się tym bawiłem, w razie czego mogę pokazać Ci swój skrypt.
jarmiar
oto kod:

  1. <?php
  2.  
  3.  
  4. require_once 'phplibgadu.php';
  5.  
  6. //autoryzacja
  7. $numer_gg = "moj_numer";
  8. $haslo_gg = "*********";
  9.  
  10.  
  11. $gg = new GG;
  12.  
  13. // Po??czenie (numer, has?o)
  14. $gg->connect($numer_gg, $haslo_gg);
  15.  
  16. // Ustawienie statusu na dost?pny + opis
  17. $gg->changeStatus(GG_STATUS_AVAILABLE_DESCR, 'Opis statusu');
  18.  
  19.  
  20. while (1) {
  21. sleep(1);
  22. // Pingujemy ?eby nie straci? po??czenia
  23. $gg->ping();
  24.  
  25. // Sprawdzamy czy s? jakie? pakiety wys?ane do nas
  26. if (($packet = $gg->readPacket()) === false) {
  27. continue;
  28. }
  29.  
  30. // Czytamy pakiety
  31. $packet = $gg->handlePacket($packet);
  32.  
  33. // Je?eli pakiet jest wiadomo?ci?...
  34. if ($packet['type'] == GG_RECV_MSG) 
  35.  {
  36.  if ($packet['msg'] == 'pogoda') 
  37.  {
  38.  $gg->sendMessage($packet['sender'], "Dzisiaj jest bardzo ładna pogoda");
  39.  }
  40.  else
  41.  {
  42.  $gg->sendMessage($packet['sender'], strrev($packet['msg'])); 
  43.  }
  44. // ...i jesli ktos napisa? 'quit' to ko?czymy p?tle while
  45. if ($packet['msg'] == 'quit') {
  46. break;
  47. }
  48. }
  49.  
  50. }
  51.  
  52. // Roz??czamy si? z sieci? gg
  53. $gg->disconnect('Opis niedost?pny');
  54.  
  55. ?>
dokch
Przekopiowałem Twój skrypt na serwer, i działa, tzn:
Skrypt odpowiada mi odwrotnością mojej wiadomości (bo tak jest w skrypcie)

Kłopot tkwi w tym, że gadu-gadu nie przesyła tylko tekstu, tylko dodaje jakieś znaki kontrolne na końcu.

Gdy zastosujemy if($pakiet=="czesc") wiadomo, że skrypt nam nie odpowie, bo ciąg znaków równa się czesc### (# - tak oznaczyłem znak kontrolny z gg).

Rozwiązaniem jest funkcja preg_match winksmiley.jpg
Wszystko działa pięknie ;]
jarmiar
a mógłbyś mi napisać ten fragment kodu, bo ja z wyrażeniami regularnymi nie stoję za dobrze?
dokch
Prosze:

  1. <?php
  2.  
  3.  
  4. require_once 'phplibgadu.php';
  5.  
  6. //autoryzacja
  7. $numer_gg = "moj_numer";
  8. $haslo_gg = "*********";
  9.  
  10.  
  11. $gg = new GG;
  12.  
  13. // Po??czenie (numer, has?o)
  14. $gg->connect($numer_gg, $haslo_gg);
  15.  
  16. // Ustawienie statusu na dost?pny + opis
  17. $gg->changeStatus(GG_STATUS_AVAILABLE_DESCR, 'Opis statusu');
  18.  
  19.  
  20. while (1) {
  21. sleep(1);
  22. // Pingujemy ?eby nie straci? po??czenia
  23. $gg->ping();
  24.  
  25. // Sprawdzamy czy s? jakie? pakiety wys?ane do nas
  26. if (($packet = $gg->readPacket()) === false) {
  27. continue;
  28. }
  29.  
  30. // Czytamy pakiety
  31. $packet = $gg->handlePacket($packet);
  32.  
  33. // Je?eli pakiet jest wiadomo?ci?...
  34. if ($packet['type'] == GG_RECV_MSG) 
  35.  {
  36.  if ( preg_match('#pogoda#si', $packet['msg']) ) 
  37.  {
  38.  $gg->sendMessage($packet['sender'], "Dzisiaj jest bardzo ładna pogoda");
  39.  }
  40.  else
  41.  {
  42.  $gg->sendMessage($packet['sender'], 'Nie znam takiego slowa.')); 
  43.  }
  44. // ...i jesli ktos napisa? 'quit' to ko?czymy p?tle while
  45. if ( preg_match('#quit#si', $packet['msg']) ) { // mozna zamienić na /quit ;)
  46. break;
  47. }
  48. }
  49.  
  50. }
  51.  
  52. // Roz??czamy si? z sieci? gg
  53. $gg->disconnect('Opis niedost?pny');
  54.  
  55. ?>


Powinno być dobrze winksmiley.jpg
jarmiar
bardzo dziękuję ci za pomoc!!!! kod działa (drobna poprawka) smile.gif smile.gif
kacperix
Witam.

Mam pewien problem. Otóż mam w kodzie, w pętli, wywołanie funkcji pingującej aby nie starcić połączenia z serwerem, jednak i tak po 5 minutach je zrywa. Co jest nie tak?

Pozdrawiam
dokch
Może Twój serwer ma ograniczony czas wykonywania skryptu?

Ja ustawilem sobie na cronie odpalanie co 30minut i ładnie wszystko działa.
kacperix
No i niestety też nie działa. CRON odpala co 30 min, ale i tak po 5 min wywala się.

Zaznaczę, że korzystam z serwera home.pl.

Jakieś inne rozwiązanie?
marcio
moze cos takiego na shell'u dziala
  1. <?php
  2. @ini_set('max_execution_time', 0);
  3. ?>
kacperix
No niestety nic nie daje :/

Na home.pl dostępu do shella nie ma.
Gdy w pliku wpisze set_time_limit(0) i poniżej odpalę phpinfo() to wygląda, że zadziałało przestawienie max_execution_time. Tylko dlaczego sie przerywa?
marcio
a petle masz ustawiana zeby pingowala w nieskonczonosc czy co?bo jak nie to bo wyslanej danej ilosci pingow skrypt przerywa
kacperix
Cytat(marcio @ 14.10.2007, 20:53:39 ) *
a petle masz ustawiana zeby pingowala w nieskonczonosc czy co?bo jak nie to bo wyslanej danej ilosci pingow skrypt przerywa



Mam dokładnie tak jak w kodzie @dokch'a powyżej

Ok, już się nie rozłącza smile.gif

Kolejny problem, że jak np. mam włączonego BOT'a i wysyłam do niego wiadomości to odpisuje i robi co tam mu jeszcze zaprogramuje. Natomiast jak mam go wyłączonego, i napiszę do niego wiadomość i dopiero go włączę to nie odbiera mi tych wiadomości co już czekają i nie odpowiada na nie.

Czy da się jakoś to zrobić, że odbierał i odpowiadał na wiadomości , które zostały wysłane podczas gdy on był nieaktywny?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.