webpajooh / telebot
一个用于开发新Telegram机器人的最小化库
v1.7.0
2024-02-10 19:57 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
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包括两个用于创建键盘的类;InlineKeyboard
和 ReplyKeyboard
。这里有一个例子
$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()) { ... }
你看到问题了吗?
创建一个问题并解释你的问题!