nikserg/telegram-bot-api

Telegram Bot API的PHP包装器。新增对poll_answer的支持

v2.3.19 2020-09-04 09:43 UTC

README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

一个扩展的原生php包装器,无需额外要求即可用于Telegram Bot API。支持所有方法和响应类型。

分支说明

原始包不支持poll_answer消息。已添加此支持。

机器人:开发者简介

机器人是专为自动处理消息而设计的特殊Telegram账户。用户可以通过在私聊或群聊中发送命令消息与机器人互动。

您可以通过HTTPS请求到机器人API来控制您的机器人。

机器人API是一个基于HTTP的接口,专为对构建Telegram机器人感兴趣的开发者创建。有关创建和设置机器人的方法,请参阅机器人简介机器人常见问题解答

安装

通过Composer

$ composer require telegram-bot/api

用法

请参阅示例DevAnswerBot(俄语)。

API包装器

发送消息

$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN');

$bot->sendMessage($chatId, $messageText);

发送文档

$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN');

$document = new \CURLFile('document.txt');

$bot->sendDocument($chatId, $document);

发送带回复键盘的消息

$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN');

$keyboard = new \TelegramBot\Api\Types\ReplyKeyboardMarkup(array(array("one", "two", "three")), true); // true for one-time keyboard

$bot->sendMessage($chatId, $messageText, null, false, null, $keyboard);

发送带内联键盘的消息

$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN');

$keyboard = new \TelegramBot\Api\Types\Inline\InlineKeyboardMarkup(
            [
                [
                    ['text' => 'link', 'url' => 'https://core.telegram.org']
                ]
            ]
        );
        
$bot->sendMessage($chatId, $messageText, null, false, null, $keyboard);

发送媒体组

$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN');

$media = new \TelegramBot\Api\Types\InputMedia\ArrayOfInputMedia();
$media->addItem(new TelegramBot\Api\Types\InputMedia\InputMediaPhoto('https://avatars3.githubusercontent.com/u/9335727'));
$media->addItem(new TelegramBot\Api\Types\InputMedia\InputMediaPhoto('https://avatars3.githubusercontent.com/u/9335727'));
// Same for video
// $media->addItem(new TelegramBot\Api\Types\InputMedia\InputMediaVideo('http://clips.vorwaerts-gmbh.de/VfE_html5.mp4'));
$bot->sendMediaGroup($chatId, $media);

客户端

require_once "vendor/autoload.php";

try {
    $bot = new \TelegramBot\Api\Client('YOUR_BOT_API_TOKEN');
    // or initialize with botan.io tracker api key
    // $bot = new \TelegramBot\Api\Client('YOUR_BOT_API_TOKEN', 'YOUR_BOTAN_TRACKER_API_KEY');
    

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

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

Botan SDK(不再支持)

Botan是基于Yandex.Appmetrica的Telegram机器人分析系统。在此文档中,您可以找到如何设置Yandex.Appmetrica账户以及Botan SDK的使用示例。

创建账户

  • http://appmetrica.yandex.com/注册
  • 注册后,您将被提示创建应用程序。请使用@YourBotName作为名称。
  • 从设置页面保存API密钥,您将使用它作为Botan API调用的令牌。
  • 下载您语言的库,并按以下说明使用。不要忘记插入您的令牌!

由于我们刚开始,您可能会发现一些现有的AppMetriсa报告在Telegram机器人中不能正常工作,例如地理、性别、年龄、库、设备、流量来源和网络部分。我们将在以后进行完善。

SDK使用

独立

$tracker = new \TelegramBot\Api\Botan('YOUR_BOTAN_TRACKER_API_KEY');

$tracker->track($message, $eventName);

API包装器

$bot = new \TelegramBot\Api\BotApi('YOUR_BOT_API_TOKEN', 'YOUR_BOTAN_TRACKER_API_KEY');

$bot->track($message, $eventName);

您可以使用getUpdates()方法,所有传入的消息都将自动跟踪为Message事件

客户端

$bot = new \TelegramBot\Api\Client('YOUR_BOT_API_TOKEN', 'YOUR_BOTAN_TRACKER_API_KEY');

所有注册的命令将自动跟踪为命令名称

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

测试

$ composer test

贡献

请参阅CONTRIBUTING以获取详细信息。

安全

如果您发现任何安全问题,请通过mail@igusev.ru发送电子邮件,而不是使用问题跟踪器。

致谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。