-
Notifications
You must be signed in to change notification settings - Fork 2
/
process.php
86 lines (68 loc) · 2.89 KB
/
process.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
<?php
# Telegram Bot Token
define('BOT_TOKEN', 'Enter Your Bot token here');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/'); // Это трогать не нужно
# Адрес вебхука, куда будет стучаться Telegram
define('WEBHOOK', 'https://test.ru/bot-mamoeb/process.php'); //
# Общая функция для запроса к API Телеграмма
function apiRequest($toSend = array(), $json = true)
{
$ch = curl_init(API_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json ? json_encode($toSend) : $toSend);
if($json)
{
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
}
$a = curl_exec($ch);
return json_decode($a, true);
}
# webhook
function setWebhook($url, $delete = false)
{
$webhook = $delete == true ? 'delete' : $url;
$toSend = array('url' => $webhook, 'method' => 'setWebhook');
return apiRequest($toSend);
}
# Функция выдачи inline-результата
function answerInlineQuery($query_id, $results)
{
$toSend = array('method' => 'answerInlineQuery', 'cache_time' => 0, 'inline_query_id' => $query_id, 'results' => array($results));
return apiRequest($toSend);
}
# Задаем webhook, если скрипт вызван из cli, либо есть get-параметр webhook
if(php_sapi_name() == 'cli' OR isset($_GET['webhook']))
{
var_dump(setWebhook(WEBHOOK));
die;
}
# Начинаем работу, обрабатываем входящий запрос
$content = file_get_contents("php://input");
# Парсим JSON
$update = @json_decode($content, true);
if(!$update)
{
die('Error: invalid JSON');
}
else
{
if(isset($update['inline_query']))
{
# Бот вызван через inline-режим
$_INLINE = $update['inline_query']; // Массив inline-query
$_QUERY = $_INLINE['query']; // Строка запроса. Может быть пустой.
$_QUERY_ID = $_INLINE['id']; // ID inline-query
## Начинаем подбор грязного ругательства
# Открываем плохой файл
$f = file_get_contents('vocabulary.json');
$json = json_decode($f, true) or die('Invalid vocabulary');
# Выбираем случайное
$string = trim($json['curses'][rand(0, count($json['curses']) - 1)]);
# Формируем результат отправки
$results = array('type' => 'article', 'id' => md5(microtime()), 'title' => $string, 'input_message_content' => array('message_text' => $string, 'parse_mode' => 'HTML'));
answerInlineQuery($_QUERY_ID, $results); // Отвечаем
}
}