Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
22 / 21 / 8
Регистрация: 11.09.2015
Сообщений: 109

Telegram - бот

20.01.2018, 22:42. Показов 3518. Ответов 2

Студворк — интернет-сервис помощи студентам
В обще всем доброго времени суток, господа!
Сам я не программист, но написал скрипт, который криво работает.
1)Суть его в том, что через longpolling забирает ссылки инстаграм из чата в массив
2)Потом забирает с каждой ссылки все ники комментировавших публикацию людей в еще один массив.
3)Следом в каждой итерации цикла он сравнивает массив ников со своим массив и выдает количество вхождений.
итог должен быть таким, что подсчитывается количество комментариев отдельно взятого человека среди всех публикаций, которые в были чате.

Вроде на небольшом количестве работает прекрасно, НОООО при 100 публикациях и более чем 100 Никах он выдает совершенно фантастические и кривые результаты.

Грешу на очень "умную" конструкцию вида "цикл в цикле и циклом погоняет".

Прошу помочь, так как я неоч в бэкэнде)) и не кидайте валенками)


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
 <?php 
//telegram block
$token = "0000:000000000";//токен бота
$t_web='https://api.telegram.org/bot'.$token.'/';//api метод база
$update_method=$t_web."getupdates";//получать обновления сообщений
if(isset($_GET["id"])){
$chat_num=$_GET["id"];
}
 
if($chat_num==='1')
{$t_chat_id='-1001286260940';}
elseif($chat_num==='chat2')
{$t_chat_id='-245899496';}
 
//sending message to tchat
//$message_to_chat=$t_web.'sendMessage?chat_id=-240434673&text=проверка!!';
function msg($t_web,$token,$reciver,$message =""){
$message_to_chat=$t_web.'sendMessage?chat_id='.$reciver.'&text='.$message;
$curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $message_to_chat);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_exec($curl);
    curl_close($curl);}
//------------------------
 
//getting messages with text links of instagram and transform to unified view
$response = file_get_contents($update_method);//получаем json со всеми письмами
$response = json_decode($response, true);
$stack='';//зануляем массив шорткодов
$stack = array();//массив шорткодов инстаграм 
foreach($response['result'] as $result) {//цикл получения шорткода
$telegram_chat_id = $result['message']['chat']['id'];
if ($telegram_chat_id==$t_chat_id){//парсим только с нужного чата
if ($result['message'] == "")
{
} 
else 
    {
        //message data
 
    $telegram_str = $result['message']['text'];
    $findme   = 'instagram.com/';
    $pos = strpos($telegram_str, $findme);
    if ($pos === false) 
        {  
        } 
        else
        {
        $data = strtok($telegram_str, "?");
        $marker = stripos($data, "/p/");
        if($marker) 
        $str = substr($data, stripos($data, "/p/")+3);
        $shortcode=trim($str, "/");
        echo  $title=$result['message']['chat']['title'];
        array_push($stack, $shortcode);
        //echo $shortcode;
        }    
}
 
}
else
{}
} 
//---------------------------------------------------------------------------- 
 
//instagram block
$shortcodes_count=count($stack);//количество шорткодов
$insta_nicks=array("_seninadaria_","dariaseninabw","vikakoroleva", "dirty_daddy666","deniza_lisova","ter_sterger","Riko0071","taxideshevle","KarolinaRoslyak","semenovegor","nataly_1122","khvankris","Tsvety_moskva","tanya_booking","vfx.guru","_lakusha_","ira_frolova_","parfmaniacmsk","alinakapkina","tarila1","korolev_official","daria_suhova","nunnukke","stefan.antochel","stefan.antochel","antanta_music","life.kor","Oleg_kot","mens_looove","kospakk","egorsharonov","theglorywhite","kazhaevakatya","batyrina.l","vlovegiirl","lena.lepesh55","anya_bolshova","kvantfitness","nataliegorova00","grishenkova_n0220","serj_de_sand","Tina_88888","Pysikname","Gromova_maria_","ann.wee","yanichka_milash","Egoist_pl","yankoo__","katulinadaria","sveta_mironoova","Liimannastya","Mollen.ru","kudannnn93","pofixit","__.joyride.__","promisedme","flysgjcm","givemebox_krd","Vlad_solomon777","Maxsonlevel_up","i_afanasyev_","pimpofyourmom","Menya_zdes__net","lialia_life","avroramoni","di.velichko","gritsenkoc","rauanzo","zubovichmixa","katrin_oris","bangerdt","pushka125","ahohryakova","Element_stixii","poluvadik1","afinatattoo","mr_crks","nashevremya","annnasstasi","evelinabersh","alex_paparaz","_angelinakuz","perfume_96_","_sun_18_","voloshin_vlad","cute__bunny","silverspace__","koneva_anastasia","dsv95","samozhenova_tamara","romanovkrd","shamsutdinova_d","zakproduction","busalaev_av","doll__julia","lllooming","kkyterina","daniel_ykm","romanenko_09","qpauline","grishenkova_n0220","wow_businka");//массив ников которые проверяем
$global_result=array();
 $found=array();
foreach($stack as $shortcode){//от каждого шорткода
$json =file_get_contents('https://www.instagram.com/graphql/query/?query_id=17852405266163336&variables={"shortcode":"'.$shortcode.'","first":1000}'); //получаем json от инстаграма публикации
$data = json_decode($json,true);//расшифровываем
$instagram_usernames = array();//массив имен в полученных комментах
 
foreach($data['data']['shortcode_media']['edge_media_to_comment']['edges'] as $edge) {//для каждого комментария
  array_push($instagram_usernames,$edge['node']['owner']['username']);//пушаем каждый ник в массив instagram_usernames
}
foreach($insta_nicks as $nick){
if (in_array($nick, $instagram_usernames)) {
array_push($found,$nick); 
}
}
}
$arr=array_count_values($found);//находим ники в каждом массиве
foreach($arr as $key=>$arrr)
{
//$tcount = $key.' '.$arrr;
$tcount =$arrr;
msg($t_web,$token,170200040,'@'.$key.' сделал '.$tcount.' / '.$shortcodes_count.' или '.ceil($tcount*100/$shortcodes_count).' %');
//msg($t_web,$token,335882121,'@'.$key.' сделал '.$tcount.' / '.$shortcodes_count.' или '.ceil($tcount*100/$shortcodes_count).' %');
//msg($t_web,$token,147379454,'@'.$key.' сделал '.$tcount.' / '.$shortcodes_count.' или '.ceil($tcount*100/$shortcodes_count).' %');
 
    
}
 // 
 //comment query
//https://www.instagram.com/graphql/query/?query_id=17852405266163336&variables={%22shortcode%22:%22BcE9KLxli1E%22,%22first%22:100}
 //https://www.instagram.com/users/self/media/recent/?access_token=510573486.ab7d4b6.d8b155be5d1a47c78f72616b4d942e8d
 
 ?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.01.2018, 22:42
Ответы с готовыми решениями:

Простой telegram бот на php
Здравствуйте, решил написать простейшего бота telegram или вконтакте. Остановился пока на telegram. Цель пока разработать бота...

Сертифицирование telegram бота
Создаю telegram бота. Действовал по инструкции ://github.com/akalongman/php-telegram-bot. Создал ssl сертификат. Нужно указать путь к нему...

Api telegram не выводит значения
Привет всем. Сделал бота, без Webhook пытаюсь получить значения методом getupdate - выводит значения которые я написал в чате с ботом. ...

2
7 / 7 / 4
Регистрация: 18.01.2018
Сообщений: 39
21.01.2018, 00:28
что-то подсказывает мне, что на добропорядочном форуме темы о грабберах, парсерах, курлах, хаках и прочей мутоте - будут проигнорированы

смысл?

поставьте себя на место жертвы

сорри за оффтоп
0
22 / 21 / 8
Регистрация: 11.09.2015
Сообщений: 109
21.01.2018, 01:01  [ТС]
Уважаемый, это не граббер,а чекер, который проверяет наличие комментария от пользователя. Ничего он не крадет) Даже если это был бы и парсер/граббер в классическом его понимании, то все источники информации не были бы исключительно официальными и открытыми (Telegram api , Instagram json)

upd: курлы тут используются только для отправки запросов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.01.2018, 01:01
Помогаю со студенческими работами здесь

Не получается с кодом php для бота Telegram?
Всем привет! Учу бота говорить! Есть моменты которые не получаются. Вот кусок кода, работает идеально: $hello = 'привет'; ...

Telegram Bot api удаление данных БД inline клавиатурой
Подскажите, пожалуйста, как реализовать удаление из базы данных вопроса. 1.callback_data кнопки формируется динамически на основании id...

Бот telegram не может подключиться к https://api.telegram.org:443: (Java)
Здравствуйте! Возникла такая проблема при запуске бота в intelij idea ultimate программа выдает такое сообщение:&quot;юн. 02, 2018 8:42:11...

AttributeError: module 'telebot' has no attribute 'TeleBot'
Доброго времени суток, уважаемые форумчане! Прошу помощи в элементарной для опытного программиста задаче, т.к. уже не знаю что делать....

Telegram-бот
Здравствуйте! Разбираю пример телеграм-бота, написанного с помощью модуля node-telegram-bot-api.Бот создается и при команде /start...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru