Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/arodu/cakephp-tebo
CakePHP plugin for Telegram Bot
https://github.com/arodu/cakephp-tebo
Last synced: about 1 month ago
JSON representation
CakePHP plugin for Telegram Bot
- Host: GitHub
- URL: https://github.com/arodu/cakephp-tebo
- Owner: arodu
- License: mit
- Created: 2022-04-14T12:09:14.000Z (over 2 years ago)
- Default Branch: 2.next-cake5
- Last Pushed: 2024-11-19T12:49:05.000Z (about 2 months ago)
- Last Synced: 2024-11-19T13:47:37.770Z (about 2 months ago)
- Language: PHP
- Homepage: https://packagist.org/packages/arodu/tebo
- Size: 160 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TeBo: CakePHP plugin for Telegram Bot
> [!WARNING]
> This plugin is under development and not ready for production.TeBo is a plugin that integrates a Telegram bot into CakePHP 5 applications, allowing configuration and management of custom commands with an easy setup.
## Installation
1. Install the plugin using Composer:
```bash
composer require arodu/tebo
```2. Load the plugin in your project:
```bash
bin/cake plugin load TeBo
```3. Add your Telegram bot token to the `.env` file:
```bash
export TELEGRAM_TOKEN="xxxxx"
```## Webhook Configuration
TeBo offers commands to manage the webhook setup in Telegram. To run these commands, use:
```bash
bin/cake tebo
```The available options are:
1. **Get Webhook URL**: Displays the current webhook URL configured on the local system.
2. **Set Webhook to Telegram**: Sets the webhook on Telegram, linking the bot to a specific URL to receive updates.
3. **Get Webhook Info from Telegram**: Shows information about the webhook configured on Telegram, including status and connection details.### Additional Configuration (Optional)
You can add the following values to the `.env` file to enhance webhook functionality:
```bash
export WEBHOOK_OBFUSCATION="your_obfuscation_key_here"
export WEBHOOK_BASE="your_base_url_here"
```- **WEBHOOK_OBFUSCATION**: Obfuscates the webhook URL, adding an additional security layer.
- **WEBHOOK_BASE**: Sets the base domain for the webhook URL. If not specified, `127.0.0.1` is used, which is incompatible with the Telegram API.## Bot Testing
Once the webhook and token are configured, the bot should be ready to work. You can test it on Telegram using the following commands:
- `/start`
- `/hello`
- `/about`## Customization
To customize the bot's options, you can create a configuration file in `config/tebo.php` with the following structure:
```php
[
'webhookUrl' => [ // Specifies the webhook route, useful for custom development.
'plugin' => 'TeBo',
'controller' => 'Bot',
'action' => 'webhook',
],
'obfuscation' => env('WEBHOOK_OBFUSCATION', null), // Sets the webhook URL obfuscation.
'command' => [
'mapper' => [ // Command mapping, allowing for custom commands.
'default' => \TeBo\TeBo\Command\DefaultCommand::class, // Default command if no other command is found.
'start' => \TeBo\TeBo\Command\Start::class,
'about' => \TeBo\TeBo\Command\About::class,
'hello' => \TeBo\TeBo\Command\Hello::class,
],
'namespaces' => [
'\App\TeBo\Command', // Defines additional namespaces for custom commands.
// Command classes must match commands; for example, `/prices` should correspond to `\App\TeBo\Command\Prices` and implement `\TeBo\TeBo\CommandInterface`.
],
],
],
];
```## Usage
The plugin provides a default command that can be extended to create custom commands. To create a new command, follow these steps:
1. Create a new command class in the `src/Command` directory.
2. Extend from `TeBoCommand` or Implement the `CommandInterface` interface.
3. Add the command to the `config/tebo.php` file.```php
getChat()->send(new \TeBo\Telegram\Response\TextMessage('The current prices are: $100'));
}
}
```To add the command to the configuration file:
```php
'command' => [
'mapper' => [
'prices' => \App\TeBo\Command\Prices::class,
],
],
```After adding the command, you can test it by sending `/prices` to the bot.
### Send an HTML Formatted Message
To send a message with HTML formatting, use HtmlMessage:```php
$update->reply(new \TeBo\Telegram\Response\HtmlMessage([
'HTML Message',
'',
'This is an example of an HTML message.',
'You can use basic HTML tags to format the text.',
'Example: bold, italic, link',
'Refer to Telegram API documentation for more info.',
]));
```In this example, HTML tags such as ``, ``, ``, and `
` are supported for text formatting.
### Send a Photo
- **Example 1**: Send a Local Photo
If the image is stored locally, use the path to the image file:```php
$file = fopen(TEBO_CORE_PATH . DS . '/resources/tebo.jpg', 'rb');
$photo = new \TeBo\Telegram\Response\Photo($file, 'This is a placeholder image.');
$update->reply($photo);
```- **Example 2**: Send a Photo from a URL with a Caption
You can also send a photo from a URL with a custom caption:```php
$photo = new \TeBo\Telegram\Response\Photo('https://placehold.it/300x200');
$update->reply($photo);
```### Sending with a chat ID
To send a message to a specific chat ID, use the following code:
```php
$chatId = '12345678'; // The Telegram chat ID to send the message to
$chat = new \TeBo\Telegram\Chat(['id' => $chatId]); // Creates a Chat instance with the specified ID
$message = new \TeBo\Telegram\Response\TextMessage('Hello!'); // Creates the text message to send
$chat->send($message); // Sends the message to the specified chat
```## Notes
- Ensure that the `.env` file is properly configured before testing the bot.
- The default command executed by the plugin is `\TeBo\TeBo\Command\DefaultCommand::class`. You can disable it by setting it to `null`.## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.