1
0
mirror of https://github.com/danog/MadelineProto.git synced 2024-12-02 13:57:46 +01:00
MadelineProto/CHANGELOG.md

104 lines
5.9 KiB
Markdown
Raw Normal View History

2023-07-14 18:29:20 +02:00
Introducing MadelineProto's biggest update yet, 8.0.0-beta100!
2023-07-08 17:46:45 +02:00
2023-07-14 18:29:20 +02:00
This version introduces [plugins](https://docs.madelineproto.xyz/docs/PLUGINS.html), [bound methods](https://docs.madelineproto.xyz/docs/UPDATES.html#bound-methods), [filters](https://docs.madelineproto.xyz/docs/FILTERS.html), [a built-in cron system](https://docs.madelineproto.xyz/docs/UPDATES.html#cron), [IPC support for the event handler](https://docs.madelineproto.xyz/docs/UPDATES.html#persisting-data-and-ipc) and automatic static analysis for event handler code.
To create a plugin, simply create an event handler that extends PluginEventHandler.
For example, create a `plugins/Danogentili/PingPlugin.php` file:
```
<?php declare(strict_types=1);
namespace MadelinePlugin\Danogentili\PingPlugin;
use danog\MadelineProto\PluginEventHandler;
use danog\MadelineProto\EventHandler\Filter\FilterText;
use danog\MadelineProto\EventHandler\Message;
use danog\MadelineProto\EventHandler\SimpleFilter\Incoming;
class PingPlugin extends PluginEventHandler
{
#[FilterCommand('echo')]
public function echoCmd(Incoming & Message $message): void
{
// Contains the arguments of the command
$args = $message->commandArgs;
$message->reply($args[0] ?? '');
}
#[FilterRegex('/.*(mt?proto).*/i')]
public function testRegex(Incoming & Message $message): void
{
$message->reply("Did you mean to write MadelineProto instead of ".$message->matches[1].'?');
}
#[FilterText('ping')]
public function pingCommand(Incoming&Message $message): void
{
$message->reply("Pong");
}
}
```
And use a [plugin base](https://raw.githubusercontent.com/danog/MadelineProto/v8/examples/PluginBase.php) to run all plugins included in the `plugins` folder.
See the [documentation](https://docs.madelineproto.xyz/docs/PLUGINS.html) for more info on how to create MadelineProto plugins!
Both plugins and normal bots can make use of [bound update methods](https://docs.madelineproto.xyz/docs/UPDATES.html#bound-methods) like `reply()`, `delete()`, `getReply()`, `getHTML()` and simplified properties like `chatId`, `senderId`, `command`, `commandArgs` and many more, see the [documentation](https://docs.madelineproto.xyz/docs/UPDATES.html#bound-methods) for more info!
Plugins and bots can now use three different filtering systems, to easily receive only updates satisfying certain conditions (incoming/outgoing, from group, channel, private, from an admin or a specific peer, with an audio/sticker/..., satisfying a certain regex or a certain /command, and much more!), [see the documentation](https://docs.madelineproto.xyz/docs/FILTERS.html) for more info!
All event handler methods marked by the `Cron` attribute are now automatically invoked by MadelineProto every `period` seconds:
```
use danog\MadelineProto\EventHandler\Attributes\Cron;
class MyEventHandler extends SimpleEventHandler
{
/**
* This cron function will be executed forever, every 60 seconds.
*/
#[Cron(period: 60.0)]
public function cron1(): void
{
$this->sendMessageToAdmins("The bot is online, current time ".date(DATE_RFC850)."!");
}
}
```
See the [documentation](https://docs.madelineproto.xyz/docs/UPDATES.html#cron) for more info!
Finally, all new bots and plugins will be automatically analyzed by MadelineProto, blocking execution if performance or security issues are detected!
Other features:
2023-07-13 16:40:56 +02:00
- Thanks to the many translation contributors @ https://weblate.madelineproto.xyz/, MadelineProto is now localized in Hebrew, Persian, Kurdish, Uzbek, Russian, French and Italian!
2023-07-08 21:42:18 +02:00
- You can now use `Tools::callFork` to fork a new green thread!
- You can now automatically pin messages broadcasted using `broadcastMessages`, `broadcastForwardMessages` by using the new `pin: true` parameter!
2023-07-13 16:40:56 +02:00
- You can now use `sendMessageToAdmins` to send messages to the bot's admin (the peers returned by `getReportPeers`).
2023-07-14 18:29:20 +02:00
- Added `wrapUpdate`, `wrapMessage`, `wrapMedia` methods to wrap low-level MTProto updates into an abstracted Message object with bound methods!
2023-07-08 17:46:45 +02:00
- The `waveform` attribute of `Voice` objects is now automatically encoded and decoded to an array of 100 integer values!
2023-07-14 18:29:20 +02:00
- Added a custom `PeerNotInDbException` class for "This peer is not present in the internal peer database" errors
2023-07-08 17:46:45 +02:00
- Added a `label` property to the Button class, directly indicating the button label (instead of manually fetching it as an array key).
- Added `isForum` method to check whether a given supergroup is a forum
2023-07-14 18:29:20 +02:00
- Added an `entitiesToHtml` method to convert a message and a set of Telegram entities to an HTML string!
2023-07-08 17:46:45 +02:00
- You can now use `reportMemoryProfile()` to generate and send a `pprof` memory profile to all report peers to debug the causes of high memory usage.
2023-07-09 15:58:03 +02:00
- Added support for `pay`, `login_url`, `web_app` and `tg://user?id=` buttons in bot API syntax!
2023-07-14 18:29:20 +02:00
- Added a `getAdminIds` function that returns the IDs of the admin of the bot (equal to the peers returned by getReportPeers in the event handler).
- getEventHandler can now be used from IPC clients!
- Added `Cron`
- Added plugins, filters, simple filters
2023-07-11 20:23:34 +02:00
- `getReply`, `sendMessage`, `sendDocument`, `sendPhoto`, `reply`, `delete`
2023-07-08 17:46:45 +02:00
Fixes:
2023-07-08 21:42:18 +02:00
- Fixed file uploads with ext-uv!
2023-07-11 20:23:34 +02:00
- Fixed file re-uploads!
2023-07-08 17:46:45 +02:00
- Improve background broadcasting with the broadcast API using a pre-defined list of `whitelist` IDs!
2023-07-11 20:23:34 +02:00
- Fixed a bug that caused updates to get paused if an exception is thrown during onStart.
2023-07-08 17:46:45 +02:00
- Broadcast IDs are now unique across multiple broadcasts, even if previous broadcasts already completed their ID will never be re-used.
- Now uploadMedia, sendMedia and upload can upload files from string buffers created using `ReadableBuffer`.
2023-07-14 18:29:20 +02:00
- Reduced memory usage during flood waits by tweaking config defaults.
- Reduced memory usage by clearing the min database automatically as needed.
- Automatically try caching all dialogs if a peer not found error is about to be thrown.
- Fixed some issues with pure phar installs.
- And many other performance improvements and bugfixes!