Комментарии 18
НЛО прилетело и опубликовало эту надпись здесь
Задумка статьи интересная, спасибо!
За такое нужно руки отрывать в 2к19
За такое нужно руки отрывать в 2к19
global $tg_bot_token;
+5
Всегда пожалуйста.
0
Если своим сообщением вы хотите сделать мир лучше, то правильно было бы сразу привести примет верного подхода в данном случае.
А так выглядит как хвастовство: «Смотрите какой-то говнокодер, не то что я! :)»
А так выглядит как хвастовство: «Смотрите какой-то говнокодер, не то что я! :)»
-2
Не думал, что нужно пояснять такие очевидные вещи.
Этот код можно решить в несколько путей:
1. В функции добавить еще один входной параметр в функцию:
2. Использовать классы и создать класс похожего типа:
Запросы на сервер не нужно отправлять через file_get_contents, лучше использовать Guzzle.
function Send_Out($user_id, $text, $is_end = true)
{
global $tg_bot_token;
if (strlen($user_id) < 1 || strlen($text) < 1) {return;}
$json = file_get_contents('https://api.telegram.org/bot' . $tg_bot_token . '/sendMessage?chat_id=' . $user_id . '&text=' . $text);
}
Этот код можно решить в несколько путей:
1. В функции добавить еще один входной параметр в функцию:
function Send_Out($tg_bot_token, $user_id, $text, $is_end = true)
{
if (strlen($user_id) < 1 || strlen($text) < 1) {return;}
$json = file_get_contents('https://api.telegram.org/bot' . $tg_bot_token . '/sendMessage?chat_id=' . $user_id . '&text=' . $text);
}
2. Использовать классы и создать класс похожего типа:
class TelegramClient
{
private $botToken;
function __construct(string $botToken)
{
$this->botToken = $botToken;
}
public function sendMessage(int $userId, string $message, bool $isEnd = true): void
{
if ($userId < 1 || mb_strlen($message) < 1) {
throw new TelegramClientException(...);
}
$json = file_get_contents('https://api.telegram.org/bot' . $tg_bot_token . '/sendMessage?chat_id=' . $user_id . '&text=' . $text);
}
}
Запросы на сервер не нужно отправлять через file_get_contents, лучше использовать Guzzle.
+4
А можно все завернуть в классы и сделать так:
include_once 'webhook_class.php';
$tg_bot_token = "_____YOUR_BOT_TOKEN_____";
$Telegram_Cli = new Telegram_Cli_Class($tg_bot_token);
$Webhook = new Webhook_Class();
$Webhook->Set_Type('telegram');
$Webhook->Get_Data();
$Webhook->Parse_Data();
$Webhook->Parse_Tokens();
if ($Webhook->is_Out())
{
$Telegram_Cli->Send($Webhook->user_id, $Webhook->out_msg);
}
}
-2
Готовые примеры для чего это может быть полезно, где-то есть посмотреть?
0
Код конечно печальный, но плюсанул за актуальную тематику. Если б не она, то вас бы слили (может еще и сольют).
+1
Не знаю что Вы… до парня на счет кода. Как смог так написал. (Я уверен, что если сделаете более читаемый код, он не откажется и опубликует и его.)
Благодарю за статью, ты заинтересовал меня в возможностях «Алисы».
Благодарю за статью, ты заинтересовал меня в возможностях «Алисы».
0
Да что вы прикопались к коду?
Нормальный первоапрельский код.
Ну а если серьёзно, KillerAngel, не используйте глобальные переменные.
Почитайте про чистые функции и почему нужно стремиться писать именно чистые функции.
Почитайте про ООП, с помощью него можно лучше структурировать код.
И не забывайте про многобайтовые кодировки, вы же с PHP работаете (mb_strlen
, например).
+1
А я и не использую, ну почти.
Про ООП читал.
Про кодировки — да, когда срезал всю шелуху, упустил strlen
Все переделал, теперь все вот так, что один что другой скрипт:
Про ООП читал.
Про кодировки — да, когда срезал всю шелуху, упустил strlen
Все переделал, теперь все вот так, что один что другой скрипт:
include_once 'webhook_class.php';
$Yandex_Alice_Cli = new Yandex_Alice_Cli_Class();
$Webhook = new Webhook_Class();
$Webhook->Set_Type('yandex_alice');
$Webhook->Get_Data();
$Webhook->Parse_Data();
$Webhook->Parse_Tokens();
if ($Webhook->is_Out())
{
$Yandex_Alice_Cli->Set_Sess_Id($Webhook->data_msg_sess_id);
$Yandex_Alice_Cli->Send($Webhook->user_id, $Webhook->out_msg);
}
0
Идея хорошая, кому не нравится, сделайте лучше.
А вообще, у меня была подобная проблема, когда я писал единого бота для VK&Discord&LINE.
Однако, там я решил эту проблему, написав несколько «драйверов», которые формировали единый JSON-массив и отправляли его в RabbitMQ, а на стороне считывания уже работал с этими стандартизированными данными. Так что, вам есть к чему стремиться.
А вообще, у меня была подобная проблема, когда я писал единого бота для VK&Discord&LINE.
Однако, там я решил эту проблему, написав несколько «драйверов», которые формировали единый JSON-массив и отправляли его в RabbitMQ, а на стороне считывания уже работал с этими стандартизированными данными. Так что, вам есть к чему стремиться.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Яндекс.Алиса и бот Telegram на PHP с единым функционалом