All Projects → mitchweaver → Discline

mitchweaver / Discline

Licence: wtfpl
🐍 A terminal Discord client that you can actually use.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Discline

Cordless
The Discord terminal client you never knew you wanted.
Stars: ✭ 1,391 (+151.54%)
Mutual labels:  cli, terminal, discord, client
Ws50 Sync
ws50-sync is a python based program which pulls air quality data from your Withings account and stores it directly in a Domoticz DB.
Stars: ✭ 8 (-98.55%)
Mutual labels:  cli, terminal, client
Httpie
As easy as /aitch-tee-tee-pie/ 🥧 Modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. https://twitter.com/httpie
Stars: ✭ 53,052 (+9493.49%)
Mutual labels:  cli, terminal, client
Haxor News
Browse Hacker News like a haxor: A Hacker News command line interface (CLI).
Stars: ✭ 3,342 (+504.34%)
Mutual labels:  cli, terminal, client
Saws
A supercharged AWS command line interface (CLI).
Stars: ✭ 4,886 (+783.54%)
Mutual labels:  cli, terminal, client
Tqdm
A Fast, Extensible Progress Bar for Python and CLI
Stars: ✭ 20,632 (+3630.92%)
Mutual labels:  cli, terminal, discord
Lazygit
simple terminal UI for git commands
Stars: ✭ 24,910 (+4404.52%)
Mutual labels:  cli, terminal
React Slate
Write interactive CLI apps with React
Stars: ✭ 385 (-30.38%)
Mutual labels:  cli, terminal
Yaspin
A lightweight terminal spinner for Python with safe pipes and redirects 🎁
Stars: ✭ 413 (-25.32%)
Mutual labels:  cli, terminal
Pulsemixer
CLI and curses mixer for PulseAudio
Stars: ✭ 441 (-20.25%)
Mutual labels:  cli, terminal
Pick
create curses based interactive selection list in the terminal
Stars: ✭ 370 (-33.09%)
Mutual labels:  cli, terminal
Dstask
Single binary terminal-based TODO manager with git-based sync + markdown notes per task
Stars: ✭ 431 (-22.06%)
Mutual labels:  cli, terminal
Hn Cli
📰 CLI to browse Hacker News
Stars: ✭ 448 (-18.99%)
Mutual labels:  cli, terminal
Npx card
use npx anmol to connect with me
Stars: ✭ 377 (-31.83%)
Mutual labels:  cli, terminal
Discord Term
Extensible Discord terminal client
Stars: ✭ 371 (-32.91%)
Mutual labels:  terminal, discord
Go Prompt
Building powerful interactive prompts in Go, inspired by python-prompt-toolkit.
Stars: ✭ 4,255 (+669.44%)
Mutual labels:  cli, terminal
Cw
The best way to tail AWS CloudWatch Logs from your terminal
Stars: ✭ 368 (-33.45%)
Mutual labels:  cli, terminal
Spotify Cli Linux
🎶 A command line interface to Spotify on Linux
Stars: ✭ 443 (-19.89%)
Mutual labels:  cli, terminal
Bubbles
TUI components for Bubble Tea 🍡
Stars: ✭ 467 (-15.55%)
Mutual labels:  cli, terminal
Whipper
Python CD-DA ripper preferring accuracy over speed
Stars: ✭ 517 (-6.51%)
Mutual labels:  cli, terminal

logo_small.png Discline


screenshot_main.png

NOTICE: July 20th, 2019

AFAIK discline has become non-functional.

  • Python3.7 has changed the syntax of its async libraries.

  • discord.py has also gone through a new release cycle which's syntax is not backwards compatible.

Discline will require a full rewrite, possibly done in a new language.

Stay tuned for updates via this readme.

Thanks to all that have supported the project thus far, I hope you stick around for whats to come.

With that said, I'll leave the remainder of the readme intact:

How to use:


  1. Install the dependencies:

    sudo pip3 install asyncio discord blessings pyyaml

  2. Clone the repo

    git clone https://github.com/MitchWeaver/Discline

  3. Find your discord "token"

    • Go to http://discordapp.com/channels/@me

    • Open your browser's developer console. (Normally F12 or CTRL-SHIFT-I)

    • Look for "storage" or "local storage", then find the discord url.

    • Clicking this will show you a list of variables. Look for a line that looks like:

      "token = 322332r093fwaf032f90323f32f903f23wfa"

    If you're having troubles, google around, there's a few guides on the net.

    If all else fails, join the dev discord and we'll be glad to help!

  4. Run python3 Discline.py --store-token to store your token

  5. Run python3 Discline.py --copy-skeleton to get a template config

  6. Edit ~/.config/Discline/config to your choosing.

  7. Launch with python3

    python3 Discline.py

    (alternatively if you have python3.6 you can simply use ./Discline.py)

