radyakaze / phptelebot
使用PHP编写的Telegram机器人框架。
Requires
- php: >=5.4
- ext-curl: *
This package is not auto-updated.
Last update: 2024-09-28 20:25:19 UTC
README
使用PHP编写的Telegram机器人框架
特性
- 简单,易于使用。
- 支持长轮询和Webhook。
要求
- cURL
- PHP 5.4+
- Telegram机器人API令牌 - 与@BotFather联系并生成一个。
安装
使用Composer
要使用Composer安装PHPTelebot,只需将以下内容添加到您的composer.json
文件中
{ "require": { "radyakaze/phptelebot": "*" } }
或运行以下命令
composer require radyakaze/phptelebot
Composer将在./vendor/autoloader.php
处安装自动加载器。要将在您的脚本中包含库,请添加
require_once 'vendor/autoload.php';
从源安装
从GitHub下载PHP库,然后在您的脚本中包含PHPTelebot.php
require_once '/path/to/phptelebot/src/PHPTelebot.php';
用法
创建一个简单的机器人
<?php require_once './src/PHPTelebot.php'; $bot = new PHPTelebot('TOKEN', 'BOT_USERNAME'); // Bot username is optional, its required for handle command that contain username (/command@username) like on a group. // Simple command $bot->cmd('*', 'Hi, human! I am a bot.'); // Simple echo command $bot->cmd('/echo|/say', function ($text) { if ($text == '') { $text = 'Command usage: /echo [text] or /say [text]'; } return Bot::sendMessage($text); }); // Simple whoami command $bot->cmd('/whoami|!whoami', function () { // Get message properties $message = Bot::message(); $name = $message['from']['first_name']; $userId = $message['from']['id']; $text = 'You are <b>'.$name.'</b> and your ID is <code>'.$userId.'</code>'; $options = [ 'parse_mode' => 'html', 'reply' => true ]; return Bot::sendMessage($text, $options); }); $bot->run();
然后运行
php file.php
您还可以查看我的其他示例。
注意
- 如果函数参数多于一个,PHPTelebot将按空格分割文本。
- 如果您未设置chat_id,机器人将向当前聊天发送消息。
- 如果您添加了选项reply => true,机器人将回复当前消息(仅在您未设置自定义chat_id和reply_to_message_id时有效)。
命令
使用$bot->cmd(<command>, <function>)
来处理命令。
// simple answer $bot->cmd('*', 'I am a bot'); // catch multiple commands $bot->cmd('/start|/help', function () { // Do something here. }); // call a function name function googleSearch($search) { // Do something here. } $bot->cmd('/google', 'googleSearch');
使用*
来捕获任何命令。
文件上传
当输入命令/upload时,此代码将向用户发送照片。
// Simple photo upload $bot->cmd('/upload', function () { $file = '/path/to/photo.png'; // File path, file id, or url. return Bot::sendPhoto($file); });
事件
使用$bot->on(<event>, <function>)
来处理所有可能的PHPTelebot事件。
要处理内联消息,只需添加
$bot->on('inline', function($text) { $results[] = [ 'type' => 'article', 'id' => 'unique_id1', 'title' => $text, 'message_text' => 'Lorem ipsum dolor sit amet', ]; $options = [ 'cache_time' => 3600, ]; return Bot::answerInlineQuery($results, $options); });
此外,您还可以捕获多个事件
$bot->on('sticker|photo|document', function() { // Do something here. });
支持的事件
- * - 任何类型的消息
- text – 文本消息
- audio – 音频文件
- voice – 语音消息
- document – 文档文件(任何类型)
- photo – 照片
- sticker – 贴纸
- video – 视频文件
- contact – 联系数据
- location – 位置数据
- venue – 场地数据
- edited – 编辑后的消息
- pinned_message – 消息被固定
- new_chat_member – 新成员被添加
- left_chat_member – 成员被移除
- new_chat_title – 新聊天标题
- new_chat_photo – 新聊天照片
- delete_chat_photo – 聊天照片被删除
- group_chat_created – 已创建群组
- channel_chat_created – 已创建频道
- supergroup_chat_created – 已创建超级群组
- migrate_to_chat_id – 群组已迁移到超级群组
- migrate_from_chat_id – 超级群组已从群组迁移
- inline - 内联消息
- callback - 回调消息
- game - 游戏
- channel - 频道
- edited_channel - 编辑后的频道帖子
带有自定义正则表达式的命令 (高级)
创建命令: /regex string number
$bot->regex('/^\/regex (.*) ([0-9])$/i', function($matches) { // Do something here. });
方法
PHPTelebot方法
cmd(<command>, <answer>)
处理命令。
on(<event>, <answer>)
处理事件。
regex(<regex>, <answer>)
为命令创建自定义正则表达式。
Bot::type()
返回消息事件类型。
Bot::message()
获取消息属性。
Telegram 方法
PHPTelebot 使用标准的 Telegram Bot API 方法名称。
Bot::getMe()
?
这是一个测试您的机器人授权令牌的简单方法。
Bot::sendMessage(<文本>, <选项>)
?
使用此方法发送文本消息。
Bot::forwardMessage(<选项>)
?
使用此方法转发任何类型的消息。
Bot::sendPhoto(<文件路径 | 文件ID | URL>, <选项>)
?
使用此方法发送照片。
Bot::sendVideo(<文件路径 | 文件ID | URL>, <选项>)
?
使用此方法发送视频。
Bot::sendAudio(<文件路径 | 文件ID | URL>, <选项>)
?
使用此方法发送音频。
Bot::sendVoice(<文件路径 | 文件ID | URL>, <选项>)
?
使用此方法发送语音消息。
Bot::sendDocument(<文件路径 | 文件ID | URL>, <选项>)
?
使用此方法发送文档。
Bot::sendSticker(<文件路径 | 文件ID | URL>, <选项>)
?
使用此方法发送贴纸。
Bot::sendLocation(<选项>)
?
使用此方法在地图上发送点。
Bot::sendVenue(<选项>)
?
使用此方法发送关于地点的信息。
Bot::sendContact(<选项>)
?
使用此方法发送电话联系人。
Bot::sendChatAction(<动作>, <选项>)
?
当您需要告诉用户机器人的某处正在发生某些事情时,使用此方法。
Bot::getUserProfilePhotos(<用户ID>, <选项>)
?
使用此方法获取用户的个人资料照片列表。
Bot::getFile(<文件ID>)
?
使用此方法获取有关文件的基本信息并准备下载。目前,机器人可以下载最大20MB大小的文件。
Bot::answerInlineQuery(<结果数组>, <选项>)
?
使用此方法发送对内联查询的答案。
Bot::answerCallbackQuery(<文本>, <选项>)
?
使用此方法发送对来自内联键盘的回调查询的答案。
Bot::getChat(<聊天ID>)
?
使用此方法获取有关聊天的最新信息。
Bot::leaveChat(<聊天ID>)
?
使用此方法使您的机器人离开群组、超级群组或频道。
Bot::getChatAdministrators(<聊天ID>)
?
使用此方法获取聊天中管理员列表。
Bot::getChatMembersCount(<chat_id>)
?
使用此方法获取聊天中的成员数量。
Bot::getChatMember(<options>)
?
使用此方法获取聊天成员的信息。
Bot::kickChatMember(<options>)
?
使用此方法将用户从群组或超群中踢出。
Bot::unbanChatMember(<options>)
?
使用此方法在超群中取消之前被踢出的用户的禁令。
Bot::editMessageText(<options>)
?
使用此方法编辑由机器人或通过机器人发送的文本消息(对于内嵌机器人)。
Bot::editMessageCaption(<options>)
?
使用此方法编辑由机器人或通过机器人发送的消息的标题(对于内嵌机器人)。
Bot::editMessageReplyMarkup(<options>)
?
使用此方法仅编辑由机器人或通过机器人发送的消息的回复标记(对于内嵌机器人)。
Bot::sendGame(<game short name>, <options>)
?
使用此方法发送游戏。
Bot::setGameScore(<options>)
?
使用此方法设置指定用户在游戏中的分数。
Bot::getGameHighScores(<user id>, <options>)
?
使用此方法获取高分榜数据。
Webhook安装
通过浏览器打开 https://api.telegram.org/bot<BOT TOKEN>/setWebhook?url=https://yourdomain.com/your_bot.php