За последние 24 часа нас посетили 22715 программистов и 1256 роботов. Сейчас ищут 778 программистов ...

Почему отправляется несколько сообщений вместо одного?

Тема в разделе "PHP для новичков", создана пользователем lightmanLP, 15 дек 2018.

Метки:
  1. lightmanLP

    lightmanLP Новичок

    С нами с:
    9 дек 2018
    Сообщения:
    4
    Симпатии:
    0
    Написал код для бота в вк. На сообщение test он должен отвечать hey 1 раз. Вместо этого через некоторое время он пишет hey еще несколько раз. Помогите пожалуйста. Бот работает через Callback API.
    PHP:
    1. <?php
    2. if (!isset($_REQUEST)) {
    3. return;}
    4.  
    5. $searchres = '';
    6.  
    7. $confirmation_token = '';
    8. $token = '';
    9. $group = '';
    10. $random = 24;
    11.  
    12. $sendres = '';
    13. function Send ($text,$idsend) {
    14. global $sendres,$token,$group;
    15. $sendres = file_get_contents('https://api.vk.com/method/messages.send?peer_id='.$idsend.'&message='.urlencode($text).'&access_token='.$token.'&group_id='.$group.'&v=5.92&random_id='.$random);}
    16.  
    17. $resname = '';
    18. function Names($NamedId, $N1, $N2, $Nform) {
    19. global $token,$group,$resname;
    20. $Nameref = json_decode(file_get_contents('https://api.vk.com/method/User.get?access_token='.$token.'&group_id='.$group.'&v=5.92&user_ids='.$NamedId.'&name_case='.$Nform));
    21. if ($N1 == 1) {$resname = $Nameref['response'][0]['first_name'];}
    22. if ($N2 == 1) {if ($resname != '') {$resname = $resname.' ';} $resname = $resname.$Nameref['response'][0]['last_name'];}}
    23.  
    24. $data = json_decode(file_get_contents('php://input'));
    25. switch ($data->type) {
    26. case 'confirmation':
    27. echo $confirmation_token;
    28. break;
    29.  
    30. case 'message_new':
    31. $id = $data->object->peer_id;
    32. $mes = $data->object->text;
    33. $Aid = $data->object->from_id;
    34.  
    35.  
    36. $basecount = 0;
    37. while ($basecount <= count($base['local'])) /*tester func*/ {
    38. $searchres = $searchres.key($base['local']);
    39. $basecount = $basecount + 1;
    40. next($base['local']);}
    41. if (strpos($searchres,$Aid) == False) {
    42. array_push ($base['local'],'id'.$Aid);
    43. $ATid = 'id'.$Aid;
    44. $base['local'][$ATid] = ['party'=>['invite'=>0,'request','invited'=>0]];}
    45. if (strpos($mes, '/b') == 0) {
    46. $a = substr($mes, 3);
    47. Send ('',$id);}
    48.  
    49. if ($mes == 'test') {
    50. Send ("hey",$id);  
    51. }
    52. echo 'ok';
    53. break;}
    54. ?>
     
  2. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    498
    Симпатии:
    57
    у тебя же функция Send два раза в коде вызвается.
    Отформатируй код у себя нормально, ты сам уже не видишь где что
     
  3. lightmanLP

    lightmanLP Новичок

    С нами с:
    9 дек 2018
    Сообщения:
    4
    Симпатии:
    0
    Она отправляет пустоту...
    --- Добавлено ---
    Более того она делает это в конструкции if