Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
car2ner
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 8
1

Массив $arr, бот телеграм

29.12.2017, 13:29. Просмотров 1756. Ответов 11
Метки нет (Все метки)

Привет, ребята!
понадобилась ваша помощь((
есть бот продажи одежды в телеграм, писался на заказ, в нем есть этот массив

PHP
1
2
3
4
$arr = array(); 
 
$arr[] = array("✅ Я оплатил товар"); 
$arr[] = array("



		




	
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2017, 13:29
Ответы с готовыми решениями:

Телеграм бот после блокировки Роскомнадзора
Всем привет подскажите что нужно сделать чтоб оживить телеграм бота? Как роскомнадзор попытался...

Телеграм-бот
Скачал я бота, а он с ошибками, или просто на виндовс не работает. В общем помогите: Код бота: ...

Бот телеграм
Кто нибудь делал бота для телеграмма?

Телеграм бот на PHP
PLS HELP!=) Ситуация такая купил хостинг и доменное имя, оформил SSL сертификат, зарегистрировал...

Телеграм бот на PHP
Привет всем. Недавно зарегистрировался в Телеграме и решил попробовать написать своего бота....

11
Jodah
Эксперт PHP
3457 / 2912 / 1224
Регистрация: 01.08.2012
Сообщений: 10,048
29.12.2017, 13:43 2
Цитата Сообщение от car2ner Посмотреть сообщение
Кто реально поможет, могу заплатить даже!
Тогда вам на фриланс (на этом форуме есть спец раздел).

Одного массива недостаточно, надо смотреть весь код.
0
car2ner
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 8
29.12.2017, 14:31  [ТС] 3
Вот подробнеее:
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
<?
require 'classes/Curl.php';
require 'classes/PDO.php';
 
$curl = new Curl();
 
// Получаем информацию из БД о настройках бота
$set_bot = DB::$the->query("SELECT token,block FROM `sel_set_bot` ");
$set_bot = $set_bot->fetch(PDO::FETCH_ASSOC);
$token = $set_bot['token']; // токен бота
 
$chat = $argv[1];
$message = base64_decode($argv[2]);
 
$user = DB::$the->query("SELECT ban,id_key,balans FROM `sel_users` WHERE `chat` = {$chat} ");
$user = $user->fetch(PDO::FETCH_ASSOC);
 
 
 
 
// Узнаем, сколько подкатегориев в категории
$nulled = DB::$the->query("SELECT id FROM `sel_keys` where `sale` = '0' and `block` = '1' and `block_time` < '".(time()-(60*$set_bot['block']))."' ");
$nulled = $nulled->fetchAll();
 
if(count($nulled > 0)){
 
 
$query = DB::$the->query("SELECT block_user FROM `sel_keys` where `sale` = '0' and `block` = '1' and `block_time` < '".(time()-(60*$set_bot['block']))."' order by `id` ");
while($us = $query->fetch()) {
 
DB::$the->prepare("UPDATE sel_keys SET block=? WHERE block_user=? ")->execute(array("0", $us['block_user'])); 
DB::$the->prepare("UPDATE sel_keys SET block_time=? WHERE block_user=? ")->execute(array('0', $us['block_user'])); 
DB::$the->prepare("UPDATE sel_keys SET block_user=? WHERE block_user=? ")->execute(array('0', $us['block_user']));
 
//DB::$the->prepare("UPDATE sel_users SET id_key=? WHERE chat=? ")->execute(array('0', $us['block_user']));
 
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $us['block_user'],
'text' => "&#55357;&#57003; Вы не произвели оплату в течение {$set_bot['block']} минут. Этот товар выставлен на продажу. 
Для того чтобы купить товар, выберите его снова",
 
)); 
}
} 
 
