webpajooh/telebot

一个用于开发新Telegram机器人的最小化库

v1.7.0 2024-02-10 19:57 UTC

This package is auto-updated.

Last update: 2024-09-27 16:58:37 UTC


README

Latest Stable Version Total Downloads PHP Version Require License

TeleBot

一个用于开发新Telegram机器人的最小化库

安装

composer require webpajooh/telebot

如何使用

起点

我们从创建一个 TeleBot 类的实例开始

try {
    $tg = new TeleBot('YOUR_BOT_TOKEN');
} catch (Throwable $th) {...}

获取更新对象

有一些简短的方法可以访问 update 对象和一些重要的字段。我建议你阅读 官方文档,以更好地理解这些对象。

$tg->update
$tg->message
$tg->chat
$tg->user

当你想检查 update 对象是否有 callback_query 字段时,也可以使用 hasCallbackQuery() 方法。

方法

通过 魔术方法,我们可以使用API方法而不必实现它们,只需按名称调用并传递一个数组作为参数

$tg->editMessageText([...])

路由器

你可以定义一些路由到你的机器人功能;通过 listen() 方法定义它们

$tg->listen('/start', function () use ($tg) {
    $tg->sendMessage([
        'chat_id' => $tg->user->id,
	'text' => 'Hello, world!',
    ]);
}, false);

默认情况下为true的第三个参数,使你能够在运行命令后终止脚本。在上一个例子中,我们传递了false,因此脚本继续。

你还可以获取参数并使用它们作为变量

$tg->listen('set_age_%d', function ($age) use ($tg) {
    // TODO
});

TeleBot将它们转换为正则表达式,所以查看这个表格以了解如何正确使用它们会很好

记录器

你可能需要将某些内容记录到 log.txt 文件中

Logger::log($tg->user->id);
tl($tg->user->id); // Does the same thing

键盘

TeleBot包括两个用于创建键盘的类;InlineKeyboardReplyKeyboard。这里有一个例子

$keyboard = (new InlineKeyboard())
    ->addCallbackButton('📕 Help', 'help_callback')
    ->addUrlButton('📱 Share', 'https://t.me/share/url?url=https://t.me/your_awesome_bot&text=Some text')
    ->chunk(1)
    ->rightToLeft()
    ->get();

然后你可以像下面这样使用它

$tg->sendMessage([
    // Other parameters
    'reply_markup' => $keyboard,
]);

请注意,chunk() 方法支持更复杂的顺序,只需传递一个如 [1, 3, 2] 的数组来构建这样的键盘

[        1        ]  
[ 2 ]  [ 3️ ]  [ 4 ]  
[   5   ] [   6   ]  

默认参数

有时你不想在每个地方重复传递参数,因此可以为每个方法定义默认参数。这里有三个例子,清楚地说明了如何使用它

$tg->setDefaults('sendMessage', ['parse_mode' => 'html']); // You will not need passing parse_mode anymore
$tg->setDefaults(['sendMessage', 'banChatMember'], ['chat_id' => $chatId]);
$tg->setDefaults('*', ['chat_id' => $chatId]); // a default parameter for all methods

扩展它!

你可能想向 TeleBot 类添加一些方法来提高代码的可读性并避免重复。看看这个简单的例子作为灵感

TeleBot::extend('isReply', function () {
    return property_exists($this->message, 'reply_to_message');
});

if ($tg->isReply()) { ... }

你看到问题了吗?

创建一个问题并解释你的问题!

由TeleBot制作