/**
 * @return Generator
 * @throws \Steelbot\TelegramBotApi\Exception\TelegramBotApiException
 */
function botCoroutine() : \Generator
{
    $api = new Api(getenv('BOT_TOKEN'));
    $updateId = 1;
    printf("Waiting for updates ...\n");
    while (true) {
        // waiting for updates from telegram server
        /** @var Update[] $updates */
        $updates = (yield from $api->getUpdates($updateId));
        foreach ($updates as $update) {
            $method = processUpdate($update);
            if (is_object($method)) {
                yield from $api->execute($method);
            }
            $updateId = $update->updateId;
        }
    }
}
Exemple #2
0
function iterate($offset)
{
    $file = Api::getUpdates((string) $offset);
    for ($i = 0; $i < count($file); $i++) {
        $current = new Message($file[$i]);
        $offset = max($current->updateId, $offset) + 1;
        $cityLevel = [['Алматы'], ['Астана'], ['Шымкент'], ['Тараз'], ['Кызылорда'], ['Атырау'], ['Актау'], ['Караганда'], ['Павлодар'], ['Семипалатинск'], ['Костанай'], ['Петропавловск'], ['Талдыкорган'], ['Кокшетау']];
        $firstLevel = [['Услуги'], ['Акции'], ['Проверить Баланс'], ['Адреса, контакты'], ['Отправить запрос о неполадках'], ['Приложения АЛМА-ТВ']];
        $secondLevel = [['Телевидение'], ['Интернет'], ['Интернет + ТВ'], ['TV BOX']];
        // $current->reply("Ima got your text with {$current->text()}");
        if ($current->text() == '/start') {
            $current->replyCode('Добро пожаловать! Вас приветствует официальный бот АЛМА-ТВ' . '%0A' . 'Чтобы продолжить выберите ваш город:', $cityLevel);
        }
        if ($current->text() == 'Павлодар') {
            $current->replyDropDown("Выберите:", $firstLevel);
        }
        if ($current->text() == 'Алматы') {
            $current->replyDropDown("Выберите:", $firstLevel);
        }
        if ($current->text() == 'Шымкент') {
            $current->replyDropDown("Выберите:", $firstLevel);
        }
        if ($current->text() == 'Услуги') {
            $current->replyDropDown("Выберите:", $secondLevel);
        }
        if ($current->text() == 'Акции') {
            $current->reply('Уважаемые дамы и господа!' . '%0A' . 'АЛМА-ТВ запускает новогоднюю акцию, которая позволяет сэкономить до 10 000 тенге.' . '%0A' . 'При внесении предоплаты за 12 и более месяцев, предоставляются скидки:' . '%0A' . '-     на пакеты «TV100+» и «Антенна80+» - скидка 18%' . '%0A' . '-      на пакеты «TVMAX» и «AntennaMAX» -скидка в 24%.' . '%0A' . 'Специальное предложение, действует до 31 января 2016 года.');
        }
        if ($current->text() == 'Адреса, контакты') {
            $current->replyDropDown("Выберите:", $secondLevel);
        }
        if ($current->text() == 'Отправить запрос о неполадках') {
            $current->replyDropDown("Выберите:", $secondLevel);
        }
        if ($current->text() == 'Приложения АЛМА-ТВ') {
            $current->reply('Приложение “Alma TV” позволяет получить мгновенный доступ к балансу Вашего счёта, телепрограмме и многому другому. Дополнительно, у пользователя есть возможность отправки заявок на подключение или ремонт в несколько простых шагов.
        Для проверки баланса требуется быть абонентом компании «АЛМА-ТВ», остальные функции доступны всем пользователям. Возможность управления Вашим счётом и множество иных функций появятся в следующих версиях приложения.' . '%0A' . 'Для скачивания приложения ALMA-TV на Android перейдите по ссылке: ' . '%0A' . 'Приложение "TV BOX". Смотрите любимые передачи, как на телевизоре, так и на мобильных устройствах.
        Сортируйте каналы по жанрам, ставьте видео на паузу и перематывайте, выбирайте звуковую дорожку и качество изображения. Подробнее об этих и других функциях TV Box на сайте tv-box.kz' . '%0A' . 'Для скачивания приложения TV BOX на Ваше мобильное устройство, пройдите по ссылкам:', $secondLevel);
        }
        echo "==> Message text {$current->text()} \n\r";
    }
    echo "==> Setup new offset {$offset}\n\r";
    return $offset;
}
 /**
  * Check updates
  *
  * @return void
  */
 public function checkUpdates()
 {
     $updates = json_decode($this->_botApi->getUpdates($this->_lastUpdate->getBotUpdateId()), $assoc = true);
     $this->_updatesHandler->handleBotApiUpdates($updates);
 }
#!/usr/bin/env php
<?php 
require dirname(__DIR__) . '/vendor/autoload.php';
use Icicle\Loop;
use Steelbot\TelegramBotApi\{Api, InlineQueryResult\InlineQueryResultArticle, InputMessageContent\InputContactMessageContent, InputMessageContent\InputLocationMessageContent, InputMessageContent\InputTextMessageContent, InputMessageContent\InputVenueMessageContent, Type\Update};
if (!getenv('BOT_TOKEN')) {
    echo "Error: BOT_TOKEN environment variable not found\n";
    printf("Usage:\n  BOT_TOKEN=123:telegram_bot_token ./%s\n", basename(__FILE__));
    exit(-1);
}
$generator = function () {
    $api = new Api(getenv('BOT_TOKEN'));
    while (true) {
        // waiting for updates from telegram server
        /** @var Update[] $updates */
        $updates = (yield from $api->getUpdates());
        foreach ($updates as $update) {
            if ($update->inlineQuery) {
                $inlineQuery = $update->inlineQuery;
                $results[] = new InlineQueryResultArticle(null, "Text result", new InputTextMessageContent("You entered 1: " . $inlineQuery->query));
                $results[] = new InlineQueryResultArticle(null, "Location result", new InputLocationMessageContent(55.757, 37, 616));
                $results[] = new InlineQueryResultArticle(null, "Venue result", new InputVenueMessageContent(55.757, 37.616, "Venue title", "Venue address"));
                $results[] = new InlineQueryResultArticle(null, "Contact result", new InputContactMessageContent('+0123456789', "First Name"));
                $method = new \Steelbot\TelegramBotApi\Method\AnswerInlineQuery($inlineQuery->id, $results);
                echo "Answering to #{$inlineQuery->id}\n";
                yield from $api->execute($method);
            }
        }
    }
};
$coroutine = new \Icicle\Coroutine\Coroutine($generator());