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

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.

Comments
  • Messages flow in from every channel at once, rather than just the selected one...

    Messages flow in from every channel at once, rather than just the selected one...

    Expected behaviour should be that selecting a channel would only show messages from that channel, but instead selecting a channel shows the messages belonging to that channel before flooding the chatlog (visually) with spam from other channels or even servers.

    image Note how, despite having no channel selected at all, I'm still receiving a flood of messages from random servers.

  • 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 :/

  • Do I need to run an installer to get the config.toml file?

    Do I need to run an installer to get the config.toml file?

    I am running the app from source on OSX and not finding this file in any of the prescribed locations.

    Can someone share a default config.toml I can install?

    In particular, I'm trying to figure out the setting that will let me set the "Home" key (in re: https://github.com/ayntgl/discordo/issues/173)

    Thank you very much

  • 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)

  • 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

  • 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
    
  • Can't see channels

    Can't see channels

    Hi there,

    Even if I was finally able to build and log into discordo using my discord user/pass, I can't see the servers or channels listed anywhere. I can only see the PMs listed under the channels window, which is somewhat confusing.

    Looking at the instructions, they don't mention anything special should be done.

    So, how can I make servers & channel show up on discordo? I mean, the ones I am joined in.

    Thanks!

  • Failed to build on GNU/Linux Ubuntu 22.04

    Failed to build on GNU/Linux Ubuntu 22.04

    Hi there,

    This is my first time building a "go" program, so I am sorry if I did something wrong.

    I installed the "go" compiler like this: sudo apt-get install gccgo-go

    Then, I did this: go mod download github.com/gdamore/tcell/v2

    Then I tried to build with make build -j4

    But I get:

    
    go build -ldflags "-s -w"
    ../../go/pkg/mod/github.com/mattn/[email protected]/runewidth.go:7:2: //go:build comment without // +build comment
    ui/login_view.go:10:2: //go:build comment without // +build comment
    make: *** [Makefile:16: build] Error 1
    
    

    Any idea on what's going on? Some omission on my side, for sure, but what?

    Thanks!

  • Missing servers from the guilds view

    Missing servers from the guilds view

    I posted this question on the discord forum, but the server is now missing.

    My guilds list is missing everything except for the server I created and my direct messages. I have to log in with the '--token' method as I have issues with captcha when using email and password, if that makes any difference.

  • desktop notifications via dbus or beeep

    desktop notifications via dbus or beeep

    https://github.com/ayntgl/discordo/issues/121 was mainly referencing dunst, which it's only possible way to communicate to with notifiactions is with dbus, and with the beeep library it should be straight-forward i'd assume.

    tl;dr use beeep as it can support dbus, which means native system notifictations.

    alternatively; have a FIFO/file for discordo to put notifiactions into, which can be read by a wrapper to send to a notification handler (eg. herbe, xnotify, dunst (without dbus!))

  • Compiled under Android ARM64 via Termux Not Running

    Compiled under Android ARM64 via Termux Not Running

    I have compiled & moved binary to $PREFIX/bin & it launches perfectly as well. I inserted my token as per this guideline

    However after login it just is blank ...altough separators / sections are shown but no messages or channel names?

    Screenshot_20220919_165326_Termux

Discord Rich Presence for MPD written in Go

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

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

Dec 31, 2021
✨ Fastest Feature-packed Discord Token Checker written in GO ✨
✨ 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

Dec 29, 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

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

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

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

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

Dec 15, 2022
Discord-finder - The back-end for retrieving information about people on discord
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

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

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

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

Aug 21, 2022
DiscordGo: a Go package that provides low level bindings to the Discord chat client API
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

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

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
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

Jan 2, 2023
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

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

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

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

Sep 3, 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

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

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.

Nov 22, 2022