aliw1382/telegram-tools

用于构建Telegram机器人的工具包

2.0.0 2023-09-14 09:10 UTC

This package is auto-updated.

Last update: 2024-09-14 11:14:19 UTC


README

Laravel Telegram Tools

波斯语文档

关于包

本包处于测试版本,可能存在问题!

本包旨在使构建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)。有关更多信息,请参阅许可文件