Current Features


  • /channel to switch channel
  • /server to switch server
  • /nick to change nickname (per server)
  • typing without a leading prefix will submit to current chat
  • " is typing..." support
  • private channels
  • colored output, with user definable colors and custom roles
  • Channel logs update when users edit messages
  • /channels, /servers, /users to view information
  • /game to update the "Now playing: " status
  • use /help to see more commands
  • unicode emoji displayal support
  • sending emojis in messages (unicode and custom)
  • File uploading via path (ex: /file /path/to/file)
  • italic, bold, and underline font support
  • inline `code` and ```code``` block support
  • URL detection, highlighting in blue + italics
  • automatic updating, fetching the latest master branch's commit
  • channel logs blink red upon unread messages
  • line scrolling
  • discord "Nitro" emojis
  • Externalized configs via YAML ~/.config/Discline/config
  • @member expansion/mentions
  • /status to change online presence

Planned Features


  • emoji reactions
  • comment editing and deletion
  • private messaging
  • message searching

Dependencies


To install dependencies:

  1. Download Python 3.5/3.6 from the link above

  2. Install pip3, normally called python3-pip in package managers

  3. Download the dependencies using pip with the following command:

    sudo pip3 install asyncio discord blessings pyyaml

Color Customization


Almost all aspects of the client can be colored to the user's wishes. You can set these colors from within ~/.config/Discline/config

Note: These assume that you're using the standard terminal colors. If you have colors already defined in your ~/.Xresources or similar, this will be very confusing.

Launching


Discline uses git for automatic updates, so you must be within the Discline directory upon starting. Manually you can launch via python3.6 ./Discline.py, however it is advised to create a helper script to do this for you.

An example script is in the /res/scripts folder, edit it to suit your system and tastes.

A Note On Emojis


Currently most of the standard unicode emojis are displaying. Note your terminal must be able to render these symbols and you must be using a font set that contains them. Because some of the emojis that discord uses are non-standard, they may not display properly. Here is an example of a random few.

Image

Custom emojis however, are displayed as :emoji_name:

Note On Font Support


Like emojis, not all terminals and fonts support italic/bold/underline and 'background' colors, (which are used for `code`). If these features aren't working for you, odds are you are not using a supported terminal/font. Experiment with different setups to see what works.

Image

Letting me know what setups don't work helps a lot!

Dude this is awesome! How can I support the project?


Star it! 🌟

It helps to get it higher in GitHub's search results as well as making me feel good inside. ;)

If you'd like to contribute, pull requests are always welcome!

If you would like to get more info on what could be done or to discuss the project in general, come join the discord server at: https://discord.gg/rBGQMTk

FAQ


Yet another discord cli?

I didn't like any of the implementations I found around github. Too buggy. Too bloated. Bad UI. No customization. Some, after discord updates, no longer functioning at all.

Why use a token and not email/password?

Discord's API does allow for email/pass login, but if you were to have 2FA, (2 factor authentication), enabled on your account, Discord would interpret this as a malicious attack against your account and disable it.

So, because "Nobody reads the readme", I have disabled this.

How should I submit a GitHub issue?

Try to include this format:

OS: Linux/Debian
Terminal: urxvt
Font: source code pro
Python Version: 3.6
How to reproduce: xxxxxx

It says my python is out of date even though I have 3.5+ installed?

Probably because you have multiple versions installed. Try running with python3.5 or python3.6 rather than just "python3"

I'm getting weird encoding errors on startup

You probably don't have UTF-8 set. If you're using Linux, look up how to do this according to your distro.

If you're on BSD, add this to your /etc/profile:

export LC_CTYPE=en_US.UTF-8
export LESSCHARSET=utf-8

and make sure it gets sourced upon opening your terminal.

Misc Screenshots


Image

Image

Image

It can even be configured to hide most elements of the UI in the config:

Image

Known Bugs


Line wrapping sometimes doesn't work

This happens if there is too much formatting / coloring being done to the message that contains that line. I'm looking for a work around.

When I type many lines before hitting send, the UI sometimes bugs out and/or the separators encroach upon different sections

Known. Looking for a work around.

My bug isn't listed here, how can I voice my problem?

If you have a specific issue that isn't listed here or in the wiki, post a github issue with a detailed explanation and I can try to get it fixed. Join the discord if you want live help.

Token Warning


Do NOT share your token with anybody, if someone else gets ahold of your token, they may control your account. If you are someone who keeps their ~/.config on github, add your token to your .gitignore. Otherwise it will become public.

License


WTFPL

Legal Disclaimer


Discord hasn't put out any official statement on whether using their API for 3rd party clients is allowed or not. They have said that using their API to make "self-bots" is against their ToS. By self-bots, it is my understanding they mean automating non-bot accounts as bots. My code has no automated functions, or any on_events that provide features not included in the official client.

As far as I know, nobody has been banned for using things like this before, but Discord might one day change their mind. With this said, I take no responsibility if this gets you banned.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].