{"id":13608184,"url":"https://github.com/DiscordMessenger/dm","last_synced_at":"2025-04-12T14:32:22.223Z","repository":{"id":235112299,"uuid":"789829482","full_name":"DiscordMessenger/dm","owner":"DiscordMessenger","description":"Discord Messenger is a free Discord-compatible messaging client that works on almost 30 years of Windows.","archived":false,"fork":false,"pushed_at":"2025-04-10T20:40:30.000Z","size":5301,"stargazers_count":1708,"open_issues_count":33,"forks_count":28,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-10T21:34:05.716Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://iprogramincpp.com/discordmessenger","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DiscordMessenger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-21T17:05:02.000Z","updated_at":"2025-04-10T20:40:34.000Z","dependencies_parsed_at":"2024-05-02T01:15:06.840Z","dependency_job_id":"edc46a4e-b005-42e6-96ec-0b456eb021dd","html_url":"https://github.com/DiscordMessenger/dm","commit_stats":null,"previous_names":["discordmessenger/dm"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscordMessenger%2Fdm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscordMessenger%2Fdm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscordMessenger%2Fdm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscordMessenger%2Fdm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DiscordMessenger","download_url":"https://codeload.github.com/DiscordMessenger/dm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248581292,"owners_count":21128145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T19:01:24.919Z","updated_at":"2025-04-12T14:32:22.217Z","avatar_url":"https://github.com/DiscordMessenger.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# Discord Messenger for Windows\r\n\r\nDiscord Messenger is a messenger application designed to be compatible with Discord, while being\r\nbackwards compatible with down to Windows 2000 (although support for even older versions has been\r\nattempted).\r\n\r\nIts motto: *It's time to ditch MSN and Yahoo.*\r\n\r\n**NOTE**: This is beta software, so there may be issues which need to be fixed!\r\n\r\nThe project is licensed under the MIT license.\r\n\r\n## Disclaimer\r\n\r\nUsing third party clients is against Discord's TOS! Although the risk to get banned is low, the\r\nrisk is there! The author of this software is not responsible for the status of your Discord\r\naccount.\r\n\r\nSee https://twitter.com/discord/status/1229357198918197248.\r\n\r\n## Discord Server\r\n\r\nA Discord server about this client can be joined here: https://discord.gg/cEDjgDbxJj\r\n\r\n###### Note, you will need to use an official client to accept invitations currently. This may change in the future.\r\n\r\n## Screenshots\r\n\r\n![Windows 2000 screenshot](doc/ss_2000.png)\r\n![Windows XP screenshot](doc/ss_xp.png)\r\n\r\n## Minimum System Requirements\r\n\r\n- Windows NT 3.1, Windows 95, or newer (MinGW version)\r\n\r\n- Windows XP SP2 or newer (MSVC version)\r\n\r\n- 486 CPU (MinGW version) Pentium 4 CPU (MSVC version)\r\n\r\n- 64 MB of RAM, can do lower but might start to hit the page file\r\n\r\n## Building\r\n\r\nBefore you can start the build process, after cloning the project (You should NOT download it as\r\nZIP, unless you know that you should also download the submodules individually and unzip them in\r\nthe correct locations), check out the submodules with the command:\r\n`git submodule update --init`.\r\n\r\nThen you can start the build process.\r\n\r\nYou can build this project in two ways.\r\n\r\n### 1. Visual Studio\r\n\r\nThis method can only support down to Windows XP SP2, but it's easier to get started with.\r\n\r\n1. Compile OpenSSL for Win32, or find a distribution of OpenSSL 3.X.\r\n\r\nYou can acquire OpenSSL for Win32 from the following website if you don't want to bother with\r\ncompiling it:\r\nhttps://slproweb.com/products/Win32OpenSSL.html\r\n\r\n(Note: Do not download the \"Light\" versions, as they only contain the DLLs.)\r\n\r\n(Note: Download Win64 if you want to compile for x64, Win32 if you want to compile for Win32).\r\n\r\n2. Add an entry to your user/system environment variables called `OPENSSL_INSTALL`. (replace with\r\n`OPENSSL_INSTALL64` everywhere if you are compiling for 64-bit)\r\n\r\nSet its value to the place where your OpenSSL distribution is located.\r\n\r\n3. If you want to use a later version of libwebp, acquire libwebp from the following web site:\r\nhttps://developers.google.com/speed/webp/download.  Extract the archive and place \"libwebp.lib\" in\r\n`vs/libs`.\r\n\r\n4. Open the Visual Studio solution `vs/DiscordMessenger.sln`.\r\n\r\n5. Click the big play button.  (Both x86 and x64 targets are supported.)\r\n\r\n6. Enjoy!\r\n\r\n### 2. MinGW\r\n\r\n(Note: x64 compilation with MinGW is currently not supported)\r\n\r\n1. Acquire MinGW-6.3.0.  This is the last version of the original Minimalist GNU for Windows.\r\n\r\nNOTE: You might be able to use Mingw-w64 with 32-bit mode, but you might run into trouble running the\r\nfinal product on anything newer than XP.\r\n\r\n2. Using the MinGW Installation Manager, install or ensure that the following packages are installed:\r\n\t- mingw32-base\r\n\t- mingw32-binutils\r\n\t- mingw32-gcc\r\n\t- mingw32-gcc-core-deps\r\n\t- mingw32-gcc-g++\r\n\t- mingw32-libatomic\r\n\t- mingw32-libgcc\r\n\t- mingw32-w32api\r\n\t- msys-base\r\n\t- msys-bash\r\n\t- msys-core\r\n\t- msys-make\r\n\r\n3. Ensure that both the MinGW `bin/` AND msys `bin/` directories are in your `PATH`.\r\n\r\n4. Set `OPENSSL_INC_DIR` and `OPENSSL_LIB_DIR` in your environment variables to your OpenSSL\r\ninclude and library directories.  If you want to remember the paths, edit the Makefile to use those\r\nas your defaults (but make sure to not check in your change when sending a PR!)\r\n\r\nIf you wish to use Shining Light Productions' distribution of OpenSSL-Win32, use the\r\n`%OPENSSL_INSTALL%/include` and `%OPENSSL_INSTALL%/lib/MinGW` directories for the include and lib\r\ndirs respectively.\r\n\r\nIf you want compatibility on Windows versions which don't support the Microsoft Visual Studio 2015\r\nruntimes (VCRUNTIME140.DLL), then you will need to compile OpenSSL yourself.  See the section on\r\n[Compiling OpenSSL for older Windows versions](#compiling-openssl-for-older-windows-versions)\r\nsection.\r\n\r\n5. Run the `make` command.\r\n\r\n6. Enjoy!\r\n\r\n## Features\r\n### Implemented\r\n\r\n- Viewing and interacting with servers and direct messages\r\n- Viewing and downloading images and attachments\r\n- Uploading attachments\r\n- Editing messages\r\n- Deleting messages\r\n- Replying to messages\r\n- Typing indicator\r\n- URL hotlinks with untrusted link warning dialog (1)\r\n- Viewing member list in servers (2)\r\n- Viewing pinned messages in server\r\n- Embeds (6)\r\n- Showing profile pictures in DM list\r\n- User notes\r\n\r\n### Unimplemented but planned\r\n\r\n- Friends list\r\n- Viewing member list in group messages and DMs\r\n- Dark mode on modern systems (3)\r\n- Using an asynchronous HTTP library (4)\r\n- Entering voice channels (5)\r\n- Blocking, closing DMs, removing as friend\r\n- Muting channels\r\n- Changing nickname\r\n- More options in the \"Preferences\" menu\r\n- Assigning a custom status\r\n\r\n### Unplanned Features\r\n\r\n- Sending friend requests\r\n- Creating DM channels\r\n- Logging in using QR code (7) (8)\r\n- Logging in using e-mail address and password (7)\r\n- Joining servers (7)\r\n\r\n### Note\r\n1. You may need a modern browser to actually access most links.\r\n\r\n2. Only the first 100 users. I plan on changing it.\r\n\r\n3. Would take a lot of effort, but theoretically it is possible. No, it's not as simple as hooking\r\n   certain APIs.\r\n\r\n4. Currently, we are using a synchronous HTTP library, with threads to simulate async behavior.\r\n\r\n5. Planned for far in the future.\r\n\r\n6. Embeds are incomplete, for example, fields don't function properly.\r\n\r\n7. Action is weighted by Discord's anti-spam measures. It could cause the target to get autobanned.\r\n\r\n8. Some code already exists, but this feature is unfinished and will probably never be finished.\r\n\r\n## Compiling OpenSSL for older Windows versions\r\n\r\nYou will need to use the later MinGW forks (not the original one as this project wants).\r\nStart by opening `mingw32` (from `mingw-w64`), then cloning the OpenSSL repo. (found at\r\nthe following link: https://github.com/DiscordMessenger/openssl.git )\r\n\r\nThen, run the `./buildit` command.\r\n\r\nTo use the final libraries and DLLs when compiling Discord Messenger, use `[OpenSSL repo root]/include`\r\nas your `OPENSSL_INC_DIR`, and `[OpenSSL repo root]` as your OPENSSL_LIB_DIR.\r\n\r\n[TODO: Figure out how to avoid this]\r\n\r\n[TODO: Maybe remove all scanf uses?]\r\n\r\nNOTE: On Windows 2000 and earlier, OpenSSL can't link because it uses `_strtoi64` and\r\n`_strtoui64`. Replace these imports with functions likely to return 0 such as `iswxdigit`\r\nand `isleadbyte` respectively, using a hex editor.\r\n\r\n## Running on Windows NT 3.1\r\n\r\n**NOTE: You do not need to follow these steps if you don't intend on running\r\nDiscord Messenger on Windows NT 3.1.**\r\n\r\nWindows NT 3.1 doesn't define certain functions in Kernel32 that MinGW libraries expect\r\nto be there.  It also doesn't come with a copy of `MSVCRT.DLL`.  As such, you must acquire\r\na copy of `MSVCRT.DLL` (for example, from Windows 95), then patch all of the binaries\r\n(including `msvcrt.dll` but except `DiscordMessenger.exe`), to replace all of the\r\n**uppercase** `KERNEL32.DLL` text to `DIMEKE32.DLL`.  Then, download and compile the\r\nhttps://github.com/DiscordMessenger/kernel32shim.git repo with MinGW (the one you used\r\nto compile DM) by running `make`.  It should produce a `dimeke32.dll` executable which\r\nyou then can place in your installation.\r\n\r\nOne more thing, you must byte patch DiscordMessenger.exe to report a minimum subsystem\r\nversion of 3.10 (as opposed to 4.0).  The version is located at offset 0xC8 or 200\r\n(**check if the bytes match `04 00 00 00`**).  Overwrite it with the following byte\r\nstring: `03 00 0A 00`. Then, save.  You must also do this on libgcc_s_dw2-1.dll,\r\nlibstdc++-6.dll, and msvcrt.dll.\r\n\r\n## Attributions\r\n\r\nDiscord Messenger is powered by the following external libraries:\r\n\r\n- [JSON for Modern C++](https://github.com/nlohmann/json)\r\n- [Boost](https://www.boost.org)\r\n- [Libwebp](https://github.com/webmproject/libwebp)\r\n- [Httplib](https://github.com/yhirose/cpp-httplib)\r\n- [Asio](https://think-async.com/Asio)\r\n- [Websocketpp](https://github.com/zaphoyd/websocketpp)\r\n\r\nAlthough these libraries are vendored, you can replace them with the latest version, and the MSVC\r\nbuild will keep working.  Adjustments were made to certain libraries to make them compile on MinGW.\r\nSee `doc/` for details.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDiscordMessenger%2Fdm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDiscordMessenger%2Fdm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDiscordMessenger%2Fdm/lists"}