Library / SDK
cinit/TMoe avatar
cinit/TMoe

TMoe Xposed module for compatible Telegram Android clients

An Xposed module for Telegram clients

1,423 stars172 forksJavaGPL-3.0

At a glance

What is it?
TMoe adds configurable controls to selected third-party Telegram Android clients through Xposed hooks. It fits technically experienced users with supported, un-obfuscated clients, rather than general Android customization.
Who is it for?
TMoe is appropriate for Android users who already run a supported, un-obfuscated Telegram derivative and accept Xposed integration. It is a poor fit for official-client users, obfuscated builds, or people who need predictable support across client updates.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 96 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

TMoe targets selected Telegram Android derivatives

TMoe addresses users of particular third-party Telegram Android clients built from Telegram's official TMessagesProj code. Its README limits support to clients derived from that codebase when they are not obfuscated. That condition matters because TMoe injects behavior into an existing application, and obfuscation can change the class names, methods, or control flow that the hooks need to find.

The project is not a standalone Telegram replacement. It does not provide messaging, account management, chat storage, or a separate Telegram interface. It modifies a compatible application through the Xposed module framework, then adds a "TMoe Settings" entry to that client's settings. The README directs users to enable individual functions there after activating the module.

This is a narrow audience. A likely candidate uses an installed client that appears in TMoe's compatibility list and accepts modification of client behavior. An official Telegram installation, an obfuscated derivative, or an app maintained around a substantially changed Telegram implementation is outside the documented support boundary.

HookEntry.java and arrays.xml define compatibility

The repository layout points to an Android application module under `app/`, with startup code at `app/src/main/java/cc/ioctl/tmoe/startup/HookEntry.java` and Xposed scope data at `app/src/main/res/values/res/values/arrays.xml`.

TMoe changes message and interface behavior

The documented functions cover several classes of client behavior. Some remove restrictions on actions, including "Remove the limit on copying and saving messages" and "Allow non-admin to query some group information." Others change presentation or available controls, such as showing exact channel member counts, displaying message IDs, forcing the chat blur option to appear, or adding a Reload Message button.

Several options restrict interfaces or interactions. TMoe can prohibit spoilers, channel switching, reactions, and chat greeting stickers. It can hide sponsored messages, selected user avatars, phone numbers, and the Premium sticker tab. It can also keep video muted when the volume button is pressed.

Other features concern account or plan presentation, including disabling Premium sticker animation. The README does not explain whether these changes affect local display only, outgoing requests, or server-visible state. That distinction is especially relevant to group information and channel details. The short labels do not establish network behavior.

The last numbered feature is only "TODO". It is not an implemented function. The README also does not document option defaults, dependencies between settings, per-chat granularity, or reset behavior. The in-client "TMoe Settings" screen is the only configuration interface described.

README omits an installation recipe

The README does not provide an APK download procedure, Android SDK requirements, Xposed framework installation steps, Gradle build task, signing procedure, or release artifact instructions. It also does not document how to obtain a client listed in the module scope. The repository has no GitHub releases through which installation can be traced.

The first documented operation begins after the module and Xposed environment are available. Activate TMoe in the Xposed framework, select a compatible Telegram client in the module's scope, and launch that client. The README states that a "TMoe Settings" entry will appear in the Telegram client's settings. Open that entry and enable the required function.

The repository contains a Unix Gradle wrapper. The following command invokes the wrapper's help output and can be used to inspect available build tasks. The README does not identify an installation task, so this command does not represent a documented installation procedure.

bash
./gradlew

The repository also contains `gradlew.bat` for Windows. No further command is shown because the README does not identify a verified build or installation task. Treating an unspecified Gradle task as the correct installation procedure would risk producing an artifact that is not release-ready.

For a first real use, choose one visible option rather than enabling the full list at once. "Show message ID" offers a direct interface result that can be checked in a chat, although the README does not identify the screens on which it appears. Record the original setting before changing options because the README provides no reset instructions.

Client updates can break TMoe hooks

