aliw1382 / telegram-tools
用于构建Telegram机器人的工具包
2.0.0
2023-09-14 09:10 UTC
Requires
- php: >=8.0
- ext-curl: *
- guzzlehttp/guzzle: ^7.2
- illuminate/support: ~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^7.0|^8.0|^9.0
README
关于包
本包处于测试版本,可能存在问题!
本包旨在使构建Telegram机器人的开发者能够轻松快速地编写代码。
本包由Ali Shahmohammadi开发和设计。
需求
- guzzlehttp/guzzle ^7.*
- illuminate/support ~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0
- php >= 7.4
安装 ✨
要在您的Laravel项目中安装并接收此包,请在项目路径的终端中执行以下命令。
$ composer require aliw1382/telegram-tools
添加服务提供者
打开文件config/app.php
,并将以下值添加到其中。
服务提供者
'providers' => [ // ...... Aliw1382\TelegramTools\Providers\TelegramToolsServiceProvider::class, // ...... ]
别名
'aliases' => [ // ...... 'Telegram' => Aliw1382\TelegramTools\Facades\Telegram::class, // ...... ]
发布配置
$ php artisan vendor:publish --tag=config-telegram-tools
然后创建文件config/telegram.php
。
'telegram-bot-api' => [ 'token' => env( 'TELEGRAM_API_TOKEN' ) ]
.env文件
添加此.env
文件,并将从Bot Father接收到的令牌放在此处。
TELEGRAM_API_TOKEN=
用法
- 第一种方法
telegram()->sendMessage( [ 'chat_id' => 'YOUR CHAT ID', 'text' => 'YOUR CONTENT TEXT' // .... ] ); telegram( 'Your Other Token Bot' )->sendMessage( [ 'chat_id' => 'YOUR CHAT ID', 'text' => 'YOUR CONTENT TEXT' // .... ] );
如果您使用
telegram()
,我们将使用您的.env
令牌机器人。
- 第二种方法
telegram()->sendMessage()->to( 'YOUR CHAT ID' )->content( 'YOUR CONTENT TEXT' )->send(); telegram( 'Your Other Token Bot' )->sendMessage()->to( 'YOUR CHAT ID' )->content( 'YOUR CONTENT TEXT' )->send();
例如,使用键盘和解析模式发送SendMessage
// Keyboard telegram()->sendMessage()->to( 'YOUR CHAT ID' )->content( 'YOUR CONTENT TEXT' )->parseMode( 'html' )->button( 'Button 1' )->button( 'Button 2' )->send(); // Inline Keyboard telegram()->sendMessage()->to( 'YOUR CHAT ID' )->content( 'YOUR CONTENT TEXT' )->parseMode( 'MarkdownV2' )->button( 'Google' , 'https://google.com' )->buttonWithCallback( 'Button 1' , 'Your Callback Data' )->send();
- 第三种方法
\Telegram::sendMessage( 'YOUR CHAT ID', 'YOUR CONTENT TEXT' );
或
use Aliw1382\TelegramTools\Facades\Telegram; Telegram::sendMessage( 'YOUR CHAT ID', 'YOUR CONTENT TEXT' );
例如,使用键盘和解析模式发送SendMessage
use Aliw1382\TelegramTools\Facades\Telegram; Telegram::sendMessage( 'YOUR CHAT ID', 'YOUR CONTENT TEXT', Telegram::buildKeyBoard( [ [ Telegram::buildKeyboardButton( 'Button 1' ), Telegram::buildKeyboardButton( 'Button 2' , true ), // for request contact ] ] ) , 'html' ); Telegram::sendMessage( 'YOUR CHAT ID', 'YOUR CONTENT TEXT', Telegram::buildInlineKeyBoard( [ [ Telegram::buildInlineKeyboardButton( 'Google' ,'https://google.com'), Telegram::buildInlineKeyboardButton( 'Button 1' , '','Your CALLBACK DATA' ), // or Telegram::buildInlineKeyboardButton( text: 'Button 2' ,callback_data: 'Your CALLBACK DATA' ), ] ] ) , 'html' );
✨希望您喜欢这个包✨
源代码编程
此功能在2.0.0版本中启用!
好吧,现在是时候处理机器人的/start
命令了。
首先,您需要创建一个类来编写您的机器人。您可以使用以下命令创建一个用于发送给机器人的消息的类。
$ php artisan telegram:command StartMessage --type=Message
创建命令后,您需要将其引入程序,为此,请进入文件config/telegram.php
,并将创建的类的地址添加到其中。
'commands' => [ App\Telegram\StartMessage::class, // Commands Class ]
此类实例用于处理机器人的/start
消息并对其进行响应。
<?php namespace App\Telegram; use Aliw1382\TelegramTools\Attribute\TelegramAttribute; use Aliw1382\TelegramTools\Contracts\Abstract\AbstractTelegramMessage; use Aliw1382\TelegramTools\Vendor\TelegramUpdate; class StartMessage extends AbstractTelegramMessage { #[TelegramAttribute( '/start' )] public function myMethod( TelegramUpdate $update ) { telegram()->sendMessage( [ 'chat_id' => $update->ChatID(), 'text' => 'Hello Welcome To Bot!' ] ); } }
例如,如果您想处理一个未知单词,可以使用*
代替。
例如:我们想要处理单词/help
,但用户可能会发送/hel
<?php namespace App\Telegram; use Aliw1382\TelegramTools\Attribute\TelegramAttribute; use Aliw1382\TelegramTools\Contracts\Abstract\AbstractTelegramMessage; use Aliw1382\TelegramTools\Vendor\TelegramUpdate; class StartMessage extends AbstractTelegramMessage { #[TelegramAttribute( '/hel*' )] public function myMethod( TelegramUpdate $update ) { telegram()->sendMessage( [ 'chat_id' => $update->ChatID(), 'text' => 'Help Message ...' ] ); } }
一个关于回调查询的例子
$ php artisan telegram:command CallBackQueryHandler --type=CallbackQuery
向config/telegram.php
添加新类
<?php namespace App\Telegram; use Aliw1382\TelegramTools\Attribute\TelegramAttribute; use Aliw1382\TelegramTools\Contracts\Abstract\AbstractTelegramCallbackQuery; use Aliw1382\TelegramTools\Vendor\TelegramUpdate; class CallBackQueryHandler extends AbstractTelegramCallbackQuery { #[TelegramAttribute( 'mention-*' )] public function exampleMethod( TelegramUpdate $update ) { telegram()->editMessageText( [ 'chat_id' => $update->ChatID(), 'message_id' => $update->MessageID(), 'text' => 'You Mention The User <a href="tg://user=' . $update->CallbackDataArray()[ 1 ] . '">' . $update->CallbackDataArray()[ 1 ] . '</a>' ] ); } }
如果我们发送数据mention-123456
,那么我们提到了用户123456
历史
有关最近更改的更多信息,请参阅历史。
安全
如果您发现任何与安全相关的问题,请通过电子邮件aliw1382@gmail.com联系,而不是使用问题跟踪器。
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。