TelegramBot / Api

Native PHP Wrapper for Telegram BOT API
MIT License
1.1k stars 325 forks source link

Непонятно как работает в laravel #89

Closed VendigoCode closed 7 years ago

VendigoCode commented 7 years ago

Непонятно как вообще работает код ) `try { $bot = new \TelegramBot\Api\Client('*****');

$bot->command('ping', function ($message) use ($bot) {
    $bot->sendMessage($message->getChat()->getId(), 'pong!');
});

$bot->run();

} catch (\TelegramBot\Api\Exception $e) { $e->getMessage(); }`

Если использовать $bot->sendMessage() с указанием id чата и сообщением - все отправляется, отправляются и инлайновые элементы, непонятно только каким образом получаем команду? Пробовал и ping и /ping webhook для домена стоит, пробный скрипт отрабатывает хорошо, а вот с этим примером никак не могу разобраться. Единственное что приходит в голову - это вручную разбирать пришедший json, и в зависимости от того что пришло - выбирать нужное действие, но тогда все будет на одном большом switch. Может я что-то делаю не так?

iGusev commented 7 years ago

Так и есть, либо общая точка входа с роутингом в нужные места, где расположена логика команд, либо все в одном месте

VendigoCode commented 7 years ago

Тогда правильно ли я понимаю что необходимо получить для начала $message, для того чтобы данный участок кода выполнился? $bot->command('ping', function ($message) use ($bot) { $bot->sendMessage($message->getChat()->getId(), 'pong!'); });

iGusev commented 7 years ago

да, этим и занимается $bot->run();.

class TelegramController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function webhook(Request $request)
    {
        $token = 'TOKEN_HERE'

        $bot = new Client($token);
        /** @var BotApi $bot */
        $bot = $this->bot;
        $bot->command('ping', function (Message $message) use ($bot) {
            /** @var BotApi $bot */
            $bot->sendMessage($message->getChat()->getId(), 'pong!');
        });

        $bot->run();

        return new JsonResponse($token);
    }
}
Route::post('/api/v1/telegram', 'Telegram\TelegramController@webhook');
VendigoCode commented 7 years ago

Вы не могли бы добавить полностью пример только с ping - pong на laravel? Я уверен что после этого все дальнейшие вопросы по использованию библиотеки в laravel отпадут!

iGusev commented 7 years ago

Вот же выше

TheMY3 commented 7 years ago

@Troinik честно, не вижу разницы где использовать эту библиотеку, везде подключение будет одинаковое, точку входа указали и всё.

VendigoCode commented 7 years ago

Все норм, все работает, сам протупил. Спасибо :)