1
0
mirror of https://github.com/danog/MadelineProto.git synced 2024-11-30 09:38:57 +01:00
MadelineProto/src/InternalDoc.php
2024-02-05 23:26:52 +01:00

2084 lines
80 KiB
PHP

<?php declare(strict_types=1);
/**
* This file is automatically generated by the build_docs.php file
* and is used only for autocompletion in multiple IDEs
* don't modify it manually.
*/
namespace danog\MadelineProto;
use __PHP_Incomplete_Class;
use Amp\ByteStream\Pipe;
use Amp\ByteStream\ReadableStream;
use Amp\ByteStream\WritableStream;
use Amp\Cancellation;
use Amp\Future;
use Amp\Http\Server\Request as ServerRequest;
use Closure;
use danog\MadelineProto\Broadcast\Action;
use danog\MadelineProto\Broadcast\Progress;
use danog\MadelineProto\Broadcast\Status;
use danog\MadelineProto\EventHandler\Action\Cancel;
use danog\MadelineProto\EventHandler\Attributes\Handler;
use danog\MadelineProto\EventHandler\Keyboard;
use danog\MadelineProto\EventHandler\Media;
use danog\MadelineProto\EventHandler\Media\Audio;
use danog\MadelineProto\EventHandler\Media\Document;
use danog\MadelineProto\EventHandler\Media\Photo;
use danog\MadelineProto\EventHandler\Media\Video;
use danog\MadelineProto\EventHandler\Message;
use danog\MadelineProto\EventHandler\Message\Entities\Code;
use danog\MadelineProto\EventHandler\Message\Entities\Email;
use danog\MadelineProto\EventHandler\Message\Entities\Mention;
use danog\MadelineProto\EventHandler\Message\Entities\MessageEntity;
use danog\MadelineProto\EventHandler\Message\Entities\Phone;
use danog\MadelineProto\EventHandler\Message\Entities\Pre;
use danog\MadelineProto\EventHandler\Message\Entities\Spoiler;
use danog\MadelineProto\EventHandler\Message\Entities\Url;
use danog\MadelineProto\EventHandler\Participant\Admin;
use danog\MadelineProto\EventHandler\Participant\Member;
use danog\MadelineProto\EventHandler\Pinned;
use danog\MadelineProto\EventHandler\Update;
use danog\MadelineProto\EventHandler\User\Status\Emoji;
use danog\MadelineProto\EventHandler\User\Username;
use danog\MadelineProto\Ipc\Client;
use danog\MadelineProto\Ipc\EventHandlerProxy;
use danog\MadelineProto\Ipc\Server;
/** @psalm-suppress PossiblyNullReference, PropertyNotSetInConstructor */
abstract class InternalDoc
{
protected APIWrapper $wrapper;
/** @var \danog\MadelineProto\Namespace\Auth $auth */
public $auth;
/** @var \danog\MadelineProto\Namespace\Account $account */
public $account;
/** @var \danog\MadelineProto\Namespace\Users $users */
public $users;
/** @var \danog\MadelineProto\Namespace\Contacts $contacts */
public $contacts;
/** @var \danog\MadelineProto\Namespace\Messages $messages */
public $messages;
/** @var \danog\MadelineProto\Namespace\Updates $updates */
public $updates;
/** @var \danog\MadelineProto\Namespace\Photos $photos */
public $photos;
/** @var \danog\MadelineProto\Namespace\Upload $upload */
public $upload;
/** @var \danog\MadelineProto\Namespace\Help $help */
public $help;
/** @var \danog\MadelineProto\Namespace\Channels $channels */
public $channels;
/** @var \danog\MadelineProto\Namespace\Bots $bots */
public $bots;
/** @var \danog\MadelineProto\Namespace\Payments $payments */
public $payments;
/** @var \danog\MadelineProto\Namespace\Stickers $stickers */
public $stickers;
/** @var \danog\MadelineProto\Namespace\Phone $phone */
public $phone;
/** @var \danog\MadelineProto\Namespace\Langpack $langpack */
public $langpack;
/** @var \danog\MadelineProto\Namespace\Folders $folders */
public $folders;
/** @var \danog\MadelineProto\Namespace\Stats $stats */
public $stats;
/** @var \danog\MadelineProto\Namespace\Chatlists $chatlists */
public $chatlists;
/** @var \danog\MadelineProto\Namespace\Stories $stories */
public $stories;
/** @var \danog\MadelineProto\Namespace\Premium $premium */
public $premium;
/**
* Export APIFactory instance with the specified namespace.
* @psalm-suppress InaccessibleProperty
*/
protected function exportNamespaces(): void
{
$this->auth ??= new \danog\MadelineProto\Namespace\AbstractAPI('auth');
$this->auth->setWrapper($this->wrapper);
$this->account ??= new \danog\MadelineProto\Namespace\AbstractAPI('account');
$this->account->setWrapper($this->wrapper);
$this->users ??= new \danog\MadelineProto\Namespace\AbstractAPI('users');
$this->users->setWrapper($this->wrapper);
$this->contacts ??= new \danog\MadelineProto\Namespace\AbstractAPI('contacts');
$this->contacts->setWrapper($this->wrapper);
$this->messages ??= new \danog\MadelineProto\Namespace\AbstractAPI('messages');
$this->messages->setWrapper($this->wrapper);
$this->updates ??= new \danog\MadelineProto\Namespace\AbstractAPI('updates');
$this->updates->setWrapper($this->wrapper);
$this->photos ??= new \danog\MadelineProto\Namespace\AbstractAPI('photos');
$this->photos->setWrapper($this->wrapper);
$this->upload ??= new \danog\MadelineProto\Namespace\AbstractAPI('upload');
$this->upload->setWrapper($this->wrapper);
$this->help ??= new \danog\MadelineProto\Namespace\AbstractAPI('help');
$this->help->setWrapper($this->wrapper);
$this->channels ??= new \danog\MadelineProto\Namespace\AbstractAPI('channels');
$this->channels->setWrapper($this->wrapper);
$this->bots ??= new \danog\MadelineProto\Namespace\AbstractAPI('bots');
$this->bots->setWrapper($this->wrapper);
$this->payments ??= new \danog\MadelineProto\Namespace\AbstractAPI('payments');
$this->payments->setWrapper($this->wrapper);
$this->stickers ??= new \danog\MadelineProto\Namespace\AbstractAPI('stickers');
$this->stickers->setWrapper($this->wrapper);
$this->phone ??= new \danog\MadelineProto\Namespace\AbstractAPI('phone');
$this->phone->setWrapper($this->wrapper);
$this->langpack ??= new \danog\MadelineProto\Namespace\AbstractAPI('langpack');
$this->langpack->setWrapper($this->wrapper);
$this->folders ??= new \danog\MadelineProto\Namespace\AbstractAPI('folders');
$this->folders->setWrapper($this->wrapper);
$this->stats ??= new \danog\MadelineProto\Namespace\AbstractAPI('stats');
$this->stats->setWrapper($this->wrapper);
$this->chatlists ??= new \danog\MadelineProto\Namespace\AbstractAPI('chatlists');
$this->chatlists->setWrapper($this->wrapper);
$this->stories ??= new \danog\MadelineProto\Namespace\AbstractAPI('stories');
$this->stories->setWrapper($this->wrapper);
$this->premium ??= new \danog\MadelineProto\Namespace\AbstractAPI('premium');
$this->premium->setWrapper($this->wrapper);
}
/**
* Convert MTProto parameters to bot API parameters.
*
* @param array $data Data
*/
public function MTProtoToBotAPI(array $data): array
{
return $this->wrapper->getAPI()->MTProtoToBotAPI($data);
}
/**
* MTProto to TD params.
*
* @param mixed $params Params
*/
public function MTProtoToTd(mixed &$params): array
{
return $this->wrapper->getAPI()->MTProtoToTd($params);
}
/**
* MTProto to TDCLI params.
*
* @param mixed $params Params
*/
public function MTProtoToTdcli(mixed $params): array
{
return $this->wrapper->getAPI()->MTProtoToTdcli($params);
}
/**
* Accept call.
*/
public function acceptCall(int $id): void
{
$this->wrapper->getAPI()->acceptCall($id);
}
/**
* Accept secret chat.
*
* @param array $params Secret chat ID
*/
public function acceptSecretChat(array $params): void
{
$this->wrapper->getAPI()->acceptSecretChat($params);
}
/**
* Create array.
*
* @param mixed ...$params Params
*/
public static function arr(mixed ...$params): array
{
return \danog\MadelineProto\Tools::arr(...$params);
}
/**
* base64URL decode.
*
* @param string $data Data to decode
*/
public static function base64urlDecode(string $data): string
{
return \danog\MadelineProto\Tools::base64urlDecode($data);
}
/**
* Base64URL encode.
*
* @param string $data Data to encode
*/
public static function base64urlEncode(string $data): string
{
return \danog\MadelineProto\Tools::base64urlEncode($data);
}
/**
* Convert bot API parameters to MTProto parameters.
*
* @param array $arguments Arguments
*/
public function botAPIToMTProto(array $arguments): array
{
return $this->wrapper->getAPI()->botAPIToMTProto($arguments);
}
/**
* Login as bot.
*
* @param string $token Bot token
*/
public function botLogin(string $token): ?array
{
return $this->wrapper->getAPI()->botLogin($token);
}
/**
* Executes a custom broadcast action with all peers (users, chats, channels) of the bot.
*
* Will return an integer ID that can be used to:
*
* - Get the current broadcast progress with getBroadcastProgress
* - Cancel the broadcast using cancelBroadcast
*
* Note that to avoid manually polling the progress,
* MadelineProto will also periodically emit updateBroadcastProgress updates,
* containing a Progress object for all broadcasts currently in-progress.
*
* @param Action $action A custom, serializable Action class that will be called once for every peer.
* @param float|null $delay Number of seconds to wait between each peer.
*/
public function broadcastCustom(\danog\MadelineProto\Broadcast\Action $action, ?\danog\MadelineProto\Broadcast\Filter $filter = null, ?float $delay = null): int
{
return $this->wrapper->getAPI()->broadcastCustom($action, $filter, $delay);
}
/**
* Forwards a list of messages to all peers (users, chats, channels) of the bot.
*
* Will return an integer ID that can be used to:
*
* - Get the current broadcast progress with getBroadcastProgress
* - Cancel the broadcast using cancelBroadcast
*
* Note that to avoid manually polling the progress,
* MadelineProto will also periodically emit updateBroadcastProgress updates,
* containing a Progress object for all broadcasts currently in-progress.
*
* @param mixed $from_peer Bot API ID or Update, from where to forward the messages.
* @param list<int> $message_ids IDs of the messages to forward.
* @param bool $drop_author If true, will forward messages without quoting the original author.
* @param bool $pin Whether to also pin the last sent message.
* @param float|null $delay Number of seconds to wait between each peer.
*/
public function broadcastForwardMessages(mixed $from_peer, array $message_ids, bool $drop_author = false, ?\danog\MadelineProto\Broadcast\Filter $filter = null, bool $pin = false, ?float $delay = null): int
{
return $this->wrapper->getAPI()->broadcastForwardMessages($from_peer, $message_ids, $drop_author, $filter, $pin, $delay);
}
/**
* Sends a list of messages to all peers (users, chats, channels) of the bot.
*
* A simplified version of this method is also available: broadcastForwardMessages can work with pre-prepared messages.
*
* Will return an integer ID that can be used to:
*
* - Get the current broadcast progress with getBroadcastProgress
* - Cancel the broadcast using cancelBroadcast
*
* Note that to avoid manually polling the progress,
* MadelineProto will also periodically emit updateBroadcastProgress updates,
* containing a Progress object for all broadcasts currently in-progress.
*
* @param array $messages The messages to send: an array of arrays, containing parameters to pass to messages.sendMessage.
* @param bool $pin Whether to also pin the last sent message.
* @param float|null $delay Number of seconds to wait between each peer.
*/
public function broadcastMessages(array $messages, ?\danog\MadelineProto\Broadcast\Filter $filter = null, bool $pin = false, ?float $delay = null): int
{
return $this->wrapper->getAPI()->broadcastMessages($messages, $filter, $pin, $delay);
}
/**
* Fork a new green thread and execute the passed function in the background.
*
* @template T
*
* @param \Closure(...):T $callable Function to execute
* @param mixed ...$args Arguments forwarded to the function when forking the thread.
*
* @return Future<T>
*
* @psalm-suppress InvalidScope
*/
public static function callFork(\Generator|\Amp\Future|callable $callable, ...$args): \Amp\Future
{
return \danog\MadelineProto\AsyncTools::callFork($callable, ...$args);
}
/**
* Get the file that is currently being played.
*
* Will return a string with the object ID of the stream if we're currently playing a stream, otherwise returns the related LocalFile or RemoteUrl.
*/
public function callGetCurrent(int $id): \danog\MadelineProto\RemoteUrl|\danog\MadelineProto\LocalFile|string|null
{
return $this->wrapper->getAPI()->callGetCurrent($id);
}
/**
* Play file in call.
*/
public function callPlay(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $file): void
{
$this->wrapper->getAPI()->callPlay($id, $file);
}
/**
* Play files on hold in call.
*/
public function callPlayOnHold(int $id, \danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream ...$files): void
{
$this->wrapper->getAPI()->callPlayOnHold($id, ...$files);
}
/**
* Set output file or stream for incoming OPUS audio packets in a call.
*
* Will write an OGG OPUS stream to the specified file or stream.
*/
public function callSetOutput(int $id, \danog\MadelineProto\LocalFile|\Amp\ByteStream\WritableStream $file): void
{
$this->wrapper->getAPI()->callSetOutput($id, $file);
}
/**
* Whether we can convert any audio/video file to a VoIP OGG OPUS file, or the files must be preconverted using @libtgvoipbot.
*/
public static function canConvertOgg(): bool
{
return \danog\MadelineProto\Tools::canConvertOgg();
}
/**
* Cancel a running broadcast.
*
* @param integer $id Broadcast ID
*
*/
public function cancelBroadcast(int $id): void
{
$this->wrapper->getAPI()->cancelBroadcast($id);
}
/**
* Close connection with client, connected via web.
*
* @param string $message Message
*/
public static function closeConnection(string $message): void
{
\danog\MadelineProto\Tools::closeConnection($message);
}
/**
* Complete 2FA login.
*
* @param string $password Password
*/
public function complete2faLogin(string $password): array
{
return $this->wrapper->getAPI()->complete2faLogin($password);
}
/**
* Complet user login using login code.
*
* @param string $code Login code
*/
public function completePhoneLogin(string $code): array
{
return $this->wrapper->getAPI()->completePhoneLogin($code);
}
/**
* Complete signup to Telegram.
*
* @param string $first_name First name
* @param string $last_name Last name
*/
public function completeSignup(string $first_name, string $last_name = ''): array
{
return $this->wrapper->getAPI()->completeSignup($first_name, $last_name);
}
/**
* Discard call.
*
* @param int<1, 5> $rating Call rating in stars
* @param string $comment Additional comment on call quality.
*/
public function discardCall(int $id, \danog\MadelineProto\VoIP\DiscardReason $reason = \danog\MadelineProto\VoIP\DiscardReason::HANGUP, ?int $rating = null, ?string $comment = null): void
{
$this->wrapper->getAPI()->discardCall($id, $reason, $rating, $comment);
}
/**
* Discard secret chat.
*
* @param int $chat Secret chat ID
*/
public function discardSecretChat(int $chat): void
{
$this->wrapper->getAPI()->discardSecretChat($chat);
}
/**
* Downloads a file to the browser using the specified session file.
*/
public static function downloadServer(string $session): void
{
\danog\MadelineProto\MTProto::downloadServer($session);
}
/**
* Download file to browser.
*
* Supports HEAD requests and content-ranges for parallel and resumed downloads.
*
* @param array|string|FileCallbackInterface|\danog\MadelineProto\EventHandler\Message $messageMedia File to download
* @param null|callable $cb Status callback (can also use FileCallback)
* @param null|int $size Size of file to download, required for bot API file IDs.
* @param null|string $mime MIME type of file to download, required for bot API file IDs.
* @param null|string $name Name of file to download, required for bot API file IDs.
*/
public function downloadToBrowser(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message|array|string $messageMedia, ?callable $cb = null, ?int $size = null, ?string $name = null, ?string $mime = null, ?\Amp\Cancellation $cancellation = null): void
{
$this->wrapper->getAPI()->downloadToBrowser($messageMedia, $cb, $size, $name, $mime, $cancellation);
}
/**
* Download file to callable.
* The callable must accept two parameters: string $payload, int $offset
* The callable will be called (possibly out of order, depending on the value of $seekable).
*
* @param mixed $messageMedia File to download
* @param callable|FileCallbackInterface $callable Chunk callback
* @param callable $cb Status callback
* @param bool $seekable Whether the callable can be called out of order
* @param int $offset Offset where to start downloading
* @param int $end Offset where to stop downloading (inclusive)
* @param int $part_size Size of each chunk
*/
public function downloadToCallable(mixed $messageMedia, callable $callable, ?callable $cb = null, bool $seekable = true, int $offset = 0, int $end = -1, ?int $part_size = null, ?\Amp\Cancellation $cancellation = null): void
{
$this->wrapper->getAPI()->downloadToCallable($messageMedia, $callable, $cb, $seekable, $offset, $end, $part_size, $cancellation);
}
/**
* Download file to directory.
*
* @param mixed $messageMedia File to download
* @param string|FileCallbackInterface $dir Directory where to download the file
* @param callable $cb Callback
*
* @return non-empty-string Downloaded file name
*/
public function downloadToDir(mixed $messageMedia, \danog\MadelineProto\FileCallbackInterface|string $dir, ?callable $cb = null, ?\Amp\Cancellation $cancellation = null): string
{
return $this->wrapper->getAPI()->downloadToDir($messageMedia, $dir, $cb, $cancellation);
}
/**
* Download file.
*
* @param mixed $messageMedia File to download
* @param string|FileCallbackInterface $file Downloaded file path
* @param callable $cb Callback
*
* @return non-empty-string Downloaded file name
*/
public function downloadToFile(mixed $messageMedia, \danog\MadelineProto\FileCallbackInterface|string $file, ?callable $cb = null, ?\Amp\Cancellation $cancellation = null): string
{
return $this->wrapper->getAPI()->downloadToFile($messageMedia, $file, $cb, $cancellation);
}
/**
* Download file to amphp/http-server response.
*
* Supports HEAD requests and content-ranges for parallel and resumed downloads.
*
* @param array|string|FileCallbackInterface|\danog\MadelineProto\EventHandler\Message $messageMedia File to download
* @param ServerRequest $request Request
* @param callable $cb Status callback (can also use FileCallback)
* @param null|int $size Size of file to download, required for bot API file IDs.
* @param null|string $name Name of file to download, required for bot API file IDs.
* @param null|string $mime MIME type of file to download, required for bot API file IDs.
*/
public function downloadToResponse(\danog\MadelineProto\FileCallbackInterface|\danog\MadelineProto\EventHandler\Message|array|string $messageMedia, \Amp\Http\Server\Request $request, ?callable $cb = null, ?int $size = null, ?string $mime = null, ?string $name = null, ?\Amp\Cancellation $cancellation = null): \Amp\Http\Server\Response
{
return $this->wrapper->getAPI()->downloadToResponse($messageMedia, $request, $cb, $size, $mime, $name, $cancellation);
}
/**
* Download file to an amphp stream, returning it.
*
* @param mixed $messageMedia File to download
* @param callable $cb Callback
* @param int $offset Offset where to start downloading
* @param int $end Offset where to end download
*/
public function downloadToReturnedStream(mixed $messageMedia, ?callable $cb = null, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = null): \Amp\ByteStream\ReadableStream
{
return $this->wrapper->getAPI()->downloadToReturnedStream($messageMedia, $cb, $offset, $end, $cancellation);
}
/**
* Download file to stream.
*
* @param mixed $messageMedia File to download
* @param mixed|FileCallbackInterface|resource|WritableStream $stream Stream where to download file
* @param callable $cb Callback
* @param int $offset Offset where to start downloading
* @param int $end Offset where to end download
*/
public function downloadToStream(mixed $messageMedia, mixed $stream, ?callable $cb = null, int $offset = 0, int $end = -1, ?\Amp\Cancellation $cancellation = null): void
{
$this->wrapper->getAPI()->downloadToStream($messageMedia, $stream, $cb, $offset, $end, $cancellation);
}
/**
* Asynchronously write to stdout/browser.
*
* @param string $string Message to echo
*/
public static function echo(string $string): void
{
\danog\MadelineProto\AsyncTools::echo($string);
}
/**
* Get final element of array.
*
* @template T
* @param array<T> $what Array
* @return T
*/
public static function end(array $what): mixed
{
return \danog\MadelineProto\Tools::end($what);
}
/**
* Convert a message and a set of entities to HTML.
*
* @param list<MessageEntity|array{_: string, offset: int, length: int}> $entities
* @param bool $allowTelegramTags Whether to allow telegram-specific tags like tg-spoiler, tg-emoji, mention links and so on...
*/
public static function entitiesToHtml(string $message, array $entities, bool $allowTelegramTags = false): string
{
return \danog\MadelineProto\StrTools::entitiesToHtml($message, $entities, $allowTelegramTags);
}
/**
* Export authorization.
*
* @return array{0: (int|string), 1: string}
*/
public function exportAuthorization(): array
{
return $this->wrapper->getAPI()->exportAuthorization();
}
/**
* Extract file info from bot API message.
*
* @param array $info Bot API message object
*/
public static function extractBotAPIFile(array $info): ?array
{
return \danog\MadelineProto\MTProto::extractBotAPIFile($info);
}
/**
* Extract a message constructor from an Updates constructor.
*/
public function extractMessage(array $updates): array
{
return $this->wrapper->getAPI()->extractMessage($updates);
}
/**
* Extract a message ID from an Updates constructor.
*/
public function extractMessageId(array $updates): int
{
return $this->wrapper->getAPI()->extractMessageId($updates);
}
/**
* Extract an update message constructor from an Updates constructor.
*/
public function extractMessageUpdate(array $updates): array
{
return $this->wrapper->getAPI()->extractMessageUpdate($updates);
}
/**
* Extract Update constructors from an Updates constructor.
*
* @return array<array>
*/
public function extractUpdates(array $updates): array
{
return $this->wrapper->getAPI()->extractUpdates($updates);
}
/**
* Get contents of remote file asynchronously.
*
* @param string $url URL
*/
public function fileGetContents(string $url): string
{
return $this->wrapper->getAPI()->fileGetContents($url);
}
/**
* Asynchronously lock a file
* Resolves with a callbable that MUST eventually be called in order to release the lock.
*
* @param string $file File to lock
* @param integer $operation Locking mode
* @param float $polling Polling interval
* @param ?Cancellation $token Cancellation token
* @param ?Closure $failureCb Failure callback, called only once if the first locking attempt fails.
* @return ($token is null ? (Closure(): void) : ((Closure(): void)|null))
*/
public static function flock(string $file, int $operation, float $polling = 0.1, ?\Amp\Cancellation $token = null, ?\Closure $failureCb = null): ?\Closure
{
return \danog\MadelineProto\AsyncTools::flock($file, $operation, $polling, $token, $failureCb);
}
/**
* When was full info for this chat last cached.
*
* @param mixed $id Chat ID
*/
public function fullChatLastUpdated(mixed $id): int
{
return $this->wrapper->getAPI()->fullChatLastUpdated($id);
}
/**
* Get info about the logged-in user, not cached.
*/
public function fullGetSelf(): array|false
{
return $this->wrapper->getAPI()->fullGetSelf();
}
/**
* Generate MTProto vector hash.
*
* Returns a vector hash.
*
* @param array $longs IDs
*/
public static function genVectorHash(array $longs): string
{
return \danog\MadelineProto\Tools::genVectorHash($longs);
}
/**
* Get admin IDs (equal to all user report peers).
*/
public function getAdminIds(): array
{
return $this->wrapper->getAPI()->getAdminIds();
}
/**
* Get all pending and running calls, indexed by user ID.
*
* @return array<int, VoIP>
*/
public function getAllCalls(): array
{
return $this->wrapper->getAPI()->getAllCalls();
}
/**
* Get full list of MTProto and API methods.
*/
public function getAllMethods(): array
{
return $this->wrapper->getAPI()->getAllMethods();
}
/**
* Get authorization info.
*
* @return \danog\MadelineProto\API::NOT_LOGGED_IN|\danog\MadelineProto\API::WAITING_CODE|\danog\MadelineProto\API::WAITING_SIGNUP|\danog\MadelineProto\API::WAITING_PASSWORD|\danog\MadelineProto\API::LOGGED_IN|API::LOGGED_OUT
*/
public function getAuthorization(): int
{
return $this->wrapper->getAPI()->getAuthorization();
}
/**
* Get the progress of a currently running broadcast.
*
* Will return null if the broadcast doesn't exist, has already completed or was cancelled.
*
* Use updateBroadcastProgress updates to get real-time progress status without polling.
*
* @param integer $id Broadcast ID
*/
public function getBroadcastProgress(int $id): ?\danog\MadelineProto\Broadcast\Progress
{
return $this->wrapper->getAPI()->getBroadcastProgress($id);
}
/**
* Get cached server-side config.
*/
public function getCachedConfig(): array
{
return $this->wrapper->getAPI()->getCachedConfig();
}
/**
* Get phone call information.
*/
public function getCall(int $id): ?\danog\MadelineProto\VoIP
{
return $this->wrapper->getAPI()->getCall($id);
}
/**
* Get the phone call with the specified user ID.
*/
public function getCallByPeer(int $userId): ?\danog\MadelineProto\VoIP
{
return $this->wrapper->getAPI()->getCallByPeer($userId);
}
/**
* Get call state.
*/
public function getCallState(int $id): ?\danog\MadelineProto\VoIP\CallState
{
return $this->wrapper->getAPI()->getCallState($id);
}
/**
* Store RSA keys for CDN datacenters.
*/
public function getCdnConfig(): void
{
$this->wrapper->getAPI()->getCdnConfig();
}
/**
* Get cached (or eventually re-fetch) server-side config.
*
* @param array $config Current config
*/
public function getConfig(array $config = [
]): array
{
return $this->wrapper->getAPI()->getConfig($config);
}
/**
* Get async DNS client.
*/
public function getDNSClient(): \Amp\Dns\DnsResolver
{
return $this->wrapper->getAPI()->getDNSClient();
}
/**
* Get diffie-hellman configuration.
*/
public function getDhConfig(): array
{
return $this->wrapper->getAPI()->getDhConfig();
}
/**
* Get dialog IDs.
*
* @return list<int>
*/
public function getDialogIds(): array
{
return $this->wrapper->getAPI()->getDialogIds();
}
/**
* Get download info of file
* Returns an array with the following structure:.
*
* `$info['ext']` - The file extension
* `$info['name']` - The file name, without the extension
* `$info['mime']` - The file mime type
* `$info['size']` - The file size
*
* @param mixed $messageMedia File ID
*
* @return array{
* ext: string,
* name: string,
* mime: string,
* size: int,
* InputFileLocation: array,
* key_fingerprint?: string,
* key?: string,
* iv?: string,
* thumb_size?: string
* }
*/
public function getDownloadInfo(mixed $messageMedia): array
{
return $this->wrapper->getAPI()->getDownloadInfo($messageMedia);
}
/**
* Get download link of media file.
*/
public function getDownloadLink(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|array|string $media, ?string $scriptUrl = null, ?int $size = null, ?string $name = null, ?string $mime = null): string
{
return $this->wrapper->getAPI()->getDownloadLink($media, $scriptUrl, $size, $name, $mime);
}
/**
* Get event handler (or plugin instance).
*
* @template T as EventHandler
*
* @param class-string<T>|null $class
*
* @return T|EventHandlerProxy|__PHP_Incomplete_Class|null
*/
public function getEventHandler(?string $class = null): \danog\MadelineProto\EventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|\__PHP_Incomplete_Class|null
{
return $this->wrapper->getAPI()->getEventHandler($class);
}
/**
* Get extension from file location.
*
* @param mixed $location File location
* @param string $default Default extension
*/
public static function getExtensionFromLocation(mixed $location, string $default): string
{
return \danog\MadelineProto\TL\Conversion\Extension::getExtensionFromLocation($location, $default);
}
/**
* Get extension from mime type.
*
* @param string $mime MIME type
*/
public static function getExtensionFromMime(string $mime): string
{
return \danog\MadelineProto\TL\Conversion\Extension::getExtensionFromMime($mime);
}
/**
* Get info about file.
*
* @param mixed $constructor File ID
*/
public function getFileInfo(mixed $constructor): array
{
return $this->wrapper->getAPI()->getFileInfo($constructor);
}
/**
* Get full info of all dialogs.
*
* Bots should use getDialogIds, instead.
*
* @return array<int, array>
*/
public function getFullDialogs(): array
{
return $this->wrapper->getAPI()->getFullDialogs();
}
/**
* Get full info about peer, returns an FullInfo object.
*
* @param mixed $id Peer
* @see https://docs.madelineproto.xyz/FullInfo.html
*/
public function getFullInfo(mixed $id): array
{
return $this->wrapper->getAPI()->getFullInfo($id);
}
/**
* Get async HTTP client.
*/
public function getHTTPClient(): \Amp\Http\Client\HttpClient
{
return $this->wrapper->getAPI()->getHTTPClient();
}
/**
* Get current password hint.
*/
public function getHint(): string
{
return $this->wrapper->getAPI()->getHint();
}
/**
* Get the bot API ID of a peer.
*
* @param mixed $id Peer
*/
public function getId(mixed $id): int
{
return $this->wrapper->getAPI()->getId($id);
}
/**
* Get info about peer, returns an Info object.
*
* If passed a secret chat ID, returns information about the user, not about the secret chat.
* Use getSecretChat to return information about the secret chat.
*
* @param mixed $id Peer
* @param \danog\MadelineProto\API::INFO_TYPE_* $type Whether to generate an Input*, an InputPeer or the full set of constructors
* @see https://docs.madelineproto.xyz/Info.html
* @return ($type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{
* User?: array,
* Chat?: array,
* bot_api_id: int,
* user_id?: int,
* chat_id?: int,
* channel_id?: int,
* type: string
* } : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}|array{_: string, user_id?: int, access_hash?: int, min?: bool}|array{_: string, channel_id: int, access_hash: int, min: bool})))
*/
public function getInfo(mixed $id, int $type = \danog\MadelineProto\API::INFO_TYPE_ALL): array|string|int
{
return $this->wrapper->getAPI()->getInfo($id, $type);
}
/**
* Get logger.
*/
public function getLogger(): \danog\MadelineProto\Logger
{
return $this->wrapper->getAPI()->getLogger();
}
/**
* Get current number of memory-mapped regions, UNIX only.
*/
public static function getMaps(): ?int
{
return \danog\MadelineProto\Tools::getMaps();
}
/**
* Get maximum number of memory-mapped regions, UNIX only.
* Use testFibers to get the maximum number of fibers on any platform.
*/
public static function getMaxMaps(): ?int
{
return \danog\MadelineProto\Tools::getMaxMaps();
}
/**
* Get TL namespaces.
*/
public function getMethodNamespaces(): array
{
return $this->wrapper->getAPI()->getMethodNamespaces();
}
/**
* Get namespaced methods (method => namespace).
*/
public function getMethodsNamespaced(): array
{
return $this->wrapper->getAPI()->getMethodsNamespaced();
}
/**
* Get mime type from buffer.
*
* @param string $buffer Buffer
*/
public static function getMimeFromBuffer(string $buffer): string
{
return \danog\MadelineProto\TL\Conversion\Extension::getMimeFromBuffer($buffer);
}
/**
* Get mime type from file extension.
*
* @param string $extension File extension
* @param string $default Default mime type
*/
public static function getMimeFromExtension(string $extension, string $default): string
{
return \danog\MadelineProto\TL\Conversion\Extension::getMimeFromExtension($extension, $default);
}
/**
* Get mime type of file.
*
* @param string $file File
*/
public static function getMimeFromFile(string $file): string
{
return \danog\MadelineProto\TL\Conversion\Extension::getMimeFromFile($file);
}
/**
* Obtain a certain event handler plugin instance.
*
* @template T as EventHandler
*
* @param class-string<T> $class
*
* return T|null
*/
public function getPlugin(string $class): \danog\MadelineProto\PluginEventHandler|\danog\MadelineProto\Ipc\EventHandlerProxy|null
{
return $this->wrapper->getAPI()->getPlugin($class);
}
/**
* Get download info of the propic of a user
* Returns an array with the following structure:.
*
* `$info['ext']` - The file extension
* `$info['name']` - The file name, without the extension
* `$info['mime']` - The file mime type
* `$info['size']` - The file size
*/
public function getPropicInfo($data): array
{
return $this->wrapper->getAPI()->getPropicInfo($data);
}
/**
* Get PSR logger.
*/
public function getPsrLogger(): \Psr\Log\LoggerInterface
{
return $this->wrapper->getAPI()->getPsrLogger();
}
/**
* Get full info about peer (including full list of channel members), returns a Chat object.
*
* @param mixed $id Peer
* @see https://docs.madelineproto.xyz/Chat.html
*/
public function getPwrChat(mixed $id, bool $fullfetch = true): array
{
return $this->wrapper->getAPI()->getPwrChat($id, $fullfetch);
}
/**
* Get secret chat.
*
* @param array|int $chat Secret chat ID
*/
public function getSecretChat(array|int $chat): \danog\MadelineProto\SecretChats\SecretChat
{
return $this->wrapper->getAPI()->getSecretChat($chat);
}
/**
* Gets a secret chat message.
*
* @param integer $chatId Secret chat ID.
* @param integer $randomId Secret chat message ID.
*/
public function getSecretMessage(int $chatId, int $randomId): \danog\MadelineProto\EventHandler\Message\SecretMessage
{
return $this->wrapper->getAPI()->getSecretMessage($chatId, $randomId);
}
/**
* Get info about the logged-in user, cached.
*
* Use fullGetSelf to bypass the cache.
*/
public function getSelf(): array|false
{
return $this->wrapper->getAPI()->getSelf();
}
/**
* Returns the session name.
*/
public function getSessionName(): string
{
return $this->wrapper->getAPI()->getSessionName();
}
/**
* Return current settings.
*/
public function getSettings(): \danog\MadelineProto\Settings
{
return $this->wrapper->getAPI()->getSettings();
}
/**
* Get sponsored messages for channel.
* This method will return an array of [sponsored message objects](https://docs.madelineproto.xyz/API_docs/constructors/sponsoredMessage.html).
*
* See [the API documentation](https://core.telegram.org/api/sponsored-messages) for more info on how to handle sponsored messages.
*
* @param int|string|array $peer Channel ID, or Update, or Message, or Peer.
*/
public function getSponsoredMessages(array|string|int $peer): ?array
{
return $this->wrapper->getAPI()->getSponsoredMessages($peer);
}
/**
* Provide a stream for a file, URL or amp stream.
*/
public function getStream(\danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = null): \Amp\ByteStream\ReadableStream
{
return $this->wrapper->getAPI()->getStream($stream, $cancellation);
}
/**
* Obtains a pipe that can be used to upload a file from a stream.
*
*/
public static function getStreamPipe(): \Amp\ByteStream\Pipe
{
return \danog\MadelineProto\Tools::getStreamPipe();
}
/**
* Get TL serializer.
*/
public function getTL(): \danog\MadelineProto\TL\TLInterface
{
return $this->wrapper->getAPI()->getTL();
}
/**
* Get type of peer.
*
* @param mixed $id Peer
*
* @return \danog\MadelineProto\API::PEER_TYPE_*
*/
public function getType(mixed $id): string
{
return $this->wrapper->getAPI()->getType($id);
}
/**
* Only useful when consuming MadelineProto updates through an API in another language (like Javascript), **absolutely not recommended when directly writing MadelineProto bots**.
*
* `getUpdates` will **greatly slow down your bot** if used directly inside of PHP code.
*
* **Only use the [event handler](#async-event-driven) when writing a MadelineProto bot**, because update handling in the **event handler** is completely parallelized and non-blocking.
*
* @param array{offset?: int, limit?: int, timeout?: float} $params Params
* @return list<array{update_id: mixed, update: mixed}>
*/
public function getUpdates(array $params = [
]): array
{
return $this->wrapper->getAPI()->getUpdates($params);
}
/**
* Get a message to show to the user when starting the bot.
*/
public function getWebMessage(string $message): string
{
return $this->wrapper->getAPI()->getWebMessage($message);
}
/**
* Get various warnings to show to the user in the web UI.
*/
public static function getWebWarnings(): string
{
return \danog\MadelineProto\MTProto::getWebWarnings();
}
/**
* Check if has admins.
*/
public function hasAdmins(): bool
{
return $this->wrapper->getAPI()->hasAdmins();
}
/**
* Check if an event handler instance is present.
*/
public function hasEventHandler(): bool
{
return $this->wrapper->getAPI()->hasEventHandler();
}
/**
* Check if a certain event handler plugin is installed.
*
* @param class-string<EventHandler> $class
*/
public function hasPlugin(string $class): bool
{
return $this->wrapper->getAPI()->hasPlugin($class);
}
/**
* Check if has report peers.
*/
public function hasReportPeers(): bool
{
return $this->wrapper->getAPI()->hasReportPeers();
}
/**
* Check whether secret chat exists.
*
* @param array|int $chat Secret chat ID
*/
public function hasSecretChat(array|int $chat): bool
{
return $this->wrapper->getAPI()->hasSecretChat($chat);
}
/**
* Escape string for MadelineProto's HTML entity converter.
*
* @param string $what String to escape
*/
public static function htmlEscape(string $what): string
{
return \danog\MadelineProto\StrTools::htmlEscape($what);
}
/**
* Manually convert HTML to a message and a set of entities.
*
* NOTE: You don't have to use this method to send HTML messages.
*
* This method is already called automatically by using parse_mode: "HTML" in messages.sendMessage, messages.sendMedia, et cetera...
*
* @see https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode
*
* @return \danog\MadelineProto\TL\Conversion\DOMEntities Object containing message and entities
*/
public static function htmlToMessageEntities(string $html): \danog\MadelineProto\TL\Conversion\DOMEntities
{
return \danog\MadelineProto\StrTools::htmlToMessageEntities($html);
}
/**
* Import authorization.
*
* @param array<int, string> $authorization Authorization info
* @param int $mainDcID Main DC ID
*/
public function importAuthorization(array $authorization, int $mainDcID): array
{
return $this->wrapper->getAPI()->importAuthorization($authorization, $mainDcID);
}
/**
* Inflate stripped photosize to full JPG payload.
*
* @param string $stripped Stripped photosize
*/
public static function inflateStripped(string $stripped): string
{
return \danog\MadelineProto\Tools::inflateStripped($stripped);
}
/**
* Initialize self-restart hack.
*/
public function initSelfRestart(): void
{
$this->wrapper->getAPI()->initSelfRestart();
}
/**
* Whether this is altervista.
*/
public static function isAltervista(): bool
{
return \danog\MadelineProto\Tools::isAltervista();
}
/**
* Check if is array or similar (traversable && countable && arrayAccess).
*
* @param mixed $var Value to check
*/
public static function isArrayOrAlike(mixed $var): bool
{
return \danog\MadelineProto\Tools::isArrayOrAlike($var);
}
/**
* Check if the specified peer is a bot.
*
*/
public function isBot(mixed $peer): bool
{
return $this->wrapper->getAPI()->isBot($peer);
}
/**
* Check if the specified peer is a forum.
*
*/
public function isForum(mixed $peer): bool
{
return $this->wrapper->getAPI()->isForum($peer);
}
/**
* Whether we're an IPC client instance.
*/
public function isIpc(): bool
{
return $this->wrapper->getAPI()->isIpc();
}
/**
* Whether we're an IPC server process (as opposed to an event handler).
*/
public function isIpcWorker(): bool
{
return $this->wrapper->getAPI()->isIpcWorker();
}
/**
* Whether the currently playing audio file is paused.
*/
public function isPlayPaused(int $id): bool
{
return $this->wrapper->getAPI()->isPlayPaused($id);
}
/**
* Returns whether the current user is a premium user, cached.
*/
public function isPremium(): bool
{
return $this->wrapper->getAPI()->isPremium();
}
/**
* Returns whether the current user is a bot.
*/
public function isSelfBot(): bool
{
return $this->wrapper->getAPI()->isSelfBot();
}
/**
* Returns whether the current user is a user.
*/
public function isSelfUser(): bool
{
return $this->wrapper->getAPI()->isSelfUser();
}
/**
* Whether we're currently connected to the test DCs.
*
* @return boolean
*/
public function isTestMode(): bool
{
return $this->wrapper->getAPI()->isTestMode();
}
/**
* Logger.
*
* @param mixed $param Parameter
* @param int $level Logging level
* @param string $file File where the message originated
*/
public function logger(mixed $param, int $level = \danog\MadelineProto\Logger::NOTICE, string $file = ''): void
{
$this->wrapper->getAPI()->logger($param, $level, $file);
}
/**
* Logout the session.
*/
public function logout(): void
{
$this->wrapper->getAPI()->logout();
}
/**
* Escape string for markdown code section.
*
* @param string $what String to escape
*/
public static function markdownCodeEscape(string $what): string
{
return \danog\MadelineProto\StrTools::markdownCodeEscape($what);
}
/**
* Escape string for markdown codeblock.
*
* @param string $what String to escape
*/
public static function markdownCodeblockEscape(string $what): string
{
return \danog\MadelineProto\StrTools::markdownCodeblockEscape($what);
}
/**
* Escape string for markdown.
*
* @param string $what String to escape
*/
public static function markdownEscape(string $what): string
{
return \danog\MadelineProto\StrTools::markdownEscape($what);
}
/**
* Manually convert markdown to a message and a set of entities.
*
* NOTE: You don't have to use this method to send Markdown messages.
*
* This method is already called automatically by using parse_mode: "Markdown" in messages.sendMessage, messages.sendMedia, et cetera...
*
* @see https://docs.madelineproto.xyz/API_docs/methods/messages.sendMessage.html#usage-of-parse_mode
*
* @return \danog\MadelineProto\TL\Conversion\MarkdownEntities Object containing message and entities
*/
public static function markdownToMessageEntities(string $markdown): \danog\MadelineProto\TL\Conversion\MarkdownEntities
{
return \danog\MadelineProto\StrTools::markdownToMessageEntities($markdown);
}
/**
* Escape string for URL.
*
* @param string $what String to escape
*/
public static function markdownUrlEscape(string $what): string
{
return \danog\MadelineProto\StrTools::markdownUrlEscape($what);
}
/**
* Telegram UTF-8 multibyte split.
*
* @param string $text Text
* @param integer $length Length
* @return array<string>
*/
public static function mbStrSplit(string $text, int $length): array
{
return \danog\MadelineProto\StrTools::mbStrSplit($text, $length);
}
/**
* Get Telegram UTF-8 length of string.
*
* @param string $text Text
*/
public static function mbStrlen(string $text): int
{
return \danog\MadelineProto\StrTools::mbStrlen($text);
}
/**
* Telegram UTF-8 multibyte substring.
*
* @param string $text Text to substring
* @param integer $offset Offset
* @param null|int $length Length
*/
public static function mbSubstr(string $text, int $offset, ?int $length = null): string
{
return \danog\MadelineProto\StrTools::mbSubstr($text, $offset, $length);
}
/**
* Provide a buffered reader for a file, URL or amp stream.
*
* @return Closure(int): ?string
*/
public static function openBuffered(\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\Amp\ByteStream\ReadableStream $stream, ?\Amp\Cancellation $cancellation = null): \Closure
{
return \danog\MadelineProto\Tools::openBuffered($stream, $cancellation);
}
/**
* Opens a file in append-only mode.
*
* @param string $path File path.
*/
public static function openFileAppendOnly(string $path): \Amp\File\File
{
return \danog\MadelineProto\Tools::openFileAppendOnly($path);
}
/**
* Convert double to binary version.
*
* @param float $value Value to convert
*/
public static function packDouble(float $value): string
{
return \danog\MadelineProto\Tools::packDouble($value);
}
/**
* Convert integer to base256 signed int.
*
* @param integer $value Value to convert
*/
public static function packSignedInt(int $value): string
{
return \danog\MadelineProto\Tools::packSignedInt($value);
}
/**
* Convert integer to base256 long.
*
* @param int $value Value to convert
*/
public static function packSignedLong(int $value): string
{
return \danog\MadelineProto\Tools::packSignedLong($value);
}
/**
* Convert value to unsigned base256 int.
*
* @param int $value Value
*/
public static function packUnsignedInt(int $value): string
{
return \danog\MadelineProto\Tools::packUnsignedInt($value);
}
/**
* Pauses playback of the current audio file in the call.
*/
public function pausePlay(int $id): void
{
$this->wrapper->getAPI()->pausePlay($id);
}
/**
* Check if peer is present in internal peer database.
*
* @param mixed $id Peer
*/
public function peerIsset(mixed $id): bool
{
return $this->wrapper->getAPI()->peerIsset($id);
}
/**
* Login as user.
*
* @param string $number Phone number
* @param integer $sms_type SMS type
*/
public function phoneLogin(string $number, int $sms_type = 5): array
{
return $this->wrapper->getAPI()->phoneLogin($number, $sms_type);
}
/**
* Positive modulo
* Works just like the % (modulus) operator, only returns always a postive number.
*
* @param int $a A
* @param int $b B
*/
public static function posmod(int $a, int $b): int
{
return \danog\MadelineProto\Tools::posmod($a, $b);
}
/**
* Internal endpoint used by the download server.
*/
public static function processDownloadServerPing(string $path, string $payload): void
{
\danog\MadelineProto\MTProto::processDownloadServerPing($path, $payload);
}
/**
* Initiates QR code login.
*
* Returns a QR code login helper object, that can be used to render the QR code, display the link directly, wait for login, QR code expiration and much more.
*
* Returns null if we're already logged in, or if we're waiting for a password (use getAuthorization to distinguish between the two cases).
*/
public function qrLogin(): ?\danog\MadelineProto\TL\Types\LoginQrCode
{
return $this->wrapper->getAPI()->qrLogin();
}
/**
* Get secure random string of specified length.
*
* @param integer $length Length
*/
public static function random(int $length): string
{
return \danog\MadelineProto\Tools::random($length);
}
/**
* Get random integer.
*
* @param integer $modulus Modulus
*/
public static function randomInt(int $modulus = 0): int
{
return \danog\MadelineProto\Tools::randomInt($modulus);
}
/**
* Asynchronously read line.
*
* @param string $prompt Prompt
*/
public static function readLine(string $prompt = '', ?\Amp\Cancellation $cancel = null): string
{
return \danog\MadelineProto\AsyncTools::readLine($prompt, $cancel);
}
/**
* Refresh full peer cache for a certain peer.
*
* @param mixed $id The peer to refresh
*/
public function refreshFullPeerCache(mixed $id): void
{
$this->wrapper->getAPI()->refreshFullPeerCache($id);
}
/**
* Refresh peer cache for a certain peer.
*
*/
public function refreshPeerCache(mixed ...$ids): void
{
$this->wrapper->getAPI()->refreshPeerCache(...$ids);
}
/**
* Report an error to the previously set peer.
*
* @param string $message Error to report
* @param string $parseMode Parse mode
*/
public function report(string $message, string $parseMode = ''): void
{
$this->wrapper->getAPI()->report($message, $parseMode);
}
/**
* Report memory profile with memprof.
*/
public function reportMemoryProfile(): void
{
$this->wrapper->getAPI()->reportMemoryProfile();
}
/**
* Request VoIP call.
*
* @param mixed $user User
*/
public function requestCall(mixed $user): \danog\MadelineProto\VoIP
{
return $this->wrapper->getAPI()->requestCall($user);
}
/**
* Request secret chat.
*
* @param mixed $user User to start secret chat with
*/
public function requestSecretChat(mixed $user): int
{
return $this->wrapper->getAPI()->requestSecretChat($user);
}
/**
* Reset the update state and fetch all updates from the beginning.
*/
public function resetUpdateState(): void
{
$this->wrapper->getAPI()->resetUpdateState();
}
/**
* Restart update loop.
*/
public function restart(): void
{
$this->wrapper->getAPI()->restart();
}
/**
* Resumes playback of the current audio file in the call.
*/
public function resumePlay(int $id): void
{
$this->wrapper->getAPI()->resumePlay($id);
}
/**
* Rethrow exception into event loop.
*/
public static function rethrow(\Throwable $e): void
{
\danog\MadelineProto\AsyncTools::rethrow($e);
}
/**
* null-byte RLE decode.
*
* @param string $string Data to decode
*/
public static function rleDecode(string $string): string
{
return \danog\MadelineProto\Tools::rleDecode($string);
}
/**
* null-byte RLE encode.
*
* @param string $string Data to encode
*/
public static function rleEncode(string $string): string
{
return \danog\MadelineProto\Tools::rleEncode($string);
}
/**
* Sends an updateCustomEvent update to the event handler.
*/
public function sendCustomEvent(mixed $payload): void
{
$this->wrapper->getAPI()->sendCustomEvent($payload);
}
/**
* Sends a document.
*
* Please use named arguments to call this method.
*
* @param integer|string $peer Destination peer or username.
* @param Message|Media|LocalFile|RemoteUrl|BotApiFileId|ReadableStream $file File to upload: can be a message to reuse media present in a message.
* @param Message|Media|LocalFile|RemoteUrl|BotApiFileId|ReadableStream|null $thumb Optional: Thumbnail to upload
* @param string $caption Caption of document
* @param ?callable(float, float, int) $callback Upload callback (percent, speed in mpbs, time elapsed)
* @param ?string $fileName Optional file name, if absent will be extracted from the passed $file.
* @param ParseMode $parseMode Text parse mode for the caption
* @param integer|null $replyToMsgId ID of message to reply to.
* @param integer|null $topMsgId ID of thread where to send the message.
* @param array|null $replyMarkup Keyboard information.
* @param integer|null $sendAs Peer to send the message as.
* @param integer|null $scheduleDate Schedule date.
* @param boolean $silent Whether to send the message silently, without triggering notifications.
* @param boolean $background Send this message as background message
* @param boolean $clearDraft Clears the draft field
* @param boolean $updateStickersetsOrder Whether to move used stickersets to top
* @param boolean $forceResend Whether to forcefully resend the file, even if its type and name are the same.
* @param Cancellation $cancellation Cancellation.
*
*/
public function sendDocument(string|int $peer, \danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $file, \danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream|null $thumb = null, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = null, ?string $fileName = null, ?string $mimeType = null, ?int $ttl = null, bool $spoiler = false, ?int $replyToMsgId = null, ?int $topMsgId = null, ?array $replyMarkup = null, string|int|null $sendAs = null, ?int $scheduleDate = null, bool $silent = false, bool $noForwards = false, bool $background = false, bool $clearDraft = false, bool $updateStickersetsOrder = false, bool $forceResend = false, ?\Amp\Cancellation $cancellation = null): \danog\MadelineProto\EventHandler\Message
{
return $this->wrapper->getAPI()->sendDocument($peer, $file, $thumb, $caption, $parseMode, $callback, $fileName, $mimeType, $ttl, $spoiler, $replyToMsgId, $topMsgId, $replyMarkup, $sendAs, $scheduleDate, $silent, $noForwards, $background, $clearDraft, $updateStickersetsOrder, $forceResend, $cancellation);
}
/**
* Sends a message.
*
* @param integer|string $peer Destination peer or username.
* @param string $message Message to send
* @param ParseMode $parseMode Parse mode
* @param integer|null $replyToMsgId ID of message to reply to.
* @param integer|null $topMsgId ID of thread where to send the message.
* @param array|null $replyMarkup Keyboard information.
* @param integer|null $sendAs Peer to send the message as.
* @param integer|null $scheduleDate Schedule date.
* @param boolean $silent Whether to send the message silently, without triggering notifications.
* @param boolean $background Send this message as background message
* @param boolean $clearDraft Clears the draft field
* @param boolean $noWebpage Set this flag to disable generation of the webpage preview
* @param boolean $updateStickersetsOrder Whether to move used stickersets to top
* @param ?Cancellation $cancellation Cancellation
*/
public function sendMessage(string|int $peer, string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?int $replyToMsgId = null, ?int $topMsgId = null, ?array $replyMarkup = null, string|int|null $sendAs = null, ?int $scheduleDate = null, bool $silent = false, bool $noForwards = false, bool $background = false, bool $clearDraft = false, bool $noWebpage = false, bool $updateStickersetsOrder = false, ?\Amp\Cancellation $cancellation = null): \danog\MadelineProto\EventHandler\Message
{
return $this->wrapper->getAPI()->sendMessage($peer, $message, $parseMode, $replyToMsgId, $topMsgId, $replyMarkup, $sendAs, $scheduleDate, $silent, $noForwards, $background, $clearDraft, $noWebpage, $updateStickersetsOrder, $cancellation);
}
/**
* Sends a message to all report peers (admins of the bot).
*
* @param string $message Message to send
* @param ParseMode $parseMode Parse mode
* @param array|null $replyMarkup Keyboard information.
* @param integer|null $scheduleDate Schedule date.
* @param boolean $silent Whether to send the message silently, without triggering notifications.
* @param boolean $background Send this message as background message
* @param boolean $clearDraft Clears the draft field
* @param boolean $noWebpage Set this flag to disable generation of the webpage preview
*
* @return list<\danog\MadelineProto\EventHandler\Message>
*/
public function sendMessageToAdmins(string $message, \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?array $replyMarkup = null, ?int $scheduleDate = null, bool $silent = false, bool $noForwards = false, bool $background = false, bool $clearDraft = false, bool $noWebpage = false, ?\Amp\Cancellation $cancellation = null): array
{
return $this->wrapper->getAPI()->sendMessageToAdmins($message, $parseMode, $replyMarkup, $scheduleDate, $silent, $noForwards, $background, $clearDraft, $noWebpage, $cancellation);
}
/**
* Sends a photo.
*
* Please use named arguments to call this method.
*
* @param integer|string $peer Destination peer or username.
* @param Message|Media|LocalFile|RemoteUrl|BotApiFileId|ReadableStream $file File to upload: can be a message to reuse media present in a message.
* @param string $caption Caption of document
* @param ?callable(float, float, int) $callback Upload callback (percent, speed in mpbs, time elapsed)
* @param ?string $fileName Optional file name, if absent will be extracted from the passed $file.
* @param ParseMode $parseMode Text parse mode for the caption
* @param integer|null $replyToMsgId ID of message to reply to.
* @param integer|null $topMsgId ID of thread where to send the message.
* @param array|null $replyMarkup Keyboard information.
* @param integer|null $sendAs Peer to send the message as.
* @param integer|null $scheduleDate Schedule date.
* @param boolean $silent Whether to send the message silently, without triggering notifications.
* @param boolean $background Send this message as background message
* @param boolean $clearDraft Clears the draft field
* @param boolean $updateStickersetsOrder Whether to move used stickersets to top
* @param boolean $forceResend Whether to forcefully resend the file, even if its type and name are the same.
* @param Cancellation $cancellation Cancellation.
*
*/
public function sendPhoto(string|int $peer, \danog\MadelineProto\EventHandler\Message|\danog\MadelineProto\EventHandler\Media|\danog\MadelineProto\LocalFile|\danog\MadelineProto\RemoteUrl|\danog\MadelineProto\BotApiFileId|\Amp\ByteStream\ReadableStream $file, string $caption = '', \danog\MadelineProto\ParseMode $parseMode = \danog\MadelineProto\ParseMode::TEXT, ?callable $callback = null, ?string $fileName = null, ?int $ttl = null, bool $spoiler = false, ?int $replyToMsgId = null, ?int $topMsgId = null, ?array $replyMarkup = null, string|int|null $sendAs = null, ?int $scheduleDate = null, bool $silent = false, bool $noForwards = false, bool $background = false, bool $clearDraft = false, bool $updateStickersetsOrder = false, bool $forceResend = false, ?\Amp\Cancellation $cancellation = null): \danog\MadelineProto\EventHandler\Message
{
return $this->wrapper->getAPI()->sendPhoto($peer, $file, $caption, $parseMode, $callback, $fileName, $ttl, $spoiler, $replyToMsgId, $topMsgId, $replyMarkup, $sendAs, $scheduleDate, $silent, $noForwards, $background, $clearDraft, $updateStickersetsOrder, $forceResend, $cancellation);
}
/**
* Set NOOP update handler, ignoring all updates.
*/
public function setNoop(): void
{
$this->wrapper->getAPI()->setNoop();
}
/**
* Set peer(s) where to send errors occurred in the event loop.
*
* @param int|string|array<int|string> $userOrId Username(s) or peer ID(s)
*/
public function setReportPeers(array|string|int $userOrId): void
{
$this->wrapper->getAPI()->setReportPeers($userOrId);
}
/**
* Set webhook update handler.
*
* @param string $webhookUrl Webhook URL
*/
public function setWebhook(string $webhookUrl): void
{
$this->wrapper->getAPI()->setWebhook($webhookUrl);
}
/**
* When called, skips to the next file in the playlist.
*/
public function skipPlay(int $id): void
{
$this->wrapper->getAPI()->skipPlay($id);
}
/**
* Asynchronously sleep.
*
* @param float $time Number of seconds to sleep for
*/
public static function sleep(float $time): void
{
\danog\MadelineProto\AsyncTools::sleep($time);
}
/**
* Log in to telegram (via CLI or web).
*/
public function start(): array
{
return $this->wrapper->getAPI()->start();
}
/**
* Stop update loop.
*/
public function stop(): void
{
$this->wrapper->getAPI()->stop();
}
/**
* Stops playing all files in the call, clears the main and the hold playlist.
*/
public function stopPlay(int $id): void
{
$this->wrapper->getAPI()->stopPlay($id);
}
/**
* Converts a string into an async amphp stream.
*/
public static function stringToStream(string $str): \Amp\ByteStream\ReadableBuffer
{
return \danog\MadelineProto\Tools::stringToStream($str);
}
/**
* Subscribe to event handler updates for a channel/supergroup we're not a member of.
*
* @param mixed $channel Channel/supergroup to subscribe to
*
* @return bool False if we were already subscribed
*/
public function subscribeToUpdates(mixed $channel): bool
{
return $this->wrapper->getAPI()->subscribeToUpdates($channel);
}
/**
* Convert TD to MTProto parameters.
*
* @param array $params Parameters
*/
public function tdToMTProto(array $params): array
{
return $this->wrapper->getAPI()->tdToMTProto($params);
}
/**
* Convert TD parameters to tdcli.
*
* @param mixed $params Parameters
*/
public function tdToTdcli(mixed $params): array
{
return $this->wrapper->getAPI()->tdToTdcli($params);
}
/**
* Convert tdcli parameters to tdcli.
*
* @param mixed $params Params
* @param array $key Key
*/
public function tdcliToTd(&$params, ?array $key = null): array
{
return $this->wrapper->getAPI()->tdcliToTd($params, $key);
}
/**
* Test fibers.
*
* @return array{maxFibers: int, realMemoryMb: int, maps: ?int, maxMaps: ?int}
*/
public static function testFibers(int $fiberCount = 100000): array
{
return \danog\MadelineProto\Tools::testFibers($fiberCount);
}
/**
* Convert to camelCase.
*
* @param string $input String
*/
public static function toCamelCase(string $input): string
{
return \danog\MadelineProto\StrTools::toCamelCase($input);
}
/**
* Convert to snake_case.
*
* @param string $input String
*/
public static function toSnakeCase(string $input): string
{
return \danog\MadelineProto\StrTools::toSnakeCase($input);
}
/**
* Unpack binary double.
*
* @param string $value Value to unpack
*/
public static function unpackDouble(string $value): float
{
return \danog\MadelineProto\Tools::unpackDouble($value);
}
/**
* Unpack bot API file ID.
*
* @param string $fileId Bot API file ID
* @return array Unpacked file ID
*/
public static function unpackFileId(string $fileId): array
{
return \danog\MadelineProto\MTProto::unpackFileId($fileId);
}
/**
* Unpack base256 signed int.
*
* @param string $value base256 int
*/
public static function unpackSignedInt(string $value): int
{
return \danog\MadelineProto\Tools::unpackSignedInt($value);
}
/**
* Unpack base256 signed long.
*
* @param string $value base256 long
*/
public static function unpackSignedLong(string $value): int
{
return \danog\MadelineProto\Tools::unpackSignedLong($value);
}
/**
* Unpack base256 signed long to string.
*
* @param string|int|array $value base256 long
*/
public static function unpackSignedLongString(array|string|int $value): string
{
return \danog\MadelineProto\Tools::unpackSignedLongString($value);
}
/**
* Unset event handler.
*
*/
public function unsetEventHandler(): void
{
$this->wrapper->getAPI()->unsetEventHandler();
}
/**
* Update the 2FA password.
*
* The params array can contain password, new_password, email and hint params.
*
* @param array{password?: string, new_password?: string, email?: string, hint?: string} $params The params
*/
public function update2fa(array $params): void
{
$this->wrapper->getAPI()->update2fa($params);
}
/**
* Parse, update and store settings.
*
* @param SettingsAbstract $settings Settings
*/
public function updateSettings(\danog\MadelineProto\SettingsAbstract $settings): void
{
$this->wrapper->getAPI()->updateSettings($settings);
}
/**
* Upload file.
*
* @param FileCallbackInterface|LocalFile|RemoteUrl|BotApiFileId|string|array|resource $file File, URL or Telegram file to upload
* @param string $fileName File name
* @param callable $cb Callback
* @param boolean $encrypted Whether to encrypt file for secret chats
*
* @return array InputFile constructor
*/
public function upload($file, string $fileName = '', ?callable $cb = null, bool $encrypted = false, ?\Amp\Cancellation $cancellation = null): array
{
return $this->wrapper->getAPI()->upload($file, $fileName, $cb, $encrypted, $cancellation);
}
/**
* Upload file to secret chat.
*
* @param FileCallbackInterface|LocalFile|RemoteUrl|BotApiFileId|string|array|resource $file File, URL or Telegram file to upload
* @param string $fileName File name
* @param callable $cb Callback
*
* @return array InputFile constructor
*/
public function uploadEncrypted($file, string $fileName = '', ?callable $cb = null, ?\Amp\Cancellation $cancellation = null): array
{
return $this->wrapper->getAPI()->uploadEncrypted($file, $fileName, $cb, $cancellation);
}
/**
* Upload file from callable.
*
* The callable must accept two parameters: int $offset, int $size
* The callable must return a string with the contest of the file at the specified offset and size.
*
* @param callable(int, int, ?Cancellation): string $callable Callable (offset, length) => data
* @param integer $size File size
* @param string $mime Mime type
* @param string $fileName File name
* @param callable(float, float, float): void $cb Status callback
* @param boolean $seekable Whether chunks can be fetched out of order
* @param boolean $encrypted Whether to encrypt file for secret chats
*
* @return array InputFile constructor
*/
public function uploadFromCallable(callable $callable, int $size = 0, string $mime = 'application/octet-stream', string $fileName = '', ?callable $cb = null, bool $seekable = true, bool $encrypted = false, ?\Amp\Cancellation $cancellation = null): array
{
return $this->wrapper->getAPI()->uploadFromCallable($callable, $size, $mime, $fileName, $cb, $seekable, $encrypted, $cancellation);
}
/**
* Upload file from stream.
*
* @param mixed $stream PHP resource or AMPHP async stream
* @param integer $size File size
* @param string $mime Mime type
* @param string $fileName File name
* @param callable $cb Callback
* @param boolean $encrypted Whether to encrypt file for secret chats
*
* @return array InputFile constructor
*/
public function uploadFromStream(mixed $stream, int $size = 0, string $mime = 'application/octet-stream', string $fileName = '', ?callable $cb = null, bool $encrypted = false, ?\Amp\Cancellation $cancellation = null): array
{
return $this->wrapper->getAPI()->uploadFromStream($stream, $size, $mime, $fileName, $cb, $encrypted, $cancellation);
}
/**
* Reupload telegram file.
*
* @param mixed $media Telegram file
* @param callable $cb Callback
* @param boolean $encrypted Whether to encrypt file for secret chats
*
* @return array InputFile constructor
*/
public function uploadFromTgfile(mixed $media, ?callable $cb = null, bool $encrypted = false, ?\Amp\Cancellation $cancellation = null): array
{
return $this->wrapper->getAPI()->uploadFromTgfile($media, $cb, $encrypted, $cancellation);
}
/**
* Upload file from URL.
*
* @param string|FileCallbackInterface $url URL of file
* @param integer $size Size of file
* @param string $fileName File name
* @param callable $cb Callback
* @param boolean $encrypted Whether to encrypt file for secret chats
* @return array InputFile constructor
*/
public function uploadFromUrl(\danog\MadelineProto\FileCallbackInterface|string $url, int $size = 0, string $fileName = '', ?callable $cb = null, bool $encrypted = false, ?\Amp\Cancellation $cancellation = null): array
{
return $this->wrapper->getAPI()->uploadFromUrl($url, $size, $fileName, $cb, $encrypted, $cancellation);
}
/**
* Perform static analysis on a certain event handler class, to make sure it satisfies some performance requirements.
*
* @param class-string<EventHandler> $class Class name
*
* @return list<EventHandlerIssue>
*/
public static function validateEventHandlerClass(string $class): array
{
return \danog\MadelineProto\Tools::validateEventHandlerClass($class);
}
/**
* Mark sponsored message as read.
*
* @param int|array $peer Channel ID, or Update, or Message, or Peer.
* @param string|array{random_id: string} $message Random ID or sponsored message to mark as read.
*/
public function viewSponsoredMessage(array|int $peer, array|string $message): bool
{
return $this->wrapper->getAPI()->viewSponsoredMessage($peer, $message);
}
/**
* Wrap a media constructor into an abstract Media object.
*/
public function wrapMedia(array $media, bool $protected = false): ?\danog\MadelineProto\EventHandler\Media
{
return $this->wrapper->getAPI()->wrapMedia($media, $protected);
}
/**
* Wrap a Message constructor into an abstract Message object.
*/
public function wrapMessage(array $message): ?\danog\MadelineProto\EventHandler\AbstractMessage
{
return $this->wrapper->getAPI()->wrapMessage($message);
}
/**
* Wrap a Pin constructor into an abstract Pinned object.
*/
public function wrapPin(array $message): ?\danog\MadelineProto\EventHandler\Pinned
{
return $this->wrapper->getAPI()->wrapPin($message);
}
/**
* Wrap an Update constructor into an abstract Update object.
*/
public function wrapUpdate(array $update): ?\danog\MadelineProto\EventHandler\Update
{
return $this->wrapper->getAPI()->wrapUpdate($update);
}
}