MadelineProto/docs/docs/LUA.md
Daniil Gentili 7a0153a139
Documentation rework (#349)
* Documentation rework

* Apply fixes from StyleCI

* Documentation fixes

* Login as bot through web/cli API, allow using invite links in joinChannel, full invite links in importChatInvite and checkChatInvite, non-invite links in importChatInvite

* Apply fixes from StyleCI

* Logging fixes

* Build docs

* Add methods to modify start template, bugfix to logging and keyboard conversion

* Add TL documentator

* Document MTProto methods

* Documenting methods...

* 7% documented

* Bugfixes

* Update docs

* Update docs

* Simplify file management

* Implement automatic object conversion for media, and more awesome stuff

* Implement automatic object conversion for media, and more awesome stuff

* Implement event update handler and file upload/download callback

* Auto-detect mime type, duration, width and height of media

* Update docs

* Document new file functions

* Fix links

* Fix links

* Update bot.php to use event loop

* Implement webhook update handler and forking in main loop

* Build docs

* Better docs

* Fixes to secret chats

* Almost finished updating docs

* Bugfixes, implemented infinite loop for loop() method, almost finished docs

* Finish writing docs

* Add automatic documentation builder script

* Finished writing docs
2018-03-20 12:48:05 +01:00

1.6 KiB

Lua binding

Examples

The lua binding makes use of the Lua php extension.

When istantiating the \danog\MadelineProto\Lua class, the first parameter provided to the constructor must be the path to the lua script, and the second parameter a logged in instance of MadelineProto.

The class is basically a wrapper for the lua environment, so by setting an attribute you're setting a variable in the Lua environment, by reading an attribute you're reading a variable from the lua environment, and by calling a function you're actually calling a Lua function you declared in the script.

By assigning a callable to an attribute, you're actually assigning a new function in the lua environment that once called, will call the php callable.

Passing lua callables to a parameter of a PHP callable will throw an exception due to a bug in the PHP lua extension that I gotta fix (so passing the usual cb and cb_extra parameters to the td-cli wrappers isn't yet possible).

All MadelineProto wrapper methods (for example upload, download, upload_encrypted, get_self, and others) are imported in the Lua environment, as well as all MTProto wrappers (see the API docs for more info).

td-cli wrappers are also present: you can use the tdcli_function in lua and pass mtproto updates to the tdcli_update_callback via PHP, they will be automatically converted to/from td objects. Please note that the object conversion is not complete, feel free to contribute to the conversion module in src/danog/MadelineProto/Conversion/TD.php.