Discordo is a lightweight, secure, and feature-rich Discord terminal client.

Overview

discordo · build license Go Report Card

[WIP] Discordo is a lightweight, secure, and feature-rich Discord terminal client. It is highly configurable and has a minimalistic user interface.

Preview

Features

  • Lightweight
  • Secure
  • Configurable
  • Cross-platform
  • Minimalistic
  • Feature-rich
    • Mouse & clipboard support
    • 2-Factor authentication
    • Desktop notifications
    • [WIP] Discord-flavored markdown

Installation

Building from source

git clone https://github.com/rigormorrtiss/discordo
cd discordo
go build

# optional
sudo mv ./discordo /usr/local/bin

Package managers

  • Arch Linux (AUR, may be outdated): paru -S discordo-git

Usage

  • Run the executable in a new Terminal window.

By default, Discordo utilizes OS-specific keyring to store credentials such as client authentication token. However, if you prefer not to use a keyring, you may set the token field in the configuration file (~/.config/discordo/config.json) and Discordo will prioritize the usage of token field to login instead of keyring.

  • Log in using the email and password (first-time login) and click on the "Login" button to continue.

Default keybindings

Global:

  • Alt + 1: Sets the focus on the guilds TreeView.
  • Alt + 2: Sets the focus on the messages TextView.
  • Alt + 3: Sets the focus on the message InputField.

TextView:

  • k or Up: Selects the message just before the currently selected message.
  • j or Down: Selects the message just after the currently selected message.
  • g or Home: Selects the first message rendered in the TextView.
  • G or End: Selects the last message rendered in the TextView.
  • r: Reply to the selected message.

Clipboard support

On Linux, clipboard support requires:

  • xclip or xsel for X11.
  • wl-clipboard for Wayland.

Disclaimer

Automated user accounts or "self-bots" are against Discord's Terms of Service. I am not responsible for any loss caused by using "self-bots" or Discordo.