The main technical limitation is dependence on Telegram-derived application internals. TMoe hooks an installed client, so compatibility depends on whether the expected code remains accessible and recognizable. The requirement that the client be un-obfuscated confirms sensitivity to implementation changes, although the README does not explain the lookup mechanism.

A supported package name may be necessary without being sufficient. The README requires clients to be based on TMessagesProj and not obfuscated, then points to both `HookEntry.java` and the Xposed scope for the complete list. Adding an arbitrary Telegram-like package to `arrays.xml` is not a documented compatibility fix. The client must also meet the implementation assumptions used by the hooks.

TMoe is the wrong tool when modifying an application through Xposed is unacceptable. There is no standalone, web, or conventional APK-only interface documented. Users also need an environment in which Xposed activation is permitted and the target application loads the module.

The README warns that development may stop or the project may be deleted at any time. It also states that features used for illegal purposes may be removed. This policy makes feature continuity less predictable than a versioned product contract. With no GitHub releases, users cannot use that release page to compare supported clients or migration changes.

Native settings and narrower hooks are alternatives

The practical alternative is to use the Telegram client's native settings or select another client without TMoe. That avoids injected hooks and their compatibility problem, but it may not provide TMoe's options when the client itself lacks them. A user who needs message IDs, exact channel counts, or removal of copying and saving restrictions cannot assume those controls exist in every Telegram derivative.

Another option would be an Xposed module dedicated to one client or one feature. The README names no alternative project, so a product comparison would be speculative. The architectural difference is still clear. TMoe groups message, chat, sticker, avatar, and interface modifications into one module, while a narrower hook project could modify fewer behaviors. That project's client compatibility and maintenance record would require separate inspection.

TMoe's grouped feature set is useful when several changes are wanted in one place. Its cost is broader exposure to client changes and more modified behavior to diagnose. Users who need only an ordinary blur, spoiler, reaction, or sticker control should first check whether the Telegram client's native settings already provide it.

GPL and AGPL notices conflict in the repository

The project metadata and README identify GPL-3.0, and the top-level `LICENSE` file is the appropriate place to inspect the authoritative license text. However, the copyright block reproduced in the README says the program is licensed under version 3 of the GNU Affero General Public License and includes the standard Affero GPL notice.

That discrepancy is concrete. GPL-3.0 and AGPL-3.0 are related but differ, including in obligations concerning software offered over a network. This article does not determine which notice controls. Anyone distributing a modified build should inspect `LICENSE`, the project metadata, and the actual source headers, then resolve the inconsistency with the copyright holder before redistribution.

Maintenance cost includes more than dependency upgrades. Adding another client requires changes in both `HookEntry.java` and `arrays.xml`. Existing hooks may need code changes after a Telegram-derived client update. Manual package-scope additions may also need to be reapplied after reinstalling TMoe or moving to another device. The README does not document version pinning, migration scripts, stable builds, testing builds, or an automated compatibility check.

The last push was on 2026-07-19, and the repository is not archived. That records recent repository activity, but the README explicitly reserves the right to stop updates or delete the project.

Editorial conclusion

TMoe is appropriate for Android users who already run a supported, un-obfuscated Telegram derivative and accept Xposed integration. It is a poor fit for official-client users, obfuscated builds, or people who need predictable support across client updates. Before adoption, check the package name against the Xposed scope, compare the client with HookEntry.java, and inspect the GPL-3.0 project metadata against the AGPL-3.0 notice printed in the README.

Frequently asked questions

Which Telegram clients does TMoe support?

TMoe supports selected un-obfuscated third-party Telegram Android clients based on the official TMessagesProj. The README points users to HookEntry.java and the Xposed scope file for the complete list.

How do I open TMoe settings after activating the module?

After activating TMoe and launching a compatible Telegram client, open the client's settings and select "TMoe Settings". Individual functions can then be enabled or disabled there.

Does the README document how to build and install TMoe?

No. The README does not give a Gradle task, build environment, APK URL, or signing procedure. It only documents activating the installed module and opening "TMoe Settings" in a compatible client.

Official sources

  1. cinit/TMoe on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/cinit-tmoe.svg)](https://hysenlabs.com/projects/cinit-tmoe)

Was this useful?