A variant of Nagram with additional features.
You can grab the latest versions in these two ways:
- CI Channel: https://t.me/NagramX
- GitHub Actions Artifacts: You can also download artifacts from the GitHub Actions page
-
Additional Features
- Save Deleted Messages
- Save Edits History
- AI Translator
- Hide the Premium and Help sections in settings
- Hide side share button
- Avoids requesting camera permission when selecting images
- Show Stickers row in main settings
- Clear Cloud Settings data
- Custom preferred languages in translation language selector
- Ask before sending bot command
- Ask before opening inline links
- Translate Entire Chats
- Microsoft Translator
- Center title in chat
- Custom drawer elements
- Remove Archived Chats from dialog list
- Use icons instead of "deleted"/"edited"
- Save attachments by chat name
- Send messages silently by default
- Use folder name as title
-
Cleanup & Optimization
- Removed integrity checks
jni/integrity
- Removed Sentry Analytics
- Removed in-app updates
- Removed payment functionality
- Removed channel follow pop-ups
- Other minor optimizations and cleanup
- Removed integrity checks
-
Fixes
- Google Maps
- DeepL Translator
- Bing Translator
- Disable auto download for exe and archive files
- Other minor fixes
- Nice icon (thanks to MaitungTM)
- Combine message
- Editable text style
- Forced copy
- Invert reply
- Quick reply in longClick menu (thanks to @blxueya)
- Undo and Redo
- Scrollable chat preview (thanks to TeleTux)
- Noise suppress and voice enhance
NekoX Changes
- Most of Nekogram's features
- Unlimited login accounts
- Proxy
- Built-in VMess, Shadowsocks, SSR, Trojan-GFW proxies support (No longer maintained)
- Built-in public proxy (WebSocket relay via Cloudflare CDN)
- Proxy subscription support
- Ipv6 MTProxy support
- Able to parse all proxy subscription format: SIP008, ssr, v2rayN, vmess1, shit ios app formats, clash config and more
- Proxies import and export, remarks, speed measurement, sorting, delete unusable nodes, etc
- Scan the QR code (any link, can add a proxy)
- The ( vmess / vmess1 / ss / ssr / trojan ) proxy link in the message can be clicked
- Allow auto-disabling proxy when VPN is enabled
- Proxy automatic switcher
- Don't alert "Proxy unavailable" for non-current account
- Stickers
- Custom
- Add stickers without sticker pack
- Sticker set list backup / restore / share
- Internationalization
- OpenCC Chinese Convert
- Full InstantView translation support
- Translation support for selected text on input and in messages
- Google Cloud Translate / Yandex.Translate support
- Force English emoji keywords to be loaded
- Persian calendar support
- Additional Options
- Option to disable vibration
- Dialog sorting is optional "Unread and can be prioritized for reminding" etc
- Option to skip "regret within five seconds"
- Option to not send comment first when forwarding
- Option to use nekox chat input menu: replace record button with a menu which contains an switch to control link preview (enabled by default)
- Option to disable link preview by default: to prevent the server from knowing that the link is shared through Telegram.
- Option to ignore Android-only content restrictions (except for the Play Store version).
- Custom cache directory (supports external storage)
- Custom server (official, test DC)
- Option to block others from starting a secret chat with you
- Option to disable trending
- Additional Actions
- Allow clicking on links in self profile
- Delete all messages in group
- Unblock all users support
- Login via QR code
- Scan and confirm the login QR code directly
- Allow clearing app data
- Proxies, groups, channels, sticker packs are able to be shared as QR codes
- Add "@Name" when long-pressing @user option
- Allow creating a group without inviting anyone
- Allow upgrading a group to a supergroup
- Mark dialogs as read using tab menu
- Enabled set auto delete timer option for private chats and private groups
- Support saving multiple selected messages to Saved Messages
- Support unpinning multiple selected messages
- View stats option for messages
- Optimization
- Keep the original file name when downloading files
- View the data center you belong to when you don't have an avatar
- Enhanced notification service, optional version without Google Services
- Improved session dialog
- Improved link long click menu
- Improved hide messages from blocked users feature
- Don't process cleanup draft events after opening chat
- Others
- OpenKeychain client (sign / verify / decrypt / import)
- Text replacer
- UI
- Telegram X style menu for unpinning messages
- Built-in Material Design themes / Telegram X style icons
- And more :)
NOTE: For Windows users, please consider using a Linux VM (such as WSL2) or dual booting.
Environment:
-
Linux distribution based on Debian or Arch Linux, or macOS
-
Native tools:
gcc
go
make
cmake
ninja
yasm
meson
pkgconf
# for Debian based distribution sudo apt install gcc golang make cmake ninja-build yasm # for Arch Linux based distribution sudo pacman -S base-devel go ninja cmake yasm meson # for macOS xcode-select --install # install developer tools (will open confirm dialog) brew install go cmake ninja yasm meson pkgconf # install other tools by homebrew
-
Android SDK:
build-tools;33.0.0
platforms;android-33
ndk;21.4.7075529
cmake;3.18.1
cmake;3.22.1
(the default location is $HOME/Android/SDK, otherwise you need to specify $ANDROID_HOME for it)It is recommended to use Android Studio to install, but you can also use
sdkmanager
command on distributions based on Debian:sudo apt install sdkmanager sdkmanager --sdk_root $HOME/Android/SDK --install "build-tools;33.0.0" "platforms;android-33" "ndk;21.4.7075529" "cmake;3.18.1" "cmake;3.22.1"
Build:
-
Checkout submodules
git submodule update --init --recursive
-
Build native dependencies:
./run init libs
-
Build external libraries and native code:
./run libs native
-
Fill out
TELEGRAM_APP_ID
andTELEGRAM_APP_HASH
in local.properties (from Telegram Developer) -
Replace TMessagesProj/google-services.json if you want FCM to work.
-
Replace release.keystore with yours and fill out
ALIAS_NAME
,KEYSTORE_PASS
andALIAS_PASS
in local.properties. -
Build with Gradle:
./gradlew assemble<Release/Debug>
-
Create your own
release.keystore
to replaceTMessagesProj/release.keystore
. -
Prepare LOCAL_PROPERTIES
- KEYSTORE_PASS: from your keystore
- ALIAS_NAME: from your keystore
- ALIAS_PASS: from your keystore
- TELEGRAM_APP_ID: from Telegram Developer
- TELEGRAM_APP_HASH: from Telegram Developer
KEYSTORE_PASS=123456
ALIAS_NAME=key0
ALIAS_PASS=123456
TELEGRAM_APP_ID=123456
TELEGRAM_APP_HASH=abcdefg
Then, use base64 to encode the above.
- Add Repo Action Secrets
- LOCAL_PROPERTIES: from step 2
- HELPER_BOT_TOKEN: from telegram @Botfather, such as
1111:abcd
- HELPER_BOT_TARGET: from telegram chat id, such as
777000
- Run Release Build