Как улучшить бота telegram?

Делаю бота для telegram!

Суть бота: другим ботам давать готовый набор функции(рассылки).

Столкнулся с такой проблемой: файл нового бота создается, но взамен выполнения отображается сам код.

Вот сам код:
<?php
header('Content-Type: text/html; charset=utf-8');

require 'vendor/autoload.php';

$token = "111111:TOK-EN";
$bot = new \TelegramBot\Api\Client($token);

if(!file_exists("registered.trigger")){
    $page_url = "https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    $result = $bot->setWebhook($page_url);
    # GET RESULT
    if($result){
        file_put_contents("registered.trigger",time()); // CREATE FILE
    }
}

$bot->callbackQuery(function ($callbackQuery) use ($bot) {
    switch ($callbackQuery->getData()){
        case 'lets_go':
    		$msg = "1. Перейдите в @BotFather и создайте нового бота.\n\n2. Скиньте токен созданного бота(такого вида 123456:ABC-DEf1234gh...), используй команду /sendtoken <token>";
    		$id = $callbackQuery->getMessage()->getChat()->getId();
    		file_put_contents("step_$id.trigger", time());
    		break;

    	default:
    	    $msg = 'BOT.ERROR #019101801';
    	    break;
    }

    $bot->sendMessage($callbackQuery->getMessage()->getChat()->getId(), $msg);
});

$bot->command('start', function ($message) use ($bot) {
    $key = new \TelegramBot\Api\Types\Inline\InlineKeyboardMarkup([
    	[
    	    ['callback_data' => 'lets_go', 'text' => 'Начнем']
        ]
    ]);
    $answer = "Я помогаю контроллировать сотрудников через чаты.\n\nНапоминаю нужны людям в нужные дни, что им нужно делать. Попробуй меня и напиши @alantsoff отзыв обо мне.";
    $bot->sendMessage($message->getChat()->getId(), $answer, null, false, null, $key);
});

$bot->command('sendtoken', function ($message) use ($bot) {
	$newbot_token = str_replace('/sendtoken ', '', $message->getText());
    $name = (int) filter_var($newbot_token, FILTER_SANITIZE_NUMBER_INT);
	if($newbot_token !== ''){
		if(!file_exists("bots/bot_$name.php")){
			$l1 = 'header(\'Content-Type: text/html; charset=utf-8\');';
            $l2 = 'require \'vendor/autoload.php\';';
			$l3 = '$token = '.$newbot_token.';';
			$l4 = '$bot = new \TelegramBot\Api\Client($token);';
			$l5 = 'if(!file_exists("registered_'.$name.'.trigger")){';
    		$l6 = '$page_url = "https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]."bots/bot_'.$name.'.php";';
    		$l7 = '$result = $bot->setWebhook($page_url);';
    		$l8 = 'if($result){';
        	$l9 = 'file_put_contents("registered_'.$name.'.trigger",time());';
    		$l10 = '}';
			$l11 = '}';
			$l12 = '$bot->command(\'start\', function ($message) use ($bot) {';
    		$l13 = '$answer = "Дороу";';
    		$l14 = '$bot->sendMessage($message->getChat()->getId(), $answer);';
			$l15 = '});';
			$code = $l1 . ' ' . $l2. ' ' . $l3. ' ' . $l4. ' ' . $l5. ' ' . $l6. ' ' . $l7. ' ' . $l8. ' ' . $l9. ' ' . $l10. ' ' . $l11. ' ' . $l12. ' ' . $l13. ' ' . $l14. ' ' . $l15;
            $file = "./bots/bot_$name.php";
            file_put_contents($file, $code);
            $c = curl_init("https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]."bots/bot_$name.php");
            curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
			$result = curl_exec($c);
			if($result) $bot->sendMessage($message->getChat()->getId(), 'Готово');
		}
	}else{
		$bot->sendMessage($message->getChat()->getId(), 'Укажите токен!');
	}
});

$bot->run();


И если не сложно, дайте подсказку, как избавится от говнокода
  • Вопрос задан
  • 188 просмотров
Решения вопроса 2
l3ftoverz
@l3ftoverz Куратор тега PHP
Dance Gavin Dance - Inspire The Liars
Я вообще не вижу смысла в генерации этих файлов, если можно сделать один, который бы принимал нужные параметры на входе.

Если очень хочется в строку пихать код - я бы использовал HERE DOC.
Использовать CURL для того, что бы дёрнуть файл - очень глупо, можно обойтись одним file_get_contents, а можно вообще запустить скрипт в CLI, но самый первый вариант, с одним файлом - зе бест.

Почему твой код не работает? - Фиг знает, сложно смотреть на эту кашу, разбираться и дебажить код в голове не хочется.
дайте подсказку, как избавится от говнокода
Удалить весь код, написать по-нормальному.
Ответ написан
@djtelega
файл php для исполнения должен содержать код внутри <?php ?> либо начинаться с похожей строки: #!/sbin/php
т.е. в Вашем случае должно быть достаточно изменить эту строку:
$code = $l1 . ' ' . $l2. ' ' . $l3. ' ' . $l4. ' ' . $l5. ' ' . $l6. ' ' . $l7. ' ' . $l8. ' ' . $l9. ' ' . $l10. ' ' . $l11. ' ' . $l12. ' ' . $l13. ' ' . $l14. ' ' . $l15;

на такую:
$code = '<?php ' . $l1 . ' ' . $l2. ' ' . $l3. ' ' . $l4. ' ' . $l5. ' ' . $l6. ' ' . $l7. ' ' . $l8. ' ' . $l9. ' ' . $l10. ' ' . $l11. ' ' . $l12. ' ' . $l13. ' ' . $l14. ' ' . $l15 . ' ?>';
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SymbioWay Москва
от 120 000 до 180 000 ₽
Директ Кредит Казань
от 70 000 до 120 000 ₽
ИМАГ Москва
от 90 000 до 100 000 ₽
14 авг. 2020, в 02:27
1000 руб./за проект
14 авг. 2020, в 01:51
600 руб./за проект
13 авг. 2020, в 23:56
200000 руб./за проект