Issues
  • I'm confused in how to add transperency.

    I'm confused in how to add transperency.

    I'm using kitty terminal. and my terminal already has transparency. I have submitted an issue about it here 'https://github.com/ayntgl/discordo/issues/133' But I'm not sure how to implement the solution. I setted up my TOML file to look like this [theme] border = "white" title = "white" background = ""

    I was following instructions from this comment "@tildethine, you can now set the theme.background field to an empty string in the configuration file to have a transparent background." submitted by @ayntgl

    But after doing that my discordo is still not transparent :/ I've looked into theme.go and this is what I see. package config

    type ThemeConfig struct { Background string toml:"background" Border string toml:"border" Title string toml:"title" }

    func newThemeConfig() ThemeConfig { return ThemeConfig{ Background: "", Border: "white", Title: "white", } }

    Looks like it read the TOML file but it's still not transparent :/

    opened by tildethine 7
  • Bug Fix: Replies ping the incorrect user

    Bug Fix: Replies ping the incorrect user

    Kernel: 5.15.11-gentoo-x86_64 libc: sys-libs/glibc-2.34-r4 Go: dev-lang/go-1.17.5 Terminal: st

    I didn't use the username/password login, I put my token in discordo.toml

    Reproduction:

    1. click a message with the mouse that you want to reply to
    2. press r
    3. The input box will indicate that you are replying to the correct user.
    4. Type a message and press enter
    5. The message is sent as replying to the wrong user.
    opened by carterprince 6
  • Panic Crash while logging in from 2FA account

    Panic Crash while logging in from 2FA account

    Installed using AUR. Crashes when Trying to login with a 2 factor authentication enabled account.

    panic: account has 2FA enabled [recovered]
    	panic: account has 2FA enabled
    
    goroutine 1 [running]:
    github.com/rivo/tview.(*Application).Run.func1(0xc00021e000)
    	/home/niteshk/go/pkg/mod/github.com/rivo/[email protected]/application.go:243 +0x87
    panic(0x883f80, 0xc00000e270)
    	/usr/lib/go/src/runtime/panic.go:965 +0x1b9
    main.newSession(0xc000402ea0, 0x1a, 0xc00046e140, 0xe, 0x0, 0x0, 0xc000088800)
    	/home/niteshk/.cache/yay/discordo-git/src/discordo/discordo.go:126 +0x306
    main.onLoginFormLoginButtonSelected()
    	/home/niteshk/.cache/yay/discordo-git/src/discordo/discordo.go:267 +0x152
    github.com/rivo/tview.(*Button).InputHandler.func1(0xc0003e7020, 0xc0003ea810)
    	/home/niteshk/go/pkg/mod/github.com/rivo/[email protected]/button.go:129 +0x6a
    github.com/rivo/tview.(*Box).WrapInputHandler.func1(0xc0003e7020, 0xc0003ea810)
    	/home/niteshk/go/pkg/mod/github.com/rivo/[email protected]/box.go:161 +0x62
    github.com/rivo/tview.(*Form).InputHandler.func1(0xc0003e7020, 0xc0003ea810)
    	/home/niteshk/go/pkg/mod/github.com/rivo/[email protected]/form.go:673 +0xee
    github.com/rivo/tview.(*Box).WrapInputHandler.func1(0xc0003e7020, 0xc0003ea810)
    	/home/niteshk/go/pkg/mod/github.com/rivo/[email protected]/box.go:161 +0x62
    github.com/rivo/tview.(*Application).Run(0xc00021e000, 0x0, 0x0)
    	/home/niteshk/go/pkg/mod/github.com/rivo/[email protected]/application.go:335 +0x7a7
    main.main()
    	/home/niteshk/.cache/yay/discordo-git/src/discordo/discordo.go:70 +0x40d
    
    bug 
    opened by iamdevnitesh 5
  • feat: implement keybindings for opening and downloading attachments

    feat: implement keybindings for opening and downloading attachments

    This adds a few new config options:

    attachment_download_location a string which is, by default, set to the platform's default downloads folder.

    open_attachment a keybind which, when used while hovering over a message with at least one attachment, will open those attachments in the system's default handler. It uses start on Windows, xdg-open on Linux and open on MacOS

    download_attachment a keybind which, when used while hovering over a message with at least one attachment, will download those attachments in the location configured in attachment_download_locaiton

    as well as, of course, all the features relating to those configuration options.

    While I could test it on Windows and Linux, I am as of yet unsure if this works on MacOS. Also, this does not implement any user feedback upon downloading or opening a file, as I am currently unfamiliar with the UI code.

    btw this is my first ever PR so I'd appreciate any feedback

    feat 
    opened by KodiCraft 4
  • Unable to login to Discordo

    Unable to login to Discordo

    Issue: Unable to login to Discordo, appears to be failing captcha request. I suspect this is a result of the latest 0.17 update from Discord?

    I do not think it is successfully hitting the discordgo login endpoint, which may be as of result of pacman not having the latest version of Discord yet.

    Steps to reproduce:

    1. Enter 'discordo' into command line and hit enter
    2. Enter correct email and password
    3. Click Login

    Expected Result: Successfully logs into discord, lands on chat screens Actual Result: Discordo closes, user is returned to command line

    image

    opened by ODellKyle 4
  • Prebuilt Binary for Linux error

    Prebuilt Binary for Linux error

    Hello there

    I needed some help with running the prebuilt binary on Pop OS. I extracted the downloaded zip and gave the file inside permission to run as an executable. But running it does nothing.

    Kindly help me with this issue. Thanks!

    opened by IdleEndeavor 4
  • Discordo error because it need hCaptcha.

    Discordo error because it need hCaptcha.

    So the Discordo is had some issue when try to open. since it can be from discord itself where forcing to using hCaptcha to prevent spam bot exist. this is making to login via terminal is difficult for people who are trying to using Discordo.

    For more info, I'll try to Screenshot later.

    feat 
    opened by hafizdkren 4
  • Support for Discord-flavored markdown

    Support for Discord-flavored markdown

    seen this already in the readme, but thought an issue necessary for tracking purposes bold, italics etc in accordance to https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline-

    feat 
    opened by TheScreechingBagel 4
  • Doesn't work with zsh [panic: websocket: close 4004: Authentication failed.]

    Doesn't work with zsh [panic: websocket: close 4004: Authentication failed.]

    panic: websocket: close 4004: Authentication failed.
    
    goroutine 1 [running]:
    main.main.func1(0xc0000aa1c0?)
            /home/ryuo/.cache/paru/clone/discordo-git/src/discordo/main.go:56 +0x334
    github.com/urfave/cli/v2.(*App).RunContext(0xc00008a680, {0x9fb228?, 0xc000024200}, {0xc000020180, 0x3, 0x3})
            /home/ryuo/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:329 +0x9d3
    github.com/urfave/cli/v2.(*App).Run(...)
            /home/ryuo/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:226
    main.main()
            /home/ryuo/.cache/paru/clone/discordo-git/src/discordo/main.go:143 +0x2f0
    
    opened by Taughtimp2786 3
  • Transparency Issue

    Transparency Issue

    I'm using i3 with Kitty as my terminal. I have made my terminal transparent but whenever I launch Discordo it doesn't follow the assigned transparency.

    https://i.imgur.com/AtoVWPf.png

    I have looked into a past issue about transparency https://github.com/ayntgl/discordo/issues/63 but it doesn't seem to be working for me.

    I added "ColorDefault = 0" into /home/user/discordo/config.toml but it remained the same.

    feat 
    opened by tildethine 3
  • 2FA breaking login

    2FA breaking login

    I have enabled 2FA and when i try to enter 2FA code, only new login button and field "code" appear, the last button will crash discordo with this error:

            panic: HTTP 400 Bad Request, {"message": "Invalid two-factor code", "code": 60008}
    
    goroutine 1 [running]:
    github.com/rivo/tview.(*Application).Run.func1()
            /home/daniel/go/pkg/mod/github.com/rivo/[email protected]/application.go:243 +0x4d panic({0x7502c0, 0xc00058e420})
            /usr/lib/go/src/runtime/panic.go:1038 +0x215
    github.com/ayntgl/discordo/ui.OnLoginFormLoginButtonSelected.func1()
            /home/daniel/discordo/ui/handlers.go:337 +0x231
    github.com/rivo/tview.(*Button).InputHandler.func1(0xc0001b1d38, 0x6f441f)
            /home/daniel/go/pkg/mod/github.com/rivo/[email protected]/button.go:129 +0x42
    github.com/rivo/tview.(*Box).WrapInputHandler.func1(0xc0002fa3c0, 0xc0003e0dc8)
            /home/daniel/go/pkg/mod/github.com/rivo/[email protected]/box.go:161 +0x53
    github.com/rivo/tview.(*Form).InputHandler.func1(0x40e9c7, 0x10)
            /home/daniel/go/pkg/mod/github.com/rivo/[email protected]/form.go:673 +0xb7
    github.com/rivo/tview.(*Box).WrapInputHandler.func1(0xc0001bc000, 0xc0001b1e58)
            /home/daniel/go/pkg/mod/github.com/rivo/[email protected]/box.go:161 +0x53
    github.com/rivo/tview.(*Application).Run(0xc0001ba000)
            /home/daniel/go/pkg/mod/github.com/rivo/[email protected]/application.go:335 +0x886
    main.main()
            /home/daniel/discordo/main.go:36 +0x15f```
    
    ![2FA login](https://user-images.githubusercontent.com/45514518/148760097-81f8da08-2f24-4639-bdd6-2ec057a94867.png)
    
    opened by Just-Danuse 3
  • Auto-pick emote just by writing emote name

    Auto-pick emote just by writing emote name

    I was like the idea to having writing the emote name and call it a day rather writing full name+emote number. Since I dislike to memorized all number and using UTF is nothing rather complicated, I think just by writing it would showing several emote you can pick and my pressing "tabs" it would autocomplete selected emote name and sending it as full rather just name only...

    It also can be setup to showing full name+emote number or just by emote name. If attachment is support, then it would showing cached small emote is supported terminal such kitty...

    feat 
    opened by hafizdkren 1
  • Nothing happens after pressing

    Nothing happens after pressing "LOGIN" button.

    Title is what it says. Even if I put in a knowingly fake email and password, nothing happens when I try and press the login button. It hangs for a split second, then does nothing. No errors that I can visually see however. Would be helpful if I knew the location of some sort of log file or something of the sort, but I can't find any, apologies for that.

    OS: Arch 5.18.12-arch1-1 (Archcraft) Terminal: Alacritty 0.10.1-2 Discordo: r119.797d557-1 (Version currently on the AUR)

    bug 
    opened by Ahndrek-LiCyri 4
  • Feature request: Support for sending attachments

    Feature request: Support for sending attachments

    Hello! I would like to request a feature for supporting images, I have seen the issue about feature request for images. I have some ideas about the image feature :

    • For sending, type send *.png/*.jpg.
    • For seeing the image, just press Ctrl-O on the selected message. The message should be like this "Image : *.png | OPEN"
    feat 
    opened by UrNightmaree 2
  • Use vi like keybindings on the guild list as well

    Use vi like keybindings on the guild list as well

    All the other tview widgets used on the main app support vi like keybindings by default, like hjkl G and g, and would be nice to have these on the Guild list as well so that vimmers like me would be happy :)

    opened by matheusfillipe 0
  • Unread channels not showing

    Unread channels not showing

    imageimage As you can see from the from the above screenshots, discordo doesn't appear to show the unread status of channels or servers. As this appears to work in the screenshot in the readme, I assume this should be considered a bug report, and not a feature request.

    bug 
    opened by Hate9 2
Discord Rich Presence for MPD written in Go

mpdcord Installation Builds mpdcord locally and places the binary at $GOPATH/bin

null 3 Apr 15, 2022
A lightweight operating system that allows Discord channels to essentially function as terminal interfaces

KuriOS KuriOS is an lightweight operating system that allows Discord channels to essentially function as terminal interfaces. As such, all permissions

Eduard Anton 1 Dec 31, 2021
✨ Fastest Feature-packed Discord Token Checker written in GO ✨

FAST-discord-token-checker ✨ Fastest Feature-packed Discord Token Checker written in GO ✨ Overview ?? This program is the fastest ever written Discord

Vanshaj 47 Aug 9, 2022
discord bot that plays music in a voice channel discord

Music discord bot by serje3 Description A bot written in the Golang language plays music on your server's voice channel on Discord. It can be built an

Сергей Ерин 1 Nov 17, 2021
A simple Discord bot developed for the Bedrock Gophers discord server.

Bedrock Gopher A simple Discord bot developed for the Bedrock Gophers discord server. Click here to invite the bot to your guild. You will also need t

Dragonfly 3 Mar 12, 2022
Discord-dl: a tool to archive discord channels

discord-dl discord-dl is a tool to archive discord channels. I think it's safe t

null 3 May 18, 2022
Discord-notif - Send notifications to discord in Your pipelines or scripts

discord-notif Send notifications to discord in Your pipelines or scripts install

null 3 Mar 2, 2022
Discord-finder - The back-end for retrieving information about people on discord

About This is the backend application for Discord Finder, it allows you to retrive information about people on discord just like the discord lookup we

Alexei Ulanov 0 Jan 4, 2022
Discord-bot - A Discord bot with golang

JS discord bots Install Clone repo git clone https://github.com/fu-js/discord-bo

JS Club 4 Aug 2, 2022
Wipe-discord - TUI application to erase Discord messages

wipe-discord Terminal user interface (TUI) application to delete Discord message

null 7 May 24, 2022
DiscordGo: a Go package that provides low level bindings to the Discord chat client API

DiscordGo DiscordGo is a Go package that provides low level bindings to the Discord chat client API. DiscordGo has nearly complete support for all of

Владислав Черников 1 Dec 14, 2021
A discord bot that watches for tiktok URL's and automatically uploads the corresponding video to the channel

TikiTok Bot A Discord bot that watches for TikTok URLs and sends a message to the channel with the corresponding video attached Click to invite the bo

Matthew Bass 5 Jul 28, 2022
A tool written in GO to demonstrate how bad actors utilize requests to spam Discord Users and launch large unsolicited DM Advertisement Campaigns

discord-mass-DM-GO A tool written in GO to demonstrate how bad actors utilize requests to spam Discord Users and launch large unsolicited DM Advertise

Vanshaj 1.5k Aug 8, 2022
A Discord Bot written in Go. Provides some fun commands and utility.

asuka About Asuka is a project to finally learn Golang and get comfortable with the language while exploring many different concepts in programming. A

Michael Schwieger 0 Jan 7, 2022
A Discord clone using React and Go

Valkyrie A Discord clone using React and Go. Live Demo Notes: File Upload is dis

Palmara 0 Dec 19, 2021
DiscordWordle - A bot for discord to store and track Wordle scores

DiscordWordle A bot for discord to store and track Wordle scores. Usage Mention

Alex Berryman 11 Aug 7, 2022
A Discord bot that automatically retrieves ELO ratings for Age of Empires 4 and gives users custom roles.

AOE 4 ELO Bot This is a Discord bot that automatically retrieves ELO ratings for Age of Empires 4 and gives users custom roles. Uses the public API fo

Alexis Geoffrey 1 May 13, 2022
Show when you're out and about on a Boosted board on your Discord RPC

boosted-rpc Show when you're out an about on a Boosted board on your Discord RPC I use this with the Ride app for iOS and the IFTTT integration. Effec

Alistair Smith 12 Jul 24, 2022
Experimental detection, and proof-of-concept, of Discord Nitro phishing/scam links via analyzing images.

Experimental detection, and proof-of-concept, of Discord Nitro phishing/scam links via analyzing images.

Levi 7 Jun 28, 2022