radyakaze/phptelebot

使用PHP编写的Telegram机器人框架。

安装: 675

依赖: 0

建议者: 0

安全: 0

星星: 67

观察者: 10

分支: 66

开放问题: 6

类型:框架

v1.3 2016-11-29 03:50 UTC

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