Forwarded from MadelineProto | Official Channel (Daniil Gentili)
MadelineProto was updated (8.0.0-beta107)!
Features:
- Add
- Add
- Add exception logging in the browser
Fixes:
- Relax dl.php verification for
- Made more fixes to photo bot API conversion
- Fix functions.php plugin inclusion
Also here's a more detailed list of the properties and bound methods of the new simple event handler API:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Methods:
-
-
-
-
Also, you can now more easily press inline buttons using the new simple keyboard API:
In both cases, if $waitForResult is true, waits for a result from the bot before returning.
Features:
- Add
getPeriodicLoops
function to get all periodic loops created by Cron attribtues- Add
isReply
bound method- Add exception logging in the browser
Fixes:
- Relax dl.php verification for
getDownloadLink
- Made more fixes to photo bot API conversion
- Fix functions.php plugin inclusion
Also here's a more detailed list of the properties and bound methods of the new simple event handler API:
-
$message->message
: string Content of the message-
$message->fwdInfo
: ?ForwardedInfo Info about a forwarded message-
$message->command
: ?string Bot command (if present)-
$message->commandType
: ?CommandType Bot command type (if present)-
$message->commandArgs
: list<string> Bot command arguments (if present)-
$message->protected
: bool Whether this message is protected-
$message->matches
: list<string> Regex matches, if a filter regex is present-
$message->fromScheduled
: bool Whether this message is a sent scheduled message-
$message->viaBotId
: ?int If the message was generated by an inline query, ID of the bot that generated it-
$message->editDate
: ?int Last edit date of the message-
$message->keyboard
: InlineKeyboard|ReplyKeyboard|null Inline or reply keyboard.-
$message->imported
: bool Whether this message was imported from a foreign chat service-
$message->psaType
: ?string For Public Service Announcement messages, the PSA type-
$message->nextSent
: ?self @readonly For sent messages, contains the next message in the chain if the original message had to be split.-
$message->id
: int Message ID-
$message->out
: bool Whether the message is outgoing-
$message->chatId
: int ID of the chat where the message was sent-
$message->senderId
: int ID of the sender of the message-
$message->replyToMsgId
: ?int ID of the message to which this message is replying-
$message->date
: int When was the message sent-
$message->topicId
: ?int ID of the forum topic where the message was sent-
$message->threadId
: ?int ID of the message thread where the message was sent-
$message->replyToScheduled
: bool Whether this is a reply to a scheduled message-
$message->mentioned
: bool Whether we were mentioned in this message-
$message->silent
: bool Whether this message was sent without any notification (silently)-
$message->ttlPeriod
: ?int Time-to-live of the message-
$message->media
: Media|null Attached media.-
$message->media->botApiFileId
: Bot API file ID of media.-
$message->media->botApiFileUniqueId
: Bot API unique file ID of media.-
$message->media->fileName, fileExt, creationDate, size, ...
: see the full list of properties by clicking on the documentation for all classes in the \danog\MadelineProto\EventHandler\Media namespace!Methods:
-
$message->getHTML(bool $allowTelegramTags = false): string
: Get an HTML version of the message. $allowTelegramTags
specifies whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on…-
$message->getReply(): ?self
: Get replied-to message. May return null if the replied-to message was deleted.-
$message->delete(bool $revoke = true): void
: Delete the message. $revoke
is true by default, if false it deletes the message on just one side of the chat.-
$message->reply(string $message, ParseMode $parseMode, ...): \danog\MadelineProto\EventHandler\Message
: Reply to the message, see the documentation for more info on the parameters!Also, you can now more easily press inline buttons using the new simple keyboard API:
- $message->keyboard->
press(string $label, bool $waitForResult)
: Presses the first keyboard button with the specified label.- $message->keyboard->pressByCoordinates(int $row, int $column, bool $waitForResult): Presses button at the specified keyboard coordinates.
In both cases, if $waitForResult is true, waits for a result from the bot before returning.
docs.madelineproto.xyz
MadelineProto API
MadelineProto PHP API reference
Forwarded from MadelineProto | Official Channel (Daniil Gentili)
MadelineProto supports Telegram Stories in 8.0.0-beta113!
New Methods:
- users.getStoriesMaxIDs
- account.invalidateSignInCodes
- contacts.editCloseFriends
- contacts.toggleStoriesHidden
- channels.clickSponsoredMessage
- stories.sendStory
- stories.editStory
- stories.deleteStories
- stories.togglePinned
- stories.getAllStories
- stories.getUserStories
- stories.getPinnedStories
- stories.getStoriesArchive
- stories.getStoriesByID
- stories.toggleAllStoriesHidden
- stories.getAllReadUserStories
- stories.readStories
- stories.incrementStoryViews
- stories.getStoryViewsList
- stories.getStoriesViews
- stories.exportStoryLink
- stories.report
New Constructors:
- inputMediaStory
- messageMediaStory
- updateStory
- updateReadStories
- updateStoryID
- inputPrivacyKeyAbout
- privacyKeyAbout
- inputPrivacyValueAllowCloseFriends
- privacyValueAllowCloseFriends
- webPageAttributeStory
- messageReplyStoryHeader
- messagePeerVote
- messagePeerVoteInputOption
- messagePeerVoteMultiple
- sponsoredWebPage
- storyViews
- storyItemDeleted
- storyItemSkipped
- storyItem
- userStories
- stories.allStoriesNotModified
- stories.allStories
- stories.stories
- stories.userStories
- storyView
- stories.storyViewsList
- stories.storyViews
- inputReplyToMessage
- inputReplyToStory
- exportedStoryLink
Changed Constructors:
Added close_friend param to user
Added stories_hidden param to user
Added stories_unavailable param to user
Added stories_max_id param to user
Added alt_document param to messageMediaDocument
Added stories_muted param to inputPeerNotifySettings
Added stories_hide_sender param to inputPeerNotifySettings
Added stories_sound param to inputPeerNotifySettings
Added stories_muted param to peerNotifySettings
Added stories_hide_sender param to peerNotifySettings
Added stories_ios_sound param to peerNotifySettings
Added stories_android_sound param to peerNotifySettings
Added stories_other_sound param to peerNotifySettings
Added stories_pinned_available param to userFull
Added stories param to userFull
Added peer param to updateMessagePollVote
Removed user_id param from updateMessagePollVote
Added nosound param to documentAttributeVideo
Added preload_prefix_size param to documentAttributeVideo
Added stories_preload param to autoDownloadSettings
Added small_queue_active_operations_max param to autoDownloadSettings
Added large_queue_active_operations_max param to autoDownloadSettings
Added chats param to messages.votesList
Added keep_archived_unmuted param to globalPrivacySettings
Added keep_archived_folders param to globalPrivacySettings
Added webpage param to sponsoredMessage
Added my param to messagePeerReaction
Click here to start using Telegram Stories in MadelineProto!
New Methods:
- users.getStoriesMaxIDs
- account.invalidateSignInCodes
- contacts.editCloseFriends
- contacts.toggleStoriesHidden
- channels.clickSponsoredMessage
- stories.sendStory
- stories.editStory
- stories.deleteStories
- stories.togglePinned
- stories.getAllStories
- stories.getUserStories
- stories.getPinnedStories
- stories.getStoriesArchive
- stories.getStoriesByID
- stories.toggleAllStoriesHidden
- stories.getAllReadUserStories
- stories.readStories
- stories.incrementStoryViews
- stories.getStoryViewsList
- stories.getStoriesViews
- stories.exportStoryLink
- stories.report
New Constructors:
- inputMediaStory
- messageMediaStory
- updateStory
- updateReadStories
- updateStoryID
- inputPrivacyKeyAbout
- privacyKeyAbout
- inputPrivacyValueAllowCloseFriends
- privacyValueAllowCloseFriends
- webPageAttributeStory
- messageReplyStoryHeader
- messagePeerVote
- messagePeerVoteInputOption
- messagePeerVoteMultiple
- sponsoredWebPage
- storyViews
- storyItemDeleted
- storyItemSkipped
- storyItem
- userStories
- stories.allStoriesNotModified
- stories.allStories
- stories.stories
- stories.userStories
- storyView
- stories.storyViewsList
- stories.storyViews
- inputReplyToMessage
- inputReplyToStory
- exportedStoryLink
Changed Constructors:
Added close_friend param to user
Added stories_hidden param to user
Added stories_unavailable param to user
Added stories_max_id param to user
Added alt_document param to messageMediaDocument
Added stories_muted param to inputPeerNotifySettings
Added stories_hide_sender param to inputPeerNotifySettings
Added stories_sound param to inputPeerNotifySettings
Added stories_muted param to peerNotifySettings
Added stories_hide_sender param to peerNotifySettings
Added stories_ios_sound param to peerNotifySettings
Added stories_android_sound param to peerNotifySettings
Added stories_other_sound param to peerNotifySettings
Added stories_pinned_available param to userFull
Added stories param to userFull
Added peer param to updateMessagePollVote
Removed user_id param from updateMessagePollVote
Added nosound param to documentAttributeVideo
Added preload_prefix_size param to documentAttributeVideo
Added stories_preload param to autoDownloadSettings
Added small_queue_active_operations_max param to autoDownloadSettings
Added large_queue_active_operations_max param to autoDownloadSettings
Added chats param to messages.votesList
Added keep_archived_unmuted param to globalPrivacySettings
Added keep_archived_folders param to globalPrivacySettings
Added webpage param to sponsoredMessage
Added my param to messagePeerReaction
Click here to start using Telegram Stories in MadelineProto!
docs.madelineproto.xyz
users.getStoriesMaxIDs
users.getStoriesMaxIDs parameters, return type and example
I fell in love with Telegram Stories, it's basically like having a personal blog like this but it's also immediately accessible by clicking on the user's profile, and you can directly interact with the person that posted the story (and the poster can do the same too, found some really cute kittens in the stories of the people that viewed mine! :333)
Really happy with the social direction of Telegram, it feels more alive and fun than ever!
Really happy with the social direction of Telegram, it feels more alive and fun than ever!
You can subscribe to my stories and add @danogentili as a contact to receive early updates about my projects ❤️
https://t.me/danogentili/s/2
https://t.me/danogentili/s/2
Forwarded from MadelineProto | Official Channel (Daniil Gentili)
As a birthday present for Telegram's 🥳 th birthday, MadelineProto now supports VoIP calls again!
Try calling the Magna Luna webradio @magicalcrazypony to hear some cool songs, powered by @MadelineProto!
The new MadelineProto VoIP implementation is written in pure PHP, so it works even on free webhosts!
Check out the new VoIP documentation for more info on how to write your very own Telegram webradio using MadelineProto!
Features (8.0.0-beta131):
- VoIP calls!
- You can now
- You can now
- Added a
- Updated to layer 161!
New Methods:
- contacts.setBlocked
- stories.activateStealthMode
- stories.sendReaction
Changed Methods:
Added my_stories_from param to contacts.block
Added my_stories_from param to contacts.unblock
Added my_stories_from param to contacts.getBlocked
Added media_areas param to stories.sendStory
Added media_areas param to stories.editStory
Added just_contacts param to stories.getStoryViewsList
Added reactions_first param to stories.getStoryViewsList
Added q param to stories.getStoryViewsList
Added offset param to stories.getStoryViewsList
Removed offset_date param from stories.getStoryViewsList
Removed offset_id param from stories.getStoryViewsList
New Constructors:
- updateStoriesStealthMode
- updateSentStoryReaction
- storiesStealthMode
- mediaAreaCoordinates
- mediaAreaVenue
- inputMediaAreaVenue
- mediaAreaGeoPoint
Changed Constructors:
Added blocked_my_stories_from param to userFull
Added blocked_my_stories_from param to updatePeerBlocked
Added reactions_count param to storyViews
Added media_areas param to storyItem
Added sent_reaction param to storyItem
Added stealth_mode param to stories.allStoriesNotModified
Added stealth_mode param to stories.allStories
Added blocked param to storyView
Added blocked_my_stories_from param to storyView
Added reaction param to storyView
Added reactions_count param to stories.storyViewsList
Added next_offset param to stories.storyViewsList
Fixes:
- Greatly improved performance by deferring all ORM operations!
- CDN fixes!
- Fix connection to the database when a password is accidentally provided but none is needed
- Removed all generator polyfilling code and deprecated generator functions!
As a side note, I'm very happy of how the current VoIP implementation turned out, and it was a lot of fun to write!
Adding native webhost support required me to write a pure PHP OGG OPUS muxer and demuxer, as well as a full reimplementation of the GrVP protocol in pure PHP: doing it in such a high-level language allowed me to easily use amphp's libraries to easily add support for URLs, streams and all audio formats.
I also wrote a PHP FFI wrapper for libopus for this project, I'll probably split it to a separate package along with the OGG muxer/demuxer because it's really useful :)
Try calling the Magna Luna webradio @magicalcrazypony to hear some cool songs, powered by @MadelineProto!
The new MadelineProto VoIP implementation is written in pure PHP, so it works even on free webhosts!
Check out the new VoIP documentation for more info on how to write your very own Telegram webradio using MadelineProto!
Features (8.0.0-beta131):
- VoIP calls!
- You can now
play()
audio files of any format, local files, stream URLs or even stream data using AMP streams!- You can now
play()
audio files even on webhosts, by pre-converting the files using @libtgvoip_bot!- Added a
downloadToReturnedStream
method!- Updated to layer 161!
New Methods:
- contacts.setBlocked
- stories.activateStealthMode
- stories.sendReaction
Changed Methods:
Added my_stories_from param to contacts.block
Added my_stories_from param to contacts.unblock
Added my_stories_from param to contacts.getBlocked
Added media_areas param to stories.sendStory
Added media_areas param to stories.editStory
Added just_contacts param to stories.getStoryViewsList
Added reactions_first param to stories.getStoryViewsList
Added q param to stories.getStoryViewsList
Added offset param to stories.getStoryViewsList
Removed offset_date param from stories.getStoryViewsList
Removed offset_id param from stories.getStoryViewsList
New Constructors:
- updateStoriesStealthMode
- updateSentStoryReaction
- storiesStealthMode
- mediaAreaCoordinates
- mediaAreaVenue
- inputMediaAreaVenue
- mediaAreaGeoPoint
Changed Constructors:
Added blocked_my_stories_from param to userFull
Added blocked_my_stories_from param to updatePeerBlocked
Added reactions_count param to storyViews
Added media_areas param to storyItem
Added sent_reaction param to storyItem
Added stealth_mode param to stories.allStoriesNotModified
Added stealth_mode param to stories.allStories
Added blocked param to storyView
Added blocked_my_stories_from param to storyView
Added reaction param to storyView
Added reactions_count param to stories.storyViewsList
Added next_offset param to stories.storyViewsList
Fixes:
- Greatly improved performance by deferring all ORM operations!
- CDN fixes!
- Fix connection to the database when a password is accidentally provided but none is needed
- Removed all generator polyfilling code and deprecated generator functions!
As a side note, I'm very happy of how the current VoIP implementation turned out, and it was a lot of fun to write!
Adding native webhost support required me to write a pure PHP OGG OPUS muxer and demuxer, as well as a full reimplementation of the GrVP protocol in pure PHP: doing it in such a high-level language allowed me to easily use amphp's libraries to easily add support for URLs, streams and all audio formats.
I also wrote a PHP FFI wrapper for libopus for this project, I'll probably split it to a separate package along with the OGG muxer/demuxer because it's really useful :)
Please open Telegram to view this post
VIEW IN TELEGRAM
docs.madelineproto.xyz
Telegram VoIP phone calls
MadelineProto provides an easy wrapper to work with phone calls.
Daniil Gentili's news channel pinned «As a birthday present for Telegram's 🥳 th birthday, MadelineProto now supports VoIP calls again! Try calling the Magna Luna webradio @magicalcrazypony to hear some cool songs, powered by @MadelineProto! The new MadelineProto VoIP implementation is written…»
I'm now the main maintainer of gojekyll, a ~30x faster Go port of Jekyll :)
I fell in love with gojekyll the first time I found it: it's incredibly fast, and it's currently powering the MadelineProto documentation!
When I first found it, the project was kind of abandoned with quite a few missing features: now, it has a lot less bugs, some new features, and most importantly it's much faster than it used to be, mostly thanks to my fork of the blackfriday markdown processor, which uses the golang bfchroma syntax highlighter instead of the extremely slow python pygmentize library :)
I've also created an official docker image for gojekyll, danog/gojekyll!
I'm now also a maintainer of osteele/liquid, the Go port of the Shopify Liquid template engine powering gojekyll.
I fell in love with gojekyll the first time I found it: it's incredibly fast, and it's currently powering the MadelineProto documentation!
When I first found it, the project was kind of abandoned with quite a few missing features: now, it has a lot less bugs, some new features, and most importantly it's much faster than it used to be, mostly thanks to my fork of the blackfriday markdown processor, which uses the golang bfchroma syntax highlighter instead of the extremely slow python pygmentize library :)
I've also created an official docker image for gojekyll, danog/gojekyll!
I'm now also a maintainer of osteele/liquid, the Go port of the Shopify Liquid template engine powering gojekyll.
GitHub
GitHub - osteele/gojekyll: A fast Go implementation of the Jekyll blogging engine
A fast Go implementation of the Jekyll blogging engine - osteele/gojekyll
I'm very happy to announce the first release of https://github.com/danog/php-tokio: you can now use any async Rust library from PHP!
It's fully integrated with revolt: this allows full compatibility with amphp, PSL and reactphp, and with any Rust library powered by tokio.rs.
Here's an example from the repo, using the async Rust reqwest library to make asynchronous HTTP requests from PHP:
I've created this library because I'm building an async MongoDB client for PHP (https://github.com/Nicelocal/mongo-php-async-driver), and realized that using the official rust mongodb library directly from PHP would be way easier (and faster!) than writing a MongoDB client in pure PHP :)
It's fully integrated with revolt: this allows full compatibility with amphp, PSL and reactphp, and with any Rust library powered by tokio.rs.
Here's an example from the repo, using the async Rust reqwest library to make asynchronous HTTP requests from PHP:
<?phpI'm really excited for the potential usecases of php-tokio, and its implications for the PHP async ecosystem.
use Reqwest\Client;
use function Amp\async;
use function Amp\Future\await;
require 'vendor/autoload.php';
Client::init();
function test(int $delay): void {
$url = "https://httpbin.org/delay/$delay";
$t = time();
echo "Making async reqwest to $url that will return after $delay seconds...".PHP_EOL;
Client::get($url);
$t = time() - $t;
echo "Got response from $url after ~".$t." seconds!".PHP_EOL;
};
$futures = [];
$futures []= async(test(...), 5);
$futures []= async(test(...), 5);
$futures []= async(test(...), 5);
await($futures);
I've created this library because I'm building an async MongoDB client for PHP (https://github.com/Nicelocal/mongo-php-async-driver), and realized that using the official rust mongodb library directly from PHP would be way easier (and faster!) than writing a MongoDB client in pure PHP :)
GitHub
GitHub - danog/php-tokio: Use any async Rust library from PHP!
Use any async Rust library from PHP! Contribute to danog/php-tokio development by creating an account on GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
My pure PHP implementation of STUN is ready, the first pre-alpha version of the library is available at https://github.com/danog/stun!
This library is the first step in the creation of a pure PHP implementation of webrtc, specifically to work with Telegram's new WebRTC-based VoIP implementation used in group and video calls, even from shared PHP webhosts :)
This library is the first step in the creation of a pure PHP implementation of webrtc, specifically to work with Telegram's new WebRTC-based VoIP implementation used in group and video calls, even from shared PHP webhosts :)
Happy New Year everyone, best wishes for a happy and peaceful 2024.
May your new year be full of positive emotions and creative inspiration ❤️❤️❤️
May your new year be full of positive emotions and creative inspiration ❤️❤️❤️
Forwarded from iGNUranza
Piracy Shield è un Blocco IP/DNS obbligatorio entro 30 minuti fatto dall'ISP, pena multa, senza passare per un giudice, gli indirizzi e nomi da bannare sono inseriti dai detentori del copyright (aka privati senza supervisione giudiziaria)
La legge è stata approvata dietro forte lobbying dei detentori dei diritti, la piattaforma è stata "donata" dalla lega calcio (aka fatta fare da amici, e imposta all'agcom, che poi comunque ha dovuto rifinirla, spendendo 60k)
Sia IPv4 che IPv6 che domini vengono aggiunti tramite ticket sulla piattaforma, gli operatori devono usare l'API JSON per pullare tutti i ticket in un colpo, confrontare col set locale, bannare/sbannare la differenza
Non è previsto un modo per rimuovere un IP bannato, se non nelle prime 24 ore
Il sistema è attivo da oggi
La legge è stata approvata dietro forte lobbying dei detentori dei diritti, la piattaforma è stata "donata" dalla lega calcio (aka fatta fare da amici, e imposta all'agcom, che poi comunque ha dovuto rifinirla, spendendo 60k)
Sia IPv4 che IPv6 che domini vengono aggiunti tramite ticket sulla piattaforma, gli operatori devono usare l'API JSON per pullare tutti i ticket in un colpo, confrontare col set locale, bannare/sbannare la differenza
Non è previsto un modo per rimuovere un IP bannato, se non nelle prime 24 ore
Il sistema è attivo da oggi
Anche i provider DoH/VPN sarebbero obbligati ad applicare i blocchi per operare in italia, poi si vedrà in realtà quanti e quali operatori DoH e VPN si adegueranno, e quanto sarà fattibile l'enforcement per chi non si adegua.
Altro dettaglio curioso, il ban ipv6 è attuato su IPv6 singoli (/128), quando da prassi ogni utenza dovrebbe avere una subnet /48 (2^80 indirizzi), da una parte è ridicolo perché per bannare una piattaforma pirata con una /48 standard significa bannare 2^80 indirizzi, dall'altra attuare blanket ban su intere subnet ipv6 è molto rischioso perché non si sa mai qual'è la distribuzione reale delle sottoreti.
Fun times with the new Italian censorship system :)
Altro dettaglio curioso, il ban ipv6 è attuato su IPv6 singoli (/128), quando da prassi ogni utenza dovrebbe avere una subnet /48 (2^80 indirizzi), da una parte è ridicolo perché per bannare una piattaforma pirata con una /48 standard significa bannare 2^80 indirizzi, dall'altra attuare blanket ban su intere subnet ipv6 è molto rischioso perché non si sa mai qual'è la distribuzione reale delle sottoreti.
Fun times with the new Italian censorship system :)
On a more upbeat note, I'm currently halfway through done working on a PHP AOT compiler (with full support for all of PHP, by re-using the function JIT, adding support for relocations and a custom linker).
Planning to integrate it inside of Psalm to improve performance, removing the overhead of runtime JIT compilation!
Planning to integrate it inside of Psalm to improve performance, removing the overhead of runtime JIT compilation!
Daniil Gentili's news channel
Piracy Shield è un Blocco IP/DNS obbligatorio entro 30 minuti fatto dall'ISP, pena multa, senza passare per un giudice, gli indirizzi e nomi da bannare sono inseriti dai detentori del copyright (aka privati senza supervisione giudiziaria) La legge è stata…
Ho collaborato alla creazione di una lettera aperta contro Piracy Shield, invito tutti a firmare: https://stop-piracy-shield.it/
Forwarded from MadelineProto | Official Channel (Daniil Gentili)
MadelineProto was updated (8.0.0-beta195)!
This release extracts MadelineProto's async ORM into a separate library, danog/AsyncOrm: a PHP async ORM based on AMPHP v3 and fibers!
danog/AsyncOrm supports MySQL, Redis, Postgres, features read and write-back caching, type-specific optimizations, and much more!
Among other news, the danog/tg-file-decoder library was also updated&modernized.
Also, the
Breaking changes:
- Raise the minimum PHP version to 8.2.17.
- Move all ORM classes to the
- Remove support for definition of ORM properties using
- Modernized and updated
- Use bot API IDs in all constructors returned by MadelineProto.
- Finalize all methods in the event handler.
- Enable strict static analysis for EventHandler.
- Removed the JSON and STRING serializer types from the ORM settings, the correct serializer will now be chosen based on the type of the value specified in OrmKeyedArray.
- Postgres/Redis MadelineProto instances need a manual database migration before upgrading (first updateSettings to the Memory backend, then upgrade, then updateSettings to Postgres/Redis); MySQL and Memory instances will be migrated automatically, no need to do anything.
Features:
- Update to layer 177, see here for the full layer changelog!
- Add support for the stable versions of amphp/mysql, amphp/postgres through https://github.com/danog/AsyncOrm!
Fixes:
- Fix Message::read!
- Multiple other bugfixes and performance improvements!
This release extracts MadelineProto's async ORM into a separate library, danog/AsyncOrm: a PHP async ORM based on AMPHP v3 and fibers!
danog/AsyncOrm supports MySQL, Redis, Postgres, features read and write-back caching, type-specific optimizations, and much more!
Among other news, the danog/tg-file-decoder library was also updated&modernized.
Also, the
downloadRenameBot.php
was updated to support downloading videos directly from YouTube (without using the disk!), here's the new repo: https://github.com/danog/downloadRenameBot/Breaking changes:
- Raise the minimum PHP version to 8.2.17.
- Move all ORM classes to the
danog\AsyncOrm
namespace- Remove support for definition of ORM properties using
$dbProperties
, the new OrmMappedArray
attribute should be used instead, see the new docs for more info and examples!- Modernized and updated
danog/tg-file-decoder
, switching to enums and readonly properties.- Use bot API IDs in all constructors returned by MadelineProto.
- Finalize all methods in the event handler.
- Enable strict static analysis for EventHandler.
- Removed the JSON and STRING serializer types from the ORM settings, the correct serializer will now be chosen based on the type of the value specified in OrmKeyedArray.
- Postgres/Redis MadelineProto instances need a manual database migration before upgrading (first updateSettings to the Memory backend, then upgrade, then updateSettings to Postgres/Redis); MySQL and Memory instances will be migrated automatically, no need to do anything.
Features:
- Update to layer 177, see here for the full layer changelog!
- Add support for the stable versions of amphp/mysql, amphp/postgres through https://github.com/danog/AsyncOrm!
Fixes:
- Fix Message::read!
- Multiple other bugfixes and performance improvements!
GitHub
GitHub - danog/AsyncOrm: Async ORM based on AMPHP v3 and fibers.
Async ORM based on AMPHP v3 and fibers. Contribute to danog/AsyncOrm development by creating an account on GitHub.
Forwarded from MadelineProto | Official Channel (Daniil Gentili)
MadelineProto was updated!
8.0.0 is the first stable release of MadelineProto v8!
For the full changelog, see the messages on the official MadelineProto channel, starting from here!
Here are the main highlights:
- Amp v3 & revolt (fibers) support!
- A new simplified, stable and object-oriented event handler API based on filters and plugins!
- New sendVideo, sendAudio, sendDocument, etc methods with automatic metadata extraction via ffmpeg.
- A new getDownloadLink method for files up to 4gb!
- A new broadcast API, that can be used to asynchronously broadcast messages to all users of a bot or userbot in the background, automatically fetching all users of the bot!
- A pure PHP async VoIP implementation to make Telegram voice calls even on limited webhosts!
- An official docker image!
- Built-in static analysis of event handler code!
- Major performance and stability improvements!
- Many other new features and UX improvements, see all messages starting from https://t.me/MadelineProto/591 for more info!
Major parts of the MadelineProto core were split into standalone libraries that can be used without requiring all of MadelineProto:
- https://github.com/danog/AsyncOrm - Async ORM based on AMPHP v3 and fibers.
- https://github.com/danog/telegram-entities - A library to work with Telegram UTF-16 styled text entities.
- https://github.com/danog/tg-file-decoder - A library to work with Telegram bot API file IDs (recently updated).
The next releases will focus on even more features and performance improvements, such as prometheus and grafana statistics, a static TL parser and much, much more!
Cheers!
8.0.0 is the first stable release of MadelineProto v8!
For the full changelog, see the messages on the official MadelineProto channel, starting from here!
Here are the main highlights:
- Amp v3 & revolt (fibers) support!
- A new simplified, stable and object-oriented event handler API based on filters and plugins!
- New sendVideo, sendAudio, sendDocument, etc methods with automatic metadata extraction via ffmpeg.
- A new getDownloadLink method for files up to 4gb!
- A new broadcast API, that can be used to asynchronously broadcast messages to all users of a bot or userbot in the background, automatically fetching all users of the bot!
- A pure PHP async VoIP implementation to make Telegram voice calls even on limited webhosts!
- An official docker image!
- Built-in static analysis of event handler code!
- Major performance and stability improvements!
- Many other new features and UX improvements, see all messages starting from https://t.me/MadelineProto/591 for more info!
Major parts of the MadelineProto core were split into standalone libraries that can be used without requiring all of MadelineProto:
- https://github.com/danog/AsyncOrm - Async ORM based on AMPHP v3 and fibers.
- https://github.com/danog/telegram-entities - A library to work with Telegram UTF-16 styled text entities.
- https://github.com/danog/tg-file-decoder - A library to work with Telegram bot API file IDs (recently updated).
The next releases will focus on even more features and performance improvements, such as prometheus and grafana statistics, a static TL parser and much, much more!
Cheers!
Forwarded from MadelineProto | Official Channel (Daniil Gentili)
MadelineProto was updated!
MadelineProto 8.1.0 introduces an official Grafana dashboard for MadelineProto, powered by danog/better-prometheus!
See here for more info on how to configure the Prometheus metrics endpoint and Grafana dashboard!
Features:
- Official grafana dashboard, powered by danog/better-prometheus!
- Extract bot API dialog ID handling logic into a separate library, danog/tg-dialog-id!
- Add a previously missing
- Add messages.getEmojiStickerGroups method!
Fixes:
- Fix a possible bug in sendVideo
- Fix a possible bug in parseMode parsing
- Fix SecretMessage::delete
- Fix passing of seekable streams to IPC methods
- Other minor bugfixes
- Performance improvements
MadelineProto 8.1.0 introduces an official Grafana dashboard for MadelineProto, powered by danog/better-prometheus!
See here for more info on how to configure the Prometheus metrics endpoint and Grafana dashboard!
Features:
- Official grafana dashboard, powered by danog/better-prometheus!
- Extract bot API dialog ID handling logic into a separate library, danog/tg-dialog-id!
- Add a previously missing
$deleteHistory
flag to discardSecretChat
!- Add messages.getEmojiStickerGroups method!
Fixes:
- Fix a possible bug in sendVideo
- Fix a possible bug in parseMode parsing
- Fix SecretMessage::delete
- Fix passing of seekable streams to IPC methods
- Other minor bugfixes
- Performance improvements
docs.madelineproto.xyz
Metrics
MadelineProto can expose many useful metrics, that can be visualized using the official MadelineProto Grafana dashboard.
Forwarded from MadelineProto | Official Channel (Daniil Gentili)