messages.ChannelMessages page now parses
about 2.5x faster as full objects, and the first parsed response after loading the package no
longer spends ~8 s building the constructor map. The constructor index is
computed at install time, cached outside options(), and TL classes are
flattened on first use so R6 no longer builds a super object per instance.download_channel_messages(), download_channel_reactions() and
download_channel_replies() decode messages as lightweight lists instead of
R6 objects (opt out with options(telegramR.lite_messages = FALSE)); with
the other changes below, going from a raw 100-message response to tibble
rows is about 20x faster than in 0.0.2 (1.7 s -> 80 ms).gmp::bigz).src/tl_decode.cpp) built at install time from the
generated TL parsers: a 100-message page decodes in ~15 ms instead of
~1.7 s in 0.0.2 (~100x). Its output is identical to the R decoder's (checked
on ~4800 random objects covering every constructor, clean and corrupted);
anything it does not cover is decoded by R. Disable with
options(telegramR.fast_decode = FALSE).download_channel_reactions() and download_channel_replies()
reporting zero reactions (reactions_json = "[]") for every message.telegramR_parse_warning, and a messages.channelMessages
page that could not be fully decoded is marked incomplete = TRUE.$fromReader() methods now work with a real
BinaryReader (it gained the camelCase method names they call).MTProtoState$decrypt_message_data() no longer short-circuits when running
under testthat; its tests now decrypt real server-direction messages.ℹ/✔/! lines; the download functions show a progress bar with
rate and ETA (interactive sessions) and finish with a one-line summary
(rows, date range, elapsed time, output file). Internal details (server
salts, sender pools) are only shown with options(telegramR.verbose = "debug"); options(telegramR.verbose = FALSE) silences everything. The
'logger' dependency is dropped.src/*.o, src/*.so) from version control; they
broke installation from a git checkout on other platforms.Removed unused sample video files from inst/extdata, shrinking the source
tarball to ~3.4Mb (under CRAN's 5Mb guideline).
Exported TelegramClient, the high-level client class, so TelegramClient$new()
works after library(telegramR) (its @export had been in a comment that
roxygen ignored, leaving it inaccessible).
Synced the bundled 'Telegram' TL schema to layer 229 and regenerated all TL type and request classes, fixing dialog and message parsing against current 'Telegram' servers.
Reworked the schema code-generation tooling in data-raw/ entirely in R
(generate_tl.R, overwrite_stale.R, dedupe_types.R, emit_missing.R,
and the regenerate.R pipeline), replacing the previous scripts. The
pipeline is idempotent and documents every generated class with roxygen.
Fixed serialisation of 64-bit integers and byte fields, and the send-media chain.
Fixed the asynchronous test helpers to resolve promises objects, and a
latent unqualified openssl::rand_bytes() call in the obfuscated transport.
download_channel_messages(), batch_download_channels()).PasswordKdf.functions_stories.R request classes.