{"id":14128675,"url":"https://github.com/mitchweaver/Discline","last_synced_at":"2025-08-03T23:32:01.755Z","repository":{"id":46527299,"uuid":"110999419","full_name":"mitchweaver/Discline","owner":"mitchweaver","description":"🐍  A terminal Discord client that you can actually use.","archived":true,"fork":false,"pushed_at":"2019-07-20T23:12:13.000Z","size":1630,"stargazers_count":574,"open_issues_count":1,"forks_count":32,"subscribers_count":27,"default_branch":"master","last_synced_at":"2024-12-01T12:53:18.550Z","etag":null,"topics":["cli","client","discord","discord-py","linux","terminal"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mitchweaver.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}},"created_at":"2017-11-16T17:07:23.000Z","updated_at":"2024-10-19T08:45:37.000Z","dependencies_parsed_at":"2022-08-28T08:12:20.705Z","dependency_job_id":null,"html_url":"https://github.com/mitchweaver/Discline","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchweaver%2FDiscline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchweaver%2FDiscline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchweaver%2FDiscline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchweaver%2FDiscline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mitchweaver","download_url":"https://codeload.github.com/mitchweaver/Discline/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228571844,"owners_count":17938772,"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":["cli","client","discord","discord-py","linux","terminal"],"created_at":"2024-08-15T16:02:02.140Z","updated_at":"2024-12-07T06:31:35.314Z","avatar_url":"https://github.com/mitchweaver.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# ![logo_small.png](res/logo/logo_small.png) Discline\n------------------------------\n\n![screenshot_main.png](res/screenshots/screenshot_main.png)\n\n\n# NOTICE: July 20th, 2019\n\nAFAIK discline has become non-functional.\n\n* Python3.7 has changed the syntax of its async libraries.\n\n* discord.py has also gone through a new release cycle which's syntax is not backwards compatible.\n\nDiscline will require a full rewrite, possibly done in a new language.\n\nStay tuned for updates via this readme.\n\nThanks to all that have supported the project thus far, \nI hope you stick around for whats to come.\n\n\u003csub\u003eWith that said, I'll leave the remainder of the readme intact:\u003c/sub\u003e\n\n\n## How to use:\n-------------------------\n\n1. Install the dependencies:\n\n    `sudo pip3 install asyncio discord blessings pyyaml`\n\n2. Clone the repo\n\n    `git clone https://github.com/MitchWeaver/Discline`\n\n3. Find your discord \"token\"\n\n    * Go to http://discordapp.com/channels/@me\n\n    * Open your browser's developer console. (Normally `F12` or `CTRL-SHIFT-I`)\n\n    * Look for \"storage\" or \"local storage\", then find the discord url.\n\n    * Clicking this will show you a list of variables. Look for a line that looks like:\n\n        `\"token = 322332r093fwaf032f90323f32f903f23wfa\"`\n\n    If you're having troubles, google around, there's a few guides on the net.\n\n    If all else fails, join the dev discord and we'll be glad to help!\n\n4. Run `python3 Discline.py --store-token` to store your token\n\n5. Run `python3 Discline.py --copy-skeleton` to get a template config\n\n6. Edit `~/.config/Discline/config` to your choosing.\n\n7. Launch with python3\n\n    `python3 Discline.py`\n\n    *(alternatively if you have python3.6 you can simply use `./Discline.py`)*\n\n\n### Current Features\n--------------------------\n\n* /channel to switch channel\n* /server to switch server\n* /nick to change nickname (per server)\n* typing without a leading prefix will submit to current chat\n* \"\u003cUSER\u003e is typing...\" support\n* private channels\n* colored output, with user definable colors and custom roles\n* Channel logs update when users edit messages\n* /channels, /servers, /users to view information\n* /game to update the \"Now playing: \" status\n* use /help to see more commands\n* unicode emoji displayal support\n* sending emojis in messages (unicode *and* custom)\n* File uploading via path (ex: /file /path/to/file)\n* italic, bold, and underline font support\n* inline \\`code\\` and \\`\\`\\`code\\`\\`\\` block support\n* URL detection, highlighting in blue + italics\n* automatic updating, fetching the latest master branch's commit\n* channel logs blink red upon unread messages\n* line scrolling\n* discord \"Nitro\" emojis\n* Externalized configs via YAML ~/.config/Discline/config\n* @member expansion/mentions\n* /status to change online presence\n\n### Planned Features\n---------------------------\n\n* emoji reactions\n* comment editing and deletion\n* private messaging\n* message searching\n\n## Dependencies\n------------------------\n\n* git (if you want automatic updates)\n* [Python 3.5+](https://www.python.org/downloads/)\n* [discord.py](https://github.com/Rapptz/discord.py)\n* [blessings.py](https://pypi.python.org/pypi/blessings/)\n* [PyYAML](https://pypi.python.org/pypi/PyYAML/)\n* asyncio\n\n**To install dependencies**:\n\n1. Download Python 3.5/3.6 from the link above\n2. Install `pip3`, normally called `python3-pip` in package managers\n3. Download the dependencies using pip with the following command:\n\n    `sudo pip3 install asyncio discord blessings pyyaml`\n\n\n### Color Customization\n------------------------\n\nAlmost all aspects of the client can be colored to\nthe user's wishes. You can set these colors from within `~/.config/Discline/config`\n\nNote: These assume that you're using the standard terminal colors. If you\nhave colors already defined in your ~/.Xresources or similar, this will \nbe very confusing.\n\n## Launching\n------------------------\nDiscline uses git for automatic updates, so you must be within the Discline\ndirectory upon starting. Manually you can launch via `python3.6 ./Discline.py`, \nhowever it is advised to create a helper script to do this for you.\n\nAn example script is in the /res/scripts folder, \nedit it to suit your system and tastes.\n\n### A Note On Emojis\n-------------------------\n\nCurrently *most* of the standard unicode emojis\nare displaying. Note your terminal must be able\nto render these symbols *and* you must be using a font\nset that contains them. Because some of the emojis\nthat discord uses are non-standard, they may not\ndisplay properly. Here is an example of a random\nfew.\n\n![Image](https://images-ext-2.discordapp.net/external/iN52NdGOWqdWOxby88wiEGs8R81j33ndPjgKX8eKUNA/https/0x0.st/soIy.png?width=400\u0026height=32)\n\nCustom emojis however, are displayed as :emoji_name:\n\n### Note On Font Support\n-------------------------\n\nLike emojis, not all terminals and fonts support\nitalic/bold/underline and 'background' colors, (which are used for \\`code\\`).\nIf these features aren't working for you, odds are you are not using a\nsupported terminal/font. Experiment with different setups to see what works.\n\n![Image](https://0x0.st/sHQ0.png)\n\n*Letting me know what setups __don't__ work helps a lot!*\n\n### Dude this is awesome! How can I support the project?\n--------------------------------------------------------\n\nStar it! 🌟\n\nIt helps to get it higher in GitHub's search results as well as\nmaking me feel good inside. ;)\n\nIf you'd like to contribute, pull requests are __*always*__ welcome!\n\nIf you would like to get more info on what could be done or to discuss the\nproject in general, come join the discord server at: https://discord.gg/rBGQMTk\n\n### FAQ\n-------------------------\n\n\u003e Yet another discord cli?\n\nI didn't like any of the implementations I found around github. Too buggy.\nToo bloated. Bad UI. No customization. Some, after discord updates,\nno longer functioning at all.\n\n\u003e Why use a token and not email/password?\n\nDiscord's API __does__ allow for email/pass login, but if you were to have\n2FA, (2 factor authentication), enabled on your account, Discord would\ninterpret this as a malicious attack against your account and disable it.\n\nSo, because *\"Nobody reads the readme\"*, I have disabled this.\n\n\u003e How should I submit a GitHub issue?\n\nTry to include this format:\n\n```\nOS: Linux/Debian\nTerminal: urxvt\nFont: source code pro\nPython Version: 3.6\nHow to reproduce: xxxxxx\n```\n\n\u003e It says my python is out of date even though I have 3.5+ installed?\n\nProbably because you have multiple versions installed. Try running with\n`python3.5` or `python3.6` rather than just \"python3\"\n\n\u003e I'm getting weird encoding errors on startup\n\nYou probably don't have UTF-8 set. If you're using Linux,\nlook up how to do this according to your distro.\n\nIf you're on BSD, add this to your /etc/profile:\n\n```\nexport LC_CTYPE=en_US.UTF-8\nexport LESSCHARSET=utf-8\n```\n\nand make sure it gets sourced upon opening your terminal.\n\n### Misc Screenshots\n--------------------------\n\n![Image](res/screenshots/kingk22-screenshot.png)\n\n![Image](https://0x0.st/sH5g.png)\n\n![Image](https://0x0.st/sHjn.png)\n\nIt can even be configured to hide most elements of the UI in the config:\n\n![Image](res/screenshots/minimal_brown_ss.png)\n\n### Known Bugs\n--------------------------\n\n\u003e Line wrapping sometimes doesn't work\n\nThis happens if there is too much formatting / coloring being done to the\nmessage that contains that line. I'm looking for a work around.\n\n\u003e When I type many lines before hitting send, the UI sometimes bugs out\nand/or the separators encroach upon different sections\n\nKnown. Looking for a work around.\n\n\u003e My bug isn't listed here, how can I voice my problem?\n\nIf you have a specific issue that isn't listed here or in the\nwiki, post a github issue with a detailed explanation and I can\ntry to get it fixed. Join the discord if you want live help.\n\n### Token Warning\n-------------------------------\nDo *NOT* share your token with anybody, if someone else gets ahold\nof your token, they may control your account. If you are someone\nwho keeps their ~/.config on github, **add your token to your .gitignore**.\nOtherwise it will become public.\n\n\n### License\n-------------------------------\n\n\u003ca href=\"http://www.wtfpl.net/\"\u003e\u003cimg\n       src=\"http://www.wtfpl.net/wp-content/uploads/2012/12/wtfpl-badge-4.png\"\n       width=\"80\" height=\"15\" alt=\"WTFPL\" /\u003e\u003c/a\u003e\n\n### Legal Disclaimer\n--------------------------------\n\nDiscord hasn't put out any official statement on whether using their\nAPI for 3rd party clients is allowed or not. They *have* said that using\ntheir API to make \"self-bots\" is against their ToS. By self-bots, it is\nmy understanding they mean automating non-bot accounts as bots.\nMy code has no automated functions, or any on_events that provide features\nnot included in the official client.\n\nAs far as I know, nobody has been banned for using things like this before,\nbut Discord might one day change their mind. With this said, I take **no**\nresponsibility if this gets you banned.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitchweaver%2FDiscline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmitchweaver%2FDiscline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitchweaver%2FDiscline/lists"}