$settings
__construct($this->session->getSessionDirectoryPath())]]>
Logger::$default
getMessage
wakeup
API
API
API
API
API
API
API
API
API
API
API
API
API
API
API
API
API
API
API
logger
$eventHandler
getMessage
isInited
setEventHandler
APIStart
\is_callable($callable)
$id
broadcasts[$id]]]>
broadcasts[$id]]]>
broadcasts[$id]?->cancel()]]>
broadcasts[$id]?->getProgress()]]>
filter->whitelist) && !\in_array($peer, $this->filter->whitelist, true)]]>
stream]]>
getStream()]]>
$API
$datacenter
$logger
$shared
getInputClientProxy
isHttp
refreshNext
refreshNext
$uri
$auth_key
$data
$data
$fileName
$fileName
$fp
$options
$options
$settings
$tdesktop_base_path
$tdesktop_key
$tdesktop_user_base_path
tdesktop
tdesktop_decrypt
tdesktop_fopen
tdesktop_fopen_encrypted
tdesktop_md5
tdesktop_read_bytearray
$part_one_md5
$part_one_md5
$dc
$main_dc_id
getConfig
$default[2]
$default[2]
$API
$connectionsPromise
$datacenter
bind
hasTempAuthKey()
&& $authorized_socket->hasPermAuthKey()
&& $authorized_socket->isAuthorized()
&& $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]>
permAuthKey =& $this->API->datacenter->getDataCenterConnection($dc)->permAuthKey]]>
ttl[$index])]]>
$cacheTtl
Traversable
Traversable
$index
$index
$index
$index
$index
$config
$config
withDatabase(null)]]>
getIdleTimeout()]]>
getMaxConnections()]]>
query("SHOW VARIABLES LIKE 'max_connections'")->fetchRow()['Value']]]>
$config
$config
withDatabase(null)]]>
getIdleTimeout()]]>
getMaxConnections()]]>
$settings
$settings
$settings
DriverArray
$v
$value
$value
$v]]>
\json_decode($value, true, 256, JSON_THROW_ON_ERROR)]]>
$dbSettings
$dbSettings
$dbSettings
$dbSettings
$deserializer
$deserializer
$deserializer
$deserializer
$serializer
$serializer
$serializer
$serializer
$table
$table
$table
$table
$old
setSettings
new static()
MemoryArray
MemoryArray
$array
$flags
$settings
dbSettings]]>
$stmt
$pdo
$v
$v
$v
$v
$v
$v
$v
$value
\igbinary_unserialize(\hex2bin($v))]]>
\unserialize(\hex2bin($v))]]>
\json_decode(\hex2bin($value), true, 256, JSON_THROW_ON_ERROR)]]>
dbSettings]]>
$v
$v
$v
$v
$v
$value
$v]]>
\json_decode($value, true, 256, JSON_THROW_ON_ERROR)]]>
dbSettings]]>
$db
db->get($key)]]>
$value
$stmt
$db
$db
$db
fetchRow()['count']]]>
$builtUri
$uri
$webSocketConnector
$orig[1][0] === BufferedRawStream::class
Rfc6455Connector
$class
wrapper->getAPI()]]>
getParameters()[0]->getType()]]>
self::$pluginCache
\array_values
startedInternal]]>
startedInternal]]>
require $file
new $class
replyCache]]>
replyCache]]>
wrapMessage($client->extractMessage($result))]]>
wrapMessage($client->extractMessage($result))]]>
$arr['_'] === 'storyItemDeleted'
? new StoryDeleted($this->getClient(), ['user_id' => $this->senderId, 'story' => $arr])
: new Story($this->getClient(), ['user_id' => $this->senderId, 'story' => $arr]),
$result
)]]>
DialogSetTTL
DialogSetTTL
]]>
wrapMessage($client->extractMessage($result))]]>
wrapMessage($client->extractMessage($result))]]>
$type
$peerResolved
$peersResolved
$adminIds
API]]>
$API
$peerResolved
$matches
$matches
$matches
botApiFileId]]>
botApiFileUniqueId]]>
$thumbs
$videoThumbs
AbstractAudio
AbstractAudio
AbstractSticker
AbstractSticker
AbstractVideo
AbstractVideo
AnimatedSticker
AnimatedSticker
Audio
Audio
CustomEmoji
CustomEmoji
Document
Document
DocumentPhoto
DocumentPhoto
Gif
Gif
MaskSticker
MaskSticker
Photo
Photo
RoundVideo
RoundVideo
StaticSticker
StaticSticker
Sticker
Sticker
Video
Video
VideoSticker
VideoSticker
Voice
Voice
getClient()->wrapMessage($this->getClient()->extractMessage($result))]]>
Message
getClient()->wrapMessage($this->getClient()->extractMessage($result))]]>
$html
$htmlTelegram
wrapMedia($rawMessage['media'], $this->protected)
: null]]>
ChannelMessage
ChannelMessage
wrapMessage($client->extractMessage($result))]]>
wrapMessage($client->extractMessage($result))]]>
wrapMessage($client->extractMessage($result))]]>
wrapMessage($client->extractMessage($result))]]>
DialogTopicCreated
DialogTopicEdited
DialogTopicEdited
DialogTopicEdited
wrapMessage($client->extractMessage($result))]]>
wrapMessage($client->extractMessage($result))]]>
wrapMessage($client->extractMessage($result))]]>
wrapMessage($client->extractMessage($result))]]>
GroupMessage
GroupMessage
getClient()->wrapMessage($this->getClient()->extractMessage($result))]]>
DialogScreenshotTaken
getClient()->wrapMessage($this->getClient()->extractMessage($result))]]>
PrivateMessage
PrivateMessage
getIdInternal($rawParticipant['peer'])]]>
getIdInternal($rawParticipant['peer'])]]>
Message
getIdInternal($rawCallback['peer'])]]>
nextSent]]>
wrapMessage($client->extractMessage($result))]]>
wrapUpdate($update)]]>
wrapUpdate($update)]]>
StoryReaction
StoryReaction
wrapMessage($client->extractMessage($result))]]>
wrapUpdate($update)]]>
wrapUpdate($update)]]>
$first
$html
$htmlTelegram
wrapMedia($rawStory['media'], $this->protected)]]>
getIdInternal($rawPeerBlocked['peer_id'])]]>
new UsernameInfo($username),
$rawUserName['usernames']
)]]>
$code
$errfile
$errline
$errno
$errstr
$file
$line
$message
__invoke
self::$map
self::$map ??= new WeakMap
self::$map ??= new WeakMap
wrapper->getAPI()->getEventHandler($class)]]>
T|EventHandlerProxy|__PHP_Incomplete_Class|null
$data
account ??= new \danog\MadelineProto\Namespace\AbstractAPI('account')]]>
auth ??= new \danog\MadelineProto\Namespace\AbstractAPI('auth')]]>
bots ??= new \danog\MadelineProto\Namespace\AbstractAPI('bots')]]>
channels ??= new \danog\MadelineProto\Namespace\AbstractAPI('channels')]]>
chatlists ??= new \danog\MadelineProto\Namespace\AbstractAPI('chatlists')]]>
contacts ??= new \danog\MadelineProto\Namespace\AbstractAPI('contacts')]]>
folders ??= new \danog\MadelineProto\Namespace\AbstractAPI('folders')]]>
help ??= new \danog\MadelineProto\Namespace\AbstractAPI('help')]]>
langpack ??= new \danog\MadelineProto\Namespace\AbstractAPI('langpack')]]>
messages ??= new \danog\MadelineProto\Namespace\AbstractAPI('messages')]]>
payments ??= new \danog\MadelineProto\Namespace\AbstractAPI('payments')]]>
phone ??= new \danog\MadelineProto\Namespace\AbstractAPI('phone')]]>
photos ??= new \danog\MadelineProto\Namespace\AbstractAPI('photos')]]>
stats ??= new \danog\MadelineProto\Namespace\AbstractAPI('stats')]]>
stickers ??= new \danog\MadelineProto\Namespace\AbstractAPI('stickers')]]>
stories ??= new \danog\MadelineProto\Namespace\AbstractAPI('stories')]]>
updates ??= new \danog\MadelineProto\Namespace\AbstractAPI('updates')]]>
upload ??= new \danog\MadelineProto\Namespace\AbstractAPI('upload')]]>
users ??= new \danog\MadelineProto\Namespace\AbstractAPI('users')]]>
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
setWrapper
$class
downloadToCallable
downloadToDir
downloadToFile
methodCallAsyncRead
uploadFromCallable
uploadFromTgfile
uploadFromUrl
getException()]]>
getException();]]>
logger
$logger
$server
$previous
type($this->message, $this->code, $previous)]]>
code]]>
exception ? $this->exception->getException() : null]]>
?Throwable
$address
(int) $port
$arguments
$arguments
$arguments
include $autoloadPath
$callback
$server
$payload === self::SHUTDOWN
$payload === self::SHUTDOWN
unwrap
ServerCallback
ServerCallback
$args
$this->__call($id, $args)]]>
$data
copy
unwrap
$payload[0]
$payload[0]
$data
Wrapper
Wrapper
new $class($this, $ids)
callbackIds[] = &$callback]]>
callbackIds[] = &$callback]]>
IteratorAggregate
getEventHandler()::class]]>
$optional
$optional
$optional
$optional
$optional
$optional
$optional
$optional
getResource()]]>
mode === self::FILE_LOGGER
? $this->optional
: Magic::$script_cwd.DIRECTORY_SEPARATOR.'MadelineProto.log']]>
optional]]>
optional]]>
optional]]>
stdoutUnbuffered->getResource()]]>
$optional
$colors
$stdout
$stdoutUnbuffered
colors]]>
colors]]>
colors]]>
colors]]>
colors]]>
colors]]>
colors]]>
colors]]>
getMsgId()]]>
API->settings]]>
getRpc
CheckLoop
CheckLoop
CheckLoop
CheckLoop
CheckLoop
API]]>
CleanupLoop
CleanupLoop
CleanupLoop
CleanupLoop
CleanupLoop
connection->msgIdHandler?->cleanup()]]>
connection->msgIdHandler]]>
HttpWaitLoop
getSettings
PingLoop
PingLoop
PingLoop
PingLoop
shared]]>
getReason(), ' ')]]>
throw $e;
bufferRead($payload_length)]]>
bufferRead(4)]]>
bufferRead(4)]]>
bufferRead(8)]]>
$message_data
$message_data
$message_key
getReadBuffer
ReadLoop
$e
$e
$e
ClosedException
getSerializedBody()]]>
getSerializedBody()]]>
connection->call_queue]]>
connection->call_queue]]>
getWriteBuffer
getWriteBuffer
WriteLoop
connection->isHttp() && empty($this->connection->pendingOutgoing)]]>
$callable()]]>
$msg
$messages
$update
feed
feedSingle
$state
$updater
FeedLoop
SecretFeedLoop
checkSeq
feed
API->feeders[$channelId]]]>
date
pts
pts
pts
pts
pts
qts
qts
qts
update
update
update
update
update
update
update
API->authorization['user']]]>
API->authorization['user']['bot']]]>
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$difference
$feeder
UpdateLoop
API->feeders[$channelId]?->resume()]]>
datacenter)]]>
TL)]]>
settings)]]>
settings)]]>
new DataCenter($this)
new PeerDatabase($this)
$callbacks
$callbacks
getInputConstructor(...),
),
\array_fill_keys(
[
'User',
'Chat',
'Peer',
'InputDialogPeer',
'InputNotifyPeer',
],
$this->getInfo(...),
),
\array_fill_keys(
[
'InputMedia',
'InputDocument',
'InputPhoto',
],
$this->getFileInfo(...),
),
[
'InputFileLocation' => $this->getDownloadInfo(...),
'InputPeer' => $this->getInputPeer(...),
'InputCheckPasswordSRP' => function (string $password): array {
return (new PasswordCalculator($this->methodCallAsyncRead('account.getPassword', [])))->getCheckPassword($password);
},
],
)]]>
array
serializeSession
authorization['user']['bot']]]>
channels_state->get()]]>
channels_state->get()]]>
channels_state->get()]]>
channels_state->get()]]>
$path
getSelf()['bot']]]>
getSelf()['premium']]]>
authorization['hint']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']['bot']]]>
authorization['user']['bot']]]>
authorization['user']['bot']]]>
authorization['user']['id']]]>
logger
start
start
sanitizeReportPeers($userOrId)]]>
wrapper) && $this->isInited()]]>
wrapper) && isset(self::$references[$this->getSessionName()])]]>
authorized === API::LOGGED_IN && \is_int($dc_id)]]>
datacenter]]>
peerDatabase]]>
\is_int($dc_id)
datacenter)]]>
full_chats]]>
settings->getAppInfo()->getLangCode()]]]>
getBody
state |= self::STATE_ACKED]]>
state |= self::STATE_REPLIED]]>
state |= self::STATE_SENT]]>
authKey]]>
authKey]]>
authorized
{$key} =& $bound->{$key}]]>
ack_queue]]>
new_outgoing]]>
expires
$f->await()]]>
methodCallAsyncRead
resume
resume
getMaxId
$e]]>
\time() + $seconds
$msgId
$msgId
getMsgId()]]>
getMsgId()]]>
getMsgId()]]>
resume
API->authorized_dc == $this->datacenter && $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]>
$contentRelated
$contentRelated
generateInSeqNo
generateOutSeqNo
$msgIdHandler
methodCallAsyncRead
methodCallAsyncWrite
syncLoading
getSelf()['id']]]>
getSelf()['id']]]>
$media
extractBotAPIFile($this->MTProtoToBotAPI($media))['file_id']]]>
array
$data
$media
genAllFile
read[$offset]]]>
write[$offset]]]>
write[$offset]]]>
$messageMedia
$old_dc
decrypt
getReference
getReference
getReference
getReference
getReference
getReference
getReference
$res
$res
$res
$res
$res
$res
$res
$res
$res
$res
$res
$res
$res
$cb(100, $speed, $time)
Message
static function (int $offset, int $size) use ($stream) {
static function (int $offset, int $size) use ($stream, $seekable, $lock) {
static function (string $payload, int $offset) use ($stream, $seekable, $lock) {
$file
$file
$body
$size
seek
seek
$l
populateFrom
$id
$peers
$peers
$peers
$peers
db]]>
$db
powMod
pendingDb]]>
API->getIdInternal($full)]]>
API->getIdInternal($full)]]>
API->getIdInternal($id)]]>
API->authorization['user']]]>
API->authorization['user']['id']]]>
fullDb]]>
fullDb]]>
pendingDb]]>
$db
$fullDb
$usernames
(int) $id
getInfo($peer, \danog\MadelineProto\API::INFO_TYPE_CONSTRUCTOR)['forum']]]>
$channel
$channel
$channel
$channel
$channel
$filter
$filter
$filter
$filter
$filter
$folder_id
$gres
$limit
$limit
$limit
$offset
$offset
$offset
$q
$q
$q
$q
$q
$res
$res
$total_count
$total_count
fetchParticipants
fetchParticipantsCache
fwdPeerIsset
getInputConstructor
getInputPeer
getParticipantsHash
recurseAlphabetSearchParticipants
\danog\MadelineProto\API::PEER_TYPE_*
$promises
$full
getIdInternal($id)]]>
getIdInternal($id)]]>
peerDatabase->getFull($partial['bot_api_id'])]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']['id']]]>
authorization['user']['id']]]>
authorization['user']['id']]]>
authorization['user']['id']]]>
API->authorization['user']]]>
API->authorization['user']]]>
API->authorization['user']['id']]]>
API->authorization['user']['id']]]>
getDb($locationString)['origins']]]>
getDb($locationString)['reference']]]>
getDb($locationString)['reference']]]>
getDb($locationString)['reference']]]>
getDb($locationString)['origins']]]>
$db
$extra_ranges
$range_orig
$seek_end
wrapMedia([
'_' => 'messageMediaPhoto',
'photo' => $message['action']['photo']
])]]>
wrapMedia([
'_' => 'messageMediaPhoto',
'photo' => $message['action']['photo']
])]]>
nextSent]]>
getUpdatesState
loadUpdateState
getIdInternal($message['action']['from_id'])]]>
getIdInternal($message['action']['peer'])]]>
getIdInternal($message['action']['to_id'])]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']['id']]]>
authorization['user']['id']]]>
authorization['user']['id']]]>
authorization['user']['id']]]>
authorization['user']['id']]]>
authorization['user']['id']]]>
msg_ids]]>
addPendingWakeups
waitForInternalStart
$first
eventHandlerHandlers) !== 0 && \is_array($update)]]>
\is_array($update)
settings->getConnection()]]>
settings->getLogger())) implements LoggerGetter {
public function __construct(private Logger $logger)
{
}
public function getLogger(): Logger
{
return $this->logger;
}
}]]>
completeLogin
createApp
getApp
hasApp
settings]]>
$value
settings->getConnection(),
new class(new Logger($this->settings->getLogger())) implements LoggerGetter {
public function __construct(private Logger $logger)
{
}
public function getLogger(): Logger
{
return $this->logger;
}
},
$this->jar
)]]>
settings]]>
methodCallAsyncRead
$wrapper
$file
$message
$level
$message
$previous
$caller
$code
$message
$caller
$method
$e
$fp
$n
$chat
completeSecretChat
$chat_id
$chat_id
$encrypted_data
$encrypted_data
$message_key
$message_key
$old
$old
$chat
$chat
$chat_id
$chat_id
$seqno
$seqno
checkSecretInSeqNo
checkSecretOutSeqNo
generateSecretInSeqNo
generateSecretOutSeqNo
[$unserialized, $unlock]
$ipcSocket
$ipcSocket
unserialize($this->ipcStatePath)]]>
?IpcState
read(null, 1)]]>
read(null, 1)]]>
$php[0]
$php[1]
$php[0]
$php[1]
lightState ??= $this->unserialize($this->lightStatePath)]]>
extra]]>
$entities
$stream
$l
$append
$append_after
$memory_stream
$stream
$append
$append_after
$decrypt
$encrypt
$extra
$read_buffer
$stream
$write_buffer
$append
$append_after
read
write
$hash_name
$read_buffer
$read_check_after
$read_check_pos
$read_hash
$rev
$stream
$write_buffer
$write_check_after
$write_check_pos
$write_hash
close
$obj
$socketContext
$uri
$extra
StreamInterface
$stream
$l
$in_seq_no
$out_seq_no
$stream
$l
$stream
$stream
$uri
$code
$ctx
$header
$code
$current_header[1]
$description
getStream($header)]]>
$stream
$l
$stream
$l
$extra
$stream
$stream
$extra
$read
$code
$current_header[1]
$description
$l
getStream()]]>
$stream
$extra
bufferRead(1)]]>
bufferRead(1)]]>
bufferRead(1)]]>
bufferRead(1)]]>
bufferRead(1)]]>
bufferRead(1)]]>
bufferRead(1)]]>
bufferRead(1)]]>
bufferRead(1)]]>
bufferRead(16)]]>
bufferRead(2)]]>
bufferRead(4)]]>
$length
$ip
getStream(\chr(5).\chr(\strlen($methods)).$methods)]]>
setupTls
getStream
write
write
$connector
$stream
$data
stream]]>
stream]]>
stream]]>
?WebsocketMessage
ClosedException
Rfc6455ConnectionFactory
Rfc6455Connector
WebsocketConnection
WebsocketConnector
WebsocketConnector
WebsocketHandshake
WsStream
WssStream
$markup
parseReplyMarkup
}>]]>
$arguments[$key]
$photo
$photoSize
$thumbnail
$file
$message
$posClose === false
$posClose === false
authorization['user']]]>
authorization['user']['id']]]>
$file
$message
\is_resource($stream)
\is_resource($stream)
API->getInfo($value))['InputEncryptedChat']]]>
$arg
deserialize
serializeMethod
serializeObject
serializeParams
$value
$value
$value
API->logger]]>
botAPIToMTProto
logger
$elem[1]
$elem[1]
$elem[1]
$elem[1]
$afterConstructorDeserialization
$afterMethodResponseDeserialization
$beforeConstructorDeserialization
$beforeConstructorSerialization
$beforeMethodResponseDeserialization
$constructors
$methods
$tdDescriptions
$typeMismatch
(string) $object
(string) $object
(string) $object
findByPredicate
findByType
deserialize
serializeMethod
serializeObject
findById
findByMethod
click
authorization['user']]]>
authorization['user']['id']]]>
$c->name !== null]]>
$val
$this->{$var}]]>
getVar
$value
$value
$this->{$var},
$obj,
$obj::class,
)->__invoke()]]>
{$var} =& $val;
},
$obj,
$obj::class,
)->__invoke()]]>
__invoke
__invoke
{$var} =& $val]]>
getSelf()['id']]]>
udp]]>
$stream
$crc
$encrypted_data
bufferRead(4)]]>
bufferRead(4)]]>
bufferRead(4)]]>
bufferRead(4)]]>
bufferRead(4)]]>
bufferRead(4)]]>
bufferRead(8)]]>
getReadBuffer
$ack_mask
$out_seq_no
getStream()]]>
udp]]>
true
ClosedException
ClosedException
readLength(1))]]>
authKey]]>
authKey]]>
call]]>
$visualization
$visualization
pendingPing]]>
call['g_a']]]>
$authKey
$bestEndpoint
$messageHandler
API->logger)]]>
]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']]]>
authorization['user']['bot']]]>
authorization['user']['bot']]]>
authorization['user']['bot']]]>
authorization['user']['bot']]]>
$dialogs
cachedAllBotUsers]]>
cachedAllBotUsers]]>
event_handler_instance === null || $this->event_handler_instance instanceof __PHP_Incomplete_Class]]>
event_handler_instance instanceof __PHP_Incomplete_Class]]>
PluginEventHandler|EventHandlerProxy|null
pluginInstances[$class]]]>
pluginInstances[$class]]]>
pluginInstances[$class]]]>
pluginInstances[$class]]]>
pluginInstances[$class]]]>
new $class_name
array
authorization['phone_code']]]>
authorization['phone_code_hash']]]>
authorization['phone_code_hash']]]>
authorization['phone_number']]]>
authorization['phone_number']]]>
\is_array($auth_key)
loop
getAuthorization() === \danog\MadelineProto\API::LOGGED_IN]]>
array
$title
$result
$result