Do note that this is very much against the Discord TOS; the README does say "WARNING: Self-bots are discouraged and against Discords TOS.", but for clarity, anything considered "user account automation" is disallowed, including custom clients and similar. See ex. https://support.discordapp.com/hc/en-us/articles/11500219235...
(Obligatory disclaimer: I don't work for Discord, I just use it heavily and make a bunch of proper bots for it)
Where exactly does it say that custom clients are against the TOS? Those aren't a form of automation. Discord deliberately offers (and this project uses) an API for posting from non-bot accounts, which implies that there are at least some legitimate use cases for using it.
> Discord deliberately offers (and this project uses) an API for posting from non-bot accounts, which implies that there are at least some legitimate use cases for using it.
The official client uses the exact same API as bot accounts, with the exception of a few endpoints being restricted to certain account types. Any form of "use a user account via API endpoints" outside of OAuth is discouraged, to say the least, although in general they won't actively hunt down people who do so.
Bummer, I was about to start using discord. There are a few servers that I'd like to join, but I find their app slow and annoying. This could've been a good compromise. I don't want to break their TOS, though.
People and groups do not have "Discord servers" any more then people have "Facebook servers". They've just coopted the jargon from actual voice chat servers like mumble, teamspeak, etc which you do run on servers and control what happens.
Using a centralized service like Discord where you are the product, where the protocol is intentionally and legally enfoced as proprietary, is a real bad idea.
You might want to re-read both the comment of my parent, and my comment again.
Parent complains that Discord 'servers' are misnamed because they are not literally individual servers. I asked them if they have a similar gripe with IRC, because IRC 'channels' are named that after radio/tv channels, but they are not literally radio channels.
That seems unnecessarily pedantic. Someone who cares whether the servers are open or not knows perfectly well that a Discord server is not a server per se.
I think the main reason is just performance. The official client is slow and slows down my computer. I have signed up and joined a few servers like Mario maker ones and the one for the diablo disassembly project (which I always forget the name). Currently, once in a blue moon I open it in search for mario maker IDs. However, I never spend any time there, as the chatting experience is not very good.
It's not very good because:
- notifications work badly for me (notifying a lot more than I'd like, I briefly tried to get it to only notify me when someone called me specifically, but I can't couldn't find a way that wouldn't involve going through all the channels
- it's slow and uses too much memory for my puny little pc
- it's hard to keep track of the last read message and current latest message. It requires clicks and it's clunky to use.
- this is a personal one, I find the interface really ugly and I value beauty in my UIs
If there was a server I was incredibly excited about I could put up with it. But given my mild interest, I end up never logging in. If there was a terminal UI that I could leave running in the background, not taking too many resources, I'd definitely leave it on a tab and interact on topics I found interesting, just like I do currently with IRC.
Because the discord desktop program is kind of crap? Why can't I collapse the godamn channel list? edit: because I was misunderstood, I mean collapsing the column so that chat takes up the entire window space. I've only been able to do this through developer mode edits.
It's all so bad. Wasted UI space. Takes up my entire screen. Sys req is way out of proportion for a chat client. Weird UI prompts.
Resizing the window does not change anything, it makes things worse as the messages now will not be displayed properly. Try it. Resize the window, you will notice the parts whose size does not change at all.
Why is that in a 80x24 terminal I have everything on screen while typical Electron applications require one workspace per application otherwise the crucial data becomes ugly? Just let us resize bits or make them collapsible or something.
Whilst it's not an endorsement to do any of this, from experience, they only take action if another user reports you or if you start spamming their servers with requests.
I've never understood these tech company's intolerance to 3rd party clients, which are almost always niche or used by the ad-blocker using tech savvy subset of their userbase. Open clients is how most of the internet was built and will continue to be built.
They should spend more time focusing on building their own best-in-class clients themselves. If they're not able to accomplish that for the vast majority of their users it's a sign of a bigger problem than some monetization optimization strategy which will only push people away.
The valuable power users have multiple clients anyway and bring in more regular users (who just use the standard clients) than they're worth individually.
The reason is simple. Discord's users are it's product, not the software services it provides them. Its clients are intentionally spyware. If you made your own client then they could not spy and sell information about you.
They send a tracking request for every single thing you do in their client. Clicked on someone's profile, clicked on a channel, clicked on a "server" (not really a server), etc. The URL was named "/track" before but they renamed it to "/events" recently (but it's still a POST with no response).
Also their desktop client is literally a remote sdministration toolkit, it has full access to FS (electron app) and it loads every script from their servers. They can just add something like require('fs').readFileSync(process.env.HOME + '/.ssh/id_rsa').toString() and send this to their servers, and you won't even notice that (since it doesn't require an update on client because the client is just a browser with full permissions that loads obfuscated code from their servers every time you launch it).
I’m not even talking about 3rd party clients becoming the main clients. As I said that would be a sign of a much bigger problem than just reduced ability of monetization.
The reasons why they default to lock in are obvious, what I’m saying is that it ultimately benefits their business or has a neutral effect as the type of users to use a 3rd party client isn’t and is probably still using multiple clients (mobile/desktop) and still buys the subscription services.
Discord will always make the most popular client. It’s just how this stuff works. Just like Twitter 95%+ of people go to discord to download the clients. It’s the niche ones on the side that end up getting banned.
It’s not like the advanced features of a freemium model couldn’t be replicated in the client or in Twitters case they can still send ads in the API stream. If the client doesn’t show the ads + is very popular (a key part of the equation) then you can cut them off.
They could charge to allow people to use private clients equivalently (or maybe even more) to what they make per client selling that track data. Either way things go they'd win that way.
> I've never understood these tech company's intolerance to 3rd party clients, which are almost always niche or used by the ad-blocker using tech savvy subset of their userbase.
In the case of Discord specifically, iirc there has been issues in the past with abusive behaviour coming from people automating their own accounts (spambots etc.), which was one of the main reasons it was prohibited.
Part of it is due to having to worry about breaking changes made to the client-server protocol, and adding new features which may not available to all of the userbase soon, if ever. Look at the various enhancements made to IRC server software over the years and how fragmented things are.
It’s unlikely to have a good outcome for a service that’s already dominant in the market. They fear being commoditised, or even strangled.
Imagine one of those clients becomes really, really good - so much so that it becomes the default way to use the service. The client starts adding features only available in that client. Then the client introduces its own competing service, inside the same client.
The service just becomes a dumb pipe, with all the real value in the client. This is why we want protocols, rather than services, to decouple the client from the service provider.
A third party client's shitty coding broke the entire network repeatedly in early 2016. Third party clients are mostly used to spam users with userbots. The only sane option is to blanket ban them.
Or just build an automated tool that watches it. That's not too hard- I've done it in Python under Linux before:
gitter <-> IRC <-> Discord
It wasn't very difficult- you just need to do something like a keep-alive ping (which can be hidden in an invisible Discord channel) if you're having problems with your bridge.
That's what I meant with "constantly monitoring". If for some reason it fails you need someone to fix it, maybe it's not fixable due to changes from either provider ...
All that makes using bridges unreliable as you don't know if your messages was received by the other end.
Something open probably won't have the money required to run the service. Discord is losing money and they will probably never make a dime. How could Matrix for example ever compete?
Another TUI Discord client written in Go, called 6cord [1]
I'm using Ripcord [2] because it is written in Qt, cross-platform, and works for both Discord and Slack. It also has voice chat support. It is not FOSS though, not feature complete either, and against ToS of Discord and Slack.
What is it about Ripcord that violates Slack's ToS? AFAIK Slack are pretty accepting about custom clients, to the point where they even mention wee-slack [1] in their docs [2].
I've been using it for the past few weeks due to a problem with the Discord electron client spinning up my fans. Using Discord in the terminal fixes the problem (and scores major geek points!)
The main developer of Cordless is super nice. Each issue I've filed has been an absolute pleasure to discuss.
I'm more interested in a server side reimplementation than a new client. When discord goes out of business I don't want to lose everything so I want to be able to redirect discord requests to my own server.
In this scenario you'd be losing all your backlogs and user registrations anyways, so why re-use the existing client with a stapled-on redirector over switching to something you can actually deploy yourself?
The client is actually pretty good, so we could continue using that and I believe that for popular discords with lots of fans it wouldn't be the end of the world to have them re-register if everyone knew the alternative is losing the community.
(Obligatory disclaimer: I don't work for Discord, I just use it heavily and make a bunch of proper bots for it)