Discord is a company with a 15B valuation and hundreds of employees. And bots, either general purpose or bespoke, are a pretty important part of most partnered servers I’ve been in. I just don’t understand why they would leave a huge fragment of the “community” to their own and simply watch it burn. Surely they can afford a developer advocate or two, and take over development of a popular SDK?
> is a company with a 15B valuation and hundreds of employees
And zero profit nor viable plan to generate any. That's the problem.
There's no money to be made in being a message bus, certainly not enough to justify such a valuation and sustain hundreds of employees (whether it needs those is a different matter, but that's out of scope).
Discord's current business model is "growth and engagement" - this is what netted them their current funding and valuation. This requires keeping the audience captive and being able to regulate their behavior, including coercing them into doing things against their interests such as seeing ads, navigating through dark patterns, etc.
Having a healthy developer ecosystem goes against this - it means you become a dumb message bus and people will be able to automate their way around any inconvenience you might put to monetize them. Developers are great when you've got a real business providing a real product people pay for, but when your only bet is on the "attention economy", the last thing you want is to have "smartasses" around that can create technical workarounds to your inconvenience-based business model.
Discord is one of the few websites on the Internet that doesn't embed any cross-origin resources. Their business model is to sell you stickers. If that isn't honest graft I don't know what is. Last thing Discord needs is for the Cambridge Analyticas of the world to start building apps for it. I'm surprised they even have a developer API.
I admire that business model (Grinding Gear Games followed a similar approach with their ARPG Path of Exile initially, you could only buy cosmetics, and seemed to do okay with that, as opposed to games like War Thunder where money could buy you special planes/tanks/ships, although I think GGG's approach may have changed slightly after Tencent bought them).
I just hope it's viable when you're taking VC money.
>Discord is one of the few websites on the Internet that doesn't embed any cross-origin resources
What do you mean? You can literally link to an image and Discord will replace that link with an inline image. And with opengraph Discord will embed youtube videos and twitter image and videos right into the chat.
Having interacted with Nitro subscribers daily and worked on Discord bots myself, I fail to see any competition (or workarounds) between Nitro/server boosts and bots. And it’s certainly not becoming a dumb message bus unless you’re talking about the forbidden unofficial clients, which is not what’s being discussed here.
> And zero profit nor viable plan to generate any.
They went from 5 Million revenue in 2016 to 120 Million in 2020. That's very far from zero or a lacking plan. The money is coming, it's just has not grown enough yet.
I'm explicitly talking about profit and not revenue. I too can have near-infinite revenue if I keep "selling" products/services for less than what it costs to make them.
And then this guy, who made a detailed post about how non-cooperative and almost hostile the discord dev team was towards his efforts half a year ago — providing free work to help others vastly improve the discord experience with hundreds of useful and unique bots — announces he'll go back to maintaining this lib although nothing about how discord acts towards the project has changed. Is this open source masochism or something? I don't get it. I'd have understood if money were involved, but like that? Rather let shit hit the fan and see if you can leverage it.
My experience with the discord.py community left a bad taste and I imagine some people at Discord might see what I've seen and not want much to do with it. Suffice it to say I stopped thinking about discord.py and switched to a thin layer with discord.js to python.
This gist doesn't really help my view of the scene, it confuses me more and adds to the drama. The changes look great, the future plans look great, but discord.js already had (at least) slash commands and better documentation. Staying with js seems safer, more time efficient, and more drama free to me at the moment even if it's a bit awkward.
The "I took my marbles and went home, but I hear you all are so bad at this stuff, so I'll trouble myself to come back and save everyone" bit was completely unnecessary and savior-complex-y. I nearly didn't read the important bit (discord is basically EOL'ing the current stable API in a matter of months) because my eyes rolled so hard I nearly fell off my chair.
Discord is a company that seems to just fly by the seat of their pants. A great example would be "threads", for which they rolled out with no notice to server admins - it just suddenly appeared - and worse, threads were rolled out before thread-related roles were.
Even worse: threads created before the roles were updated to include thread roles could not be deleted by server admins/moderators.
The mind boggles that such a large company, presumably full of very qualified and well paid engineers (and likely piles of "UX" people) could generate such a clusterfuck.
Another great "feature" of discord: blocking someone, unlike every other platform save IRC, does not hide your content from them. It hides them from you.
Blocking a user so you no longer see their posts is a long established feature of various web forums, chat systems, and comment sections. I do not know how you would come under the impression that the reverse is true; the only platforms I know of where it is, is the four or five social media giants. People do complain about Discord blocks, but they complain about them because there is still a 'N blocked messages' indicator, not because of what direction the blocks go.
In my experience this is a feature of startups. The enterprise I work at doesn’t ship releases with major bugs, period. But in exchange they release only once every 6 months, and releases are very likely to be postponed if any defect is found (even if this occurs in maybe 1/10,000 cases).
Discord gets to move fast at some expense to the users, but mostly those users do not care, as long as messaging/voice chat functionality isn’t impacted.
> Another great "feature" of discord: blocking someone, unlike every other platform save IRC, does not hide your content from them. It hides them from you.
Not sure what point you're making here. The equivalent of a "block" that goes the other way is kicking or banning the user. That works the same on IRC.
Idk what you mean about threads. They were a long time coming and as a member of several communities most mods were well aware of them before they came up.
Their launch was sudden and immediate for non-large servers (basically partnered servers iirc) and was a moderation hell for some of us medium size servers when they suddenly got turned on. Long time coming? Yes. Time to prepare? Zero, since it just immediately turned on for most users.
I'm left with a similar bad taste every time I take a look at the community. It seems kind of angsty and egotistical, and this gist doesn't help with their image at all. It comes off to me as if he's coming back as some sort of savior to the Python bot developer community. The points made in the original "deprecation" gist were also, at least in my opinion, greatly exaggerated.
I can't really say I'm surprised, however. It seems like it's mostly always been this way with constant whining or drama from them when things didn't go their way.
> My experience with the discord.py community left a bad taste and I imagine some people at Discord might see what I've seen and not want much to do with it.
I only briefly looked at discord.py and left with the exact same impression. A lot of angsty energy. Felt like everyone was fighting with each other and Discord itself, with a heavy dose of martyrdom.
Fortunately none of the other Discord libraries I looked at had anything remotely similar.
I haven't look at the community at all, but I've used discord.py to make a few bots with no issues whatsoever. It was a fairly clean, complete and easy to use framework. Though my bots weren't very advanced, discord.py did everything I needed.
I agree, discord.py has been pleasant to use. However up until this gist, discord.py was lacking newer API features, most notably slash commands, and was otherwise abandoned.
I'm not clear on the details but if you aren't currently using slash commands you may be forced to in the near future so if you have any operating bots responding to custom prompts you should look into whether you need to do some work or not.
Now on what library to use... there have been various discord.py derivative projects to provide slash commands and now discord.py apparently supports them too. Personally I'm avoiding discord.py, I can't trust they'll continue development and I'm not trying to track community drama via discord. I also really dislike node. My solution for now is discord.js as a thin layer between discord and python.
I think the issue most people are finding with it is related to the community surrounding it and not necessarily the library itself - the library can work fine and be clean, but it's ability to live on (or die) depends on the community surrounding the project
I'd say the negative parts of Discord mixed with the negative parts of classic forum/Q&A behaviors plus a heap of angst/martyrdom (good phrasing by a sibling).
In my experience on the discord.py server, I had recently come back to discord bots after a couple of years and wanted to try slash commands and was told: "slash is trash", discord.py will never support slash commands (lol), the gist on the issue is SO OBVIOUS and easy to find just google it (it wasn't), talking about forks and other bot libraries is against the rules (wtf?), and this was all served with mild verbal abuse. It was also served while at least 2 people were asking if they were allowed to ping Danny to express bizarre levels of affection and they somehow got more positive traction than me trying to understand why this advertised API feature wasn't available in what I thought was a highly popular/respected library. Looking around the other channels had me cringing a bit on conversations and shared media to put it lightly.
Sometimes going to a discord server feels like entering an online shooter voice lobby. If you try to be serious you just get talked past or berated by loud 15 year olds. If they even say something related to what you're trying to talk about, they're mindlessly parroting their idol and not thinking critically on their own. These servers often have a handful of active people forming their own little social club with hundreds or thousands of other members on the side never saying anything, probably not even lurking. This is something I've noticed a lot on Discord but I imagine extends to similar solutions in the same space. My experience on Slack has been less juvenile but also less populated and similarly useless.
Anyway so mix that experience with the "I'm quitting" gist (which is something I can write a few paragraphs on but really don't want to) and yeah I wouldn't want to work with these people if I were a boring corporation, and I don't want to think about them when I'm doing a fun side project for friends.
Thank you for sharing your experiences. Those certainly don't sound pleasant...
> the gist on the issue is SO OBVIOUS and easy to find just google
I also have a deep resentment against people telling me to just 'read the docs' (especially the LMGTFY links). It gives a really bad first experience like yours, even more so when you've already looked it up before asking. I understand the contributors being constrained, however it's very important not to be blatantly rude to people. Very tired of this attitude in FOSS in general (I never do it when people ask about my projects).
> These servers often have a handful of active people forming their own little social club
That lines up with my experiences in the Discord API server, too. It's very ostracising.
As an aside: the state of the Discord API server is quite something. It's not "offical" per se, but it basically is (even Discord link to it). Almost like they want the benefits of an "official" room while also keeping it at arms length. Perhaps it's due to the experiences you describe above.
Yeah some question of "hey did you try the docs, if so what were you missing?" or something would go a long way. In this case, the Python tooling had been previously good enough that I started slash work poking around in the IDE. When I couldn't find anything, I went into my bookmarks and what docs I had didn't have any kind of banner or other warning that the project had been abandoned. It was only when I went looking for a blog or some sort of news source from the project that I found myself looking at the repo readme. The only indication that the project was dead was a small blurb at the top of the readme which you could easily skim past if you were looking for something specific. I tried to raise this point to them that the status of the project is not obvious and requires reading a dramatic gist ("moles in discord") to understand and yeah that wasn't received well. This whole time I was handling myself like I would a team at work that I'm not familiar with, very professional and objective. I didn't leave in some flurry of insults either.
Regarding pseudo-official servers, I imagine Discord wants a beat and handle on the community but ultimately the way the business has to move and make decisions is not compatible with how these people behave in public.
I never really join library communities. I wanted to make a quick bot a few months ago, had some very old experience with discord.py but indeed wanted slash commands. Simply used discord-py-slash-command [0] library and had a bot in less than an hour that did what I needed.
I have written a few bots using the discord.py library, and while I appreciate the hard work the developers have put in, and I can appreciate wanting to leave the scene, this puts a bad taste in my mouth. I and many others relied on this library to interface with the Discord service only for them to abruptly archive the repository with no warning, and then suddenly decide to return just as quickly. What guarantees do I have that they won't just up and leave again? They said that the Python Discord bot scene is in disarray, a situation that A. they themselves caused and B. isn't even true. A number of forks spun off of the original repository and some have continued promising feature work (https://github.com/Pycord-Development/pycord is the one I had identified as the fork I was planning to switch to). Looking at the contributors, it looks like there are now two completing efforts with zero collaboration between them. I get the impression that there was a large amount of behind the scenes drama, with the archival of the repository done simply to attract attention.
I think that the developer deserves more credit. Being an open source maintainer is difficult and when the maintainer of discord.py initially quit they cited being busy elsewhere in life as part of the decision. I don't think a maintainer should be pressured to work on something just so that the ecosystem is more centralized, although it would have helped to have nominated someone to continue the project instead of archiving it. Open source software has no guarantee of stability and it is largely discord's fault that SDKs must continuously be maintained by the community in this fashion.
> I was hopeful that after half a year that there would be a clear alternative library that most users can transparently migrate to, but it seems that this never ended up materialising.
So I think the author agrees it would be nice if the ecosystem kept moving forward.
pycord is a fork. Why didn't the author of pycord start a new project? I think the author of the article was hoping for a new project that isn't a fork.
Myself and all my bot developer friends think he's being a bit of a crybaby and wanting things his way. Discord gives very very nice allowances and tools to developers, I wish more companies were even half as good as discord is in this regard. They're adding more and more features, improving things, fixing things, doing developer Q&As, etc, what more can you ask of them? The message content intent is considered by nearly everyone to be a good, needed change, although it is a nuisance (i.e having to rewrite and refactor a lot). I'm not even attempting to apply for the intent because of the respect I have for privacy, I don't want (or need) it.
The message content intent only prevents rule-abiding bots from reading message content. I can be trivially bypassed by anyone actually wanting to scrape message content using a regular account...
> In terms of personal communication with Discord, I can't exactly say that it has improved since I dropped development, rather communication suffered. After development ceased I did not speak to any Discord developer and they didn't speak to me. The only form of contact came from me contacting them to talk about the decommission.
I don't really know if this is a good thing. Going by his own account as quoted above, Danny's leave doesn't seem to have affected much at Discord. You'd think Discord would have reached out to him after he published his initial Gist and tried to work things out (including releasing a public apology). Especially since, as he said, the Discord.py library is one of the most popular libraries for Discord out there. I obviously don't have the numbers, but the amount of developers libraries such as Discord.py have brought to Discord must be in the high thousands. Why are Discord not treating this with the urgency it deserves?
Have I just come to expect too much of companies these days?
Discord is rightfully _terrified_ of a news story like "top Discord bot in tons of servers hacked, every message it saw in the last 3 years has been leaked via bittorrent. there are about 300 Million unique users' messages in it". It only makes sense to start clamping down on what info bots can receive while still allowing them to achieve interactivity via slash commands and whatnot.
Yes, I've always thought it was only a matter before this eventually happened. I completely understand why they would want to scramble to prevent that.
The point made by the discord.py creator elsewhere is true: this is more likely to happen with invisible self-bots than bot-bots. But it would be far more catastrophic if it happened with an actual bot, since lots of small, private servers and channels make use of those. It's the difference between leaking things most everyone involved kind of already knew they were broadcasting publicly vs. potentially leaking enormous amounts of data that everyone involved assumed would be private because they didn't consider the scenario of a popular bot secretly spying on them.
This is one of those counterfactual scenarios where everyone would be furious at Discord if this happened and they didn't take steps to prevent it. And frankly, it seems quite possible it already has happened but the bot owner has just been using the data for some nefarious intelligence or profit purpose and has no intentions of burning their trick by leaking anything.
> potentially leaking enormous amounts of data that everyone involved assumed would be private because they didn't consider the scenario of a popular bot secretly spying on them.
People tend to be quite nonchalant about bots in private channels, in my experience. It tends to be taken for granted that they're not hoovering up all the messages. I'd go so far as to say we need a data catastrophe like the one you described to wake everyone up. A music bot does not need read permissions in your private staff room! I took over administration of a server which did so and quickly clamped down on the permission of bots.
For bots masquerading as users, there aren't many options. I suppose you could in a very close-knit friend group, but if you're running anything at scale this is next to impossible. From what I understand, a lot of the bots join and never do anything.
Some administrators set their server up to create a temporary holding room for new members and ask them to add a reaction to a message, or do a CAPTCHA, but that still falls apart if someone does all that manually then uses their account as a bot. If you're interested, there are plenty of readymade bots (heh) that do all this verification stuff, and they are quite popular.
You could also prune inactive members, but again the user account could just say something every now and again, plus any real users who find they have been kicked out for not participating might not be particularly pleased (or might just forget about your server altogether).
My point in the above message mainly focused on bot accounts. It's best to operate at the principle of least privilege. You don't need a music bot to see your staff channels, for example. Keeping with that example, some administrators take the time to limit music bots to a specific music channel. For that, I applaud them. There are simple ways to limit the data bots can get, which mostly rely on common sense on account of the server administrator(s).
It makes me feel a lot more comfortable that bots are only allowed to run with administrator approval. I don't want to accidentally ban someone good for shyness because crackers exist who abuse the service with headless blink.
In general, for official bots yes - Administrators are the only ones with permissions to add bots to servers, but the permission prompt is usually one that asks for full Administrator permissions and they often don't bother to go back in and remove access to certain channels for eg. music bots.
Another problem is User bots - ie. clients that look like a regular user but are still doing bot stuff or simply ingesting all messages they see, which is easy since Discord's client implementation between bots and users are almost exactly the same. They could have used some wasm/javascript virtual machine thing that would make it hard to figure out what the Discord client is doing and would make it harder to sign in to Discord via a user bot, but then we'd probably have another set of HN users complain about Discord hiding stuff from users or something.
Discord deserves a binary lambda calculus virtual machine, to protect our telecommunications. https://justine.lol/lambda/ This will serve the interests of app developers too, since anyone who manages to figure out a way to game it will probably be able to get a PhD from Berkeley afterwards.
Yes, something similar to this actually happened with a giant directory of users. They still could have gone about the rollout much better by adding features that the community requested to slash commands before forcing everyone onto them.
So he came back but Discord is still going to shit the bed very soon - don't see what's changed.
>I attempted to discuss the impact of the decommission with Discord, and while they acknowledged my concerns, they gave me no guarantees that the decommission date would be postponed. discord.py remains the 2nd most popular library in the ecosystem. If the decommission goes ahead as planned, it will be a far more catastrophic blow to the ecosystem than the original privileged message intent requirement. In order to minimise damage of this change, I felt like the library needed to be updated.
Why does he feel the library needs to be updated if it will again break very soon by Discord shutting people out?
Discord is not shutting people out. They just aren't going to keep legacy versions of the API around forever. Especially when newer versions provide security benefits. Discord as a platform is constantly evolving so it makes sense that its API is too.
Very happy to see this. An old side project of mine randomly became a very popular bot on discord and when discord.py shut down I decided to just let my bot die whenever the API no longer supported discord.py. I likely still will let it die if the developer experience using discord continues to be hell especially when compared to telegram. I think that bots add a lot to a platform and I'll be sad to sunset a project that is being enjoyed by so many but I have no desire to support a platform that doesn't respect developers.
As a person whom has built telegram, slack and teams bots.
Telegram is definitely not the worst, in fact, it's the best on that list depending on what you want to do.
Slack's real-time API has been deprecated since forever, leaving you only specific slash commands that hit web hooks, which does not allow for rich engagement of content or anything close to being as dynamic as the old IRC bots used to be.