if (strstr($message, "&#55357;&#56633;")) 
{
 
// Берем цифру из запроса
$name_cat = preg_replace('#&#55357;&#56633;#USi', '', $message);
 
 
// Берем информацию об категории из БД
$cat_id = DB::$the->query("SELECT id FROM `sel_category` WHERE `name` = '".$name_cat."' ");
$cat_id = $cat_id->fetch(PDO::FETCH_ASSOC);
 
 
 
// Узнаем, сколько подкатегориев в категории
$total = DB::$the->query("SELECT id FROM `sel_subcategory` where `id_cat` = '".$cat_id['id']."' ");
$total = $total->fetchAll();
 
// Узнаем, сколько не проданной одежды или ключей
$total2 = DB::$the->query("SELECT id FROM `sel_keys` where `id_cat` = '".$cat_id['id']."' and `sale` = '0' and `block` = '0'");
$total2 = $total2->fetchAll();
 
// Если нет подкатегорий
if(count($total) == 0 or count($total2) == 0) {
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $chat,
'text' => "⛔ Данная категория пуста!\n",
)); 
exit;
}
else // Иначе
{
 
 
 
$arr = array();
 
$query = DB::$the->query("SELECT * FROM `sel_subcategory` where `id_cat` = '".$cat_id['id']."' order by `mesto` ");
while($cat = $query->fetch()) {
// Считаем количество одежды или ключей в подкатегории 
$total = DB::$the->query("SELECT id_subcat FROM `sel_keys` WHERE `id_subcat` = {$cat['id']} and `sale` = '0' and `block` = '0'");
$total = $total->fetchAll();
 
// Считаем количество ключей в подкатегории 
$total2 = DB::$the->query("SELECT id_subcat FROM `sel_keys` WHERE `id_subcat` = {$cat['id']} and `sale` = '0' and `block` = '1'");
$total2 = $total2->fetchAll();
 
if (count($total2) > 0) $free = ' | '.count($total2).'&#55357;&#56657;'; else $free = '';
 
if(count($total) != 0){
$arr[] = array("&#55357;&#56632;[".$cat['name']."] - ".$cat['amount']." руб ");
 
} 
}
$arr[] = array("&#55357;&#56601; Назад");
 
 
$replyMarkup = array(
'resize_keyboard' => true,
'keyboard' => 
$arr 
 
);
$menu = json_encode($replyMarkup);
 
// Отправлеям 
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $chat,
'text' => 'Выберите район и товар',
'reply_markup' => $menu, 
)); 
}
exit;
} 
if (strstr($message, "&#55357;&#56632;")) 
{
 
preg_match_all("#\[(.*)\]#Uis", $message, $res);
$res= preg_replace('#\[#USi', '', $res[0][0]); 
$name_cat= preg_replace('#\]#USi', '', $res);
 
// Берем информацию о подкатегории
$row = DB::$the->query("SELECT * FROM `sel_subcategory` WHERE `name` = '".$name_cat."' ");
$subcat = $row->fetch(PDO::FETCH_ASSOC);
 
 
// Проверяем наличие ключей
$total = DB::$the->query("SELECT id FROM `sel_keys` where `id_subcat` = '".$subcat['id']."' and `sale` = '0' and `block` = '0' ");
$total = $total->fetchAll();
 
if(count($total) == 0) { // Если пусто, вызываем ошибку
 
// Отправляем текст
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $chat,
'text' => '⛔ нет доступных товаров!',
));
}
else // Иначе выводим результат
{
 
$clear = DB::$the->query("SELECT block_user FROM `sel_keys` where `block_user` = '".$chat."' ");
$clear = $clear->fetchAll();
 
if(count($clear) != 0){
DB::$the->prepare("UPDATE sel_keys SET block=? WHERE block_user=? ")->execute(array("0", $chat)); 
DB::$the->prepare("UPDATE sel_keys SET block_time=? WHERE block_user=? ")->execute(array('0', $chat));
DB::$the->prepare("UPDATE sel_keys SET block_user=? WHERE block_user=? ")->execute(array('0', $chat)); 
}
 
// Получаем информацию о ключе 
$key = DB::$the->query("SELECT id,code,id_subcat FROM `sel_keys` where `id_subcat` = '".$subcat['id']."' and `sale` = '0' and `block` = '0' order by rand() limit 1");
$key = $key->fetch(PDO::FETCH_ASSOC);
 
 
if($subcat['amount'] == $user['balans']){
 
// Записываем информацию о покупке в БД
$params = array('id_key' => $key['id'], 'code' => $key['code'], 'chat' => $chat, 'id_subcat' => $key['id_subcat'], 'time' => time() ); 
$q = DB::$the->prepare("INSERT INTO `sel_orders` (id_key, code, chat, id_subcat, time) 
VALUES (:id_key, :code, :chat, :id_subcat, :time)"); 
$q->execute($params);
 
// Пополняем баланс пользователя
$new_balans = $user['balans']-$subcat['amount'];
DB::$the->prepare("UPDATE sel_users SET balans=? WHERE chat=? ")->execute(array($new_balans, $chat));
 
DB::$the->prepare("UPDATE sel_keys SET sale=? WHERE id=? ")->execute(array("1", $key['id']));
 
// Отправляем текст пользователю
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $chat,
'text' => "✔ Товар оплачен",
));
 
// Выводим в меню список категорий
$query = DB::$the->query("SELECT * FROM `sel_category` order by `mesto` ");
while($cat = $query->fetch()) {
$arr[] = array("&#55357;&#56633;".$cat['name'].""); 
}
 
$arr[] = array("&#55357;&#56550; Заказы", "&#55357;&#56496; Баланс");
 
$replyMarkup = array(
'resize_keyboard' => true,
'keyboard' => 
$arr 
 
);
$menu = json_encode($replyMarkup);
 
// Отправляем текст пользователю
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $chat,
'text' => $key['code'],
'reply_markup' => $menu, 
));
 
}
else
{
 
DB::$the->prepare("UPDATE sel_keys SET block=? WHERE id=? ")->execute(array("1", $key['id'])); 
DB::$the->prepare("UPDATE sel_keys SET block_user=? WHERE id=? ")->execute(array($chat, $key['id'])); 
DB::$the->prepare("UPDATE sel_keys SET block_time=? WHERE id=? ")->execute(array(time(), $key['id']));
 
DB::$the->prepare("UPDATE sel_users SET id_key=? WHERE chat=? ")->execute(array($key['id'], $chat)); 
 
$set_qiwi = DB::$the->query("SELECT number FROM `sel_set_qiwi` WHERE `active` = '1' ");
$set_qiwi = $set_qiwi->fetch(PDO::FETCH_ASSOC); 
 
DB::$the->prepare("UPDATE sel_users SET pay_number=? WHERE chat=? ")->execute(array($set_qiwi['number'], $chat)); 
 
 
$text = "
&#55357;&#56496; Вы заказали
«{$subcat['name']}»
До конца резерва осталось {$set_bot['block']} минут
➖➖➖➖➖➖➖➖➖➖
 
Переведите на QIWI-кошелек
{$set_qiwi['number']}
сумму: {$subcat['amount']} руб.
В комментарии обязательно
укажите цифры: {$key['id']}
 
➖➖➖➖➖➖➖➖➖➖
";
 
 
 
$arr = array();
 
$arr[] = array("✅ Я оплатил товар"); 
$arr[] = array("&#55357;&#56601; Назад");
 
$replyMarkup = array(
'resize_keyboard' => true,
'keyboard' => 
$arr 
 
);
$menu = json_encode($replyMarkup);
 
// Отправляем текст
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $chat,
'text' => $text,
'reply_markup' => $menu, 
)); 
}
 
} 
} 
exit;
?>
0
car2ner
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 8
02.01.2018, 18:09  [ТС] 4
НУ ХОТЬ КТО НИБУДЬ СМОЖЕТ ПОМОЧЬ?(
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 111
03.01.2018, 15:39 5
Пробуй так:
PHP
1
2
3
if ( strpos($text, "оплатил") > 0 ) {
    $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Проверяем оплату,ждите" ]);
}
или
PHP
1
2
3
if ( strpos($text, "оплатил") !== false ) {
    $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Проверяем оплату,ждите" ]);
}
на выбор, как говорится.
Потому, что этот символ "вњ…" вряд ли годится для сравнения...
1
car2ner
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 8
04.01.2018, 03:04  [ТС] 6
Цитата Сообщение от EU1CJ Посмотреть сообщение
PHPВыделить код
1
2
3
if ( strpos($text, "оплатил") > 0 ) {
* * $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Проверяем оплату,ждите" ]);
}
Не могу понять в какую часть кода вставлять, пробовал в некоторые = в итоге бот виснет и не доходит до меню оплаты
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 111
04.01.2018, 08:18 7
Цитата Сообщение от car2ner Посмотреть сообщение
Пробовал по тексту ответ, типа:
[PHP]if ($text == "✅ Я оплатил товар") {
$telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Проверяем оплату,ждите" ]);
}[/PHP
Вот где этот текст - проверку вместо него.
Я ж не знаю, куда Вы его там вставляли...(
1
car2ner
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 8
06.01.2018, 16:18  [ТС] 8
Цитата Сообщение от EU1CJ Посмотреть сообщение
Вот где этот текст - проверку вместо него.
Я ж не знаю, куда Вы его там вставляли...(
это нельзя менять, т.к. бот перестает нормально работать..
вопрос в том, что и куда добавить в код, чтобы при нажатии кнопки "я оплатил" плюсом ко всему еще и отправлялось сообщение сразу о проверке, я не могу уже который день разобраться(
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 111
06.01.2018, 20:43 9
Тогда я уже не понимаю.
Вот эта record в коде, это что такое? Где вы это вызывали?
PHP
1
if ($text == "✅ Я оплатил товар")
Ведь это ж явное сравнение строк!

В коде, который Вы привели в сообщении, такая проверка нигде не вызывается. А только формируется GET запрос с параметрами, начиная со строки 236. И отправляется он явно в кривом виде "вњ… Я оплатил товар". Вот и надо заменить этот символ "вњ…" на что-то внятное. Иначе запрос просто не воспринимается. А это, скорее всего, в UTF-16.
Вот и замените в массиве кракозябру "вњ…" на:
PHP
1
"&#55357;&#56601;"
Кто -то видимо тайпал в русской кодировке.
Потом скажете, что получилось.

Добавлено через 5 минут
А сравнение строк это ищите где-то выше уровнем, в другом файле. Если она, конечно, вообще вызывается. В чём я лично сомневаюсь...
Разве что по адресу "https://api.telegram.org/"
1
car2ner
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 8
07.01.2018, 00:42  [ТС] 10
Цитата Сообщение от EU1CJ Посмотреть сообщение
Вот и замените в массиве кракозябру "вњ…" на:
это на форуме она так отобразилась, а в коде все нормально и все работает..
если изменяю эту кнопку то все крашится даже зайдя в бот в категорию эту

Добавлено через 19 секунд
просто не понимаю что делать(((

Добавлено через 2 минуты
Цитата Сообщение от EU1CJ Посмотреть сообщение
Тогда я уже не понимаю.
Вот эта record в коде, это что такое? Где вы это вызывали?
PHPВыделить код
1
if ($text == "вњ… Я оплатил товар")
такого вроде нет
0
dukesov
17 / 17 / 10
Регистрация: 24.08.2015
Сообщений: 456
07.01.2018, 16:28 11
Лучший ответ Сообщение было отмечено car2ner как решение

Решение

Цитата Сообщение от car2ner Посмотреть сообщение
Пробовал по тексту ответ, типа:
От куда вы взяли $telegram->sendMessage? Вам надо сделать так:
PHP
1
2
3
4
5
6
if ($message == "✅ Я оплатил товар") {
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $chat,
'text' => "Проверяем оплату, ждите",
));
}
1
car2ner
0 / 0 / 0
Регистрация: 29.12.2017
Сообщений: 8
08.01.2018, 01:40  [ТС] 12
Цитата Сообщение от dukesov Посмотреть сообщение
От куда вы взяли $telegram->sendMessage? Вам надо сделать так:
не работает эээхххх(((((((

Добавлено через 6 минут
а как не по тексту определение сделать а по array? может так получится...

Добавлено через 45 минут
Цитата Сообщение от dukesov Посмотреть сообщение
От куда вы взяли $telegram->sendMessage? Вам надо сделать так:
PHPВыделить код
1
2
3
4
5
6
if ($message == "вњ… Я оплатил товар") {
$curl->get('https://api.telegram.org/bot'.$token.'/sendMessage',array(
'chat_id' => $chat,
'text' => "Проверяем оплату, ждите",
));
}
изменил другой файл, не тот который тут скидывал, к коду выше добавил exit;
и наконец заработало все!! спасибо всем
0
08.01.2018, 01:40
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2018, 01:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Телеграм бот на python
Здравствуйте, при создании бота на языке Python выдает следующую ошибку: AttributeError: module...

телеграм бот калькулятор
Имеется скрипт клавиатуры и калькулятора, как сделать так чтобы функция калькулятора принимала ввод...

Телеграм бот в python
Привет всем) Очень нужна ваша помощь в создании бота. Идея бота в поиске слов из заданных...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.