banghasan/framebot

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

维护者

详细信息

github.com/banghasan/framebot

源代码

安装: 46

依赖: 0

建议者: 0

安全: 0

星标: 5

关注者: 2

分支: 66

类型:框架

1.5 2017-01-05 14:11 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:55:58 UTC


README

Telegram机器人框架,使用PHP编写,是已修改的PHPTelebot,以适应内部项目需求。

目的

作为III Bot Telegram - 最终版电子书的内容!

功能

  • 简单易用。
  • 支持长轮询和Webhook。

附加功能

  • 支持会话初始化(用于会话)。
  • 支持会话终止(用于会话存储等)。

需求

安装

使用Composer

使用Composer安装Framebot,在composer.json文件中添加以下内容:

{
    "require": {
        "banghasan/framebot": "*"
    }
}

或者通过CLI运行以下命令

composer require banghasan/framebot

Composer将在./vendor/autoloader.php中安装自动加载器。为了将其包含到代码中,请添加

require_once 'vendor/autoload.php';

从源代码安装

从GitHub下载Framebot,然后在你的脚本中包含FrameBot.php

require_once '/path/to/framebot/src/FrameBot.php';

用法

创建一个简单的机器人

<?php

require_once './src/FrameBot.php';
$bot = new FrameBot('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

你还可以看到我的其他示例

注意

  • 如果函数参数多于一个,FrameBot将按空格分割文本。
  • 如果你没有设置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>)来处理所有可能的FrameBot事件。

要处理内联消息,只需添加

$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 字符串 数字

$bot->regex('/^\/regex (.*) ([0-9])$/i', function($matches) {
    // Do something here.
});

方法

FrameBot 方法

cmd(<命令>, <回答>)

处理命令。

on(<事件>, <回答>)

处理事件。

regex(<正则表达式>, <回答>)

为命令创建自定义正则表达式。

Bot::type()

返回 消息事件 类型。

Bot::message()

获取 消息属性

Telegram 方法

FrameBot 使用标准的 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::sendAction(<操作>, <选项>) ?

当您需要告诉用户机器人的某侧正在发生某些事情时,请使用此方法。

Bot::getUserProfilePhotos(<用户ID>, <选项>) ?

使用此方法获取用户的个人资料照片列表。

Bot::getFile(<文件ID>) ?

使用此方法获取有关文件的基本信息并准备下载。目前,机器人可以下载最多 20MB 大小的文件。

Bot::answerInlineQuery(<结果数组>, <选项>) ?

使用此方法发送对内联查询的答案。

Bot::answerCallbackQuery(<文本>, <选项>) ?

使用此方法来回复来自内联键盘发送的回调查询。

Bot::getChat(<chat_id>) ?

使用此方法获取聊天最新信息。

Bot::leaveChat(<chat_id>) ?

使用此方法使您的机器人离开群组、超群或频道。

Bot::getChatAdministrators(<chat_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