I have a bot named R. Danny. It is actually the oldest bot on Discord. I made that bot within a few hours of me joining Discord. I remember the first day I joined Discord, August 10th 2015, my friend was trying to convince me to move our operations from Skype and IRC over to this chat he had just found today called Discord. So I logged on and tinkered with it and I was pretty impressed as my first impression. I spent that day looking up an API for Discord and couldn't find anything until I stumbled upon a package named node-discord
by izy852. This node-discord package was incredibly barebones, it was just a WebSocket wrapper with two events, a message
and a debug
event. It might as well be the simplest sugar for Discord. But I looked at it and I played with it for a while and I decided it was possible for me to move our tournaments over to Discord with what I had there.
I didn't use node-discord for very long, I really only used it for probably the first two days before throwing it away and started reverse engineering the API myself via discord.py. I didn't like JS much and I wanted to make a library for my bot to truly shine. I essentially made discord.py for the sake of my bot. It was during this time that Voltana, izy, and I made a server known today as Discord API. In that server we spent our concentrated manpower reverse engineering the API for fun. Stan would join and give us API announcements on things that would break between v1, v2, and v3 along with new features that might affect our really tiny ecosystem. Our ecosystem was small -- we barely had 200 members at the time and that was a lot! But it was our nice little ecosystem.
I made R. Danny with the intention of using it in the r/Splatoon server. It was there since day 1 essentially. We used to do all sorts of cool things like tags, profiles, and checking in-game information like maps and equipment. It was a vital resource for that server. I remember people were impressed that I had a bot and asked me how I did it. I motivated a few others to start making a bot of their own. One of those people was someone you might know as jagrosh. He wanted to make his own bot and add it into the r/Splatoon server as well. He ended up becoming a major bot developer for the platform by creating popular bots such as GiveawayBot and Yggdrasil. People still, to this day, mention how my bot has impacted them and improved their experience.
R. Danny was the first bot to come up with a starboard feature. It's been copied a lot by other people nowadays, which is fine. The feature came from StackOverflow Chat, which is where I used to hang out before Discord was a thing and I wanted to come up with a way to port it over so my friends would move over to Discord. I've implemented a lot of influential features using R. Danny and used him as a way to drive the design of discord.py into what it is today. Most library developers did not maintain public bots -- I used to be the sole exception.
During the verification fiasco, my bot became gimped. I was against the verification system and didn't appreciate that my hobby was being neutered over concerns that I did not share with the newly formed API team. My bot is a vital moderation bot for all the communities I'm in. Mason insulted my bot's potential death. I still hold that very personally. Due to a bug and lucky accident, my bot still has the members intent despite being unverified. It was a lucky accident -- I had checked the box before the flip was switched and it never toggled itself off. It's been unnoticed since I haven't told any staff about it. Please don't fix it.
Unfortunately for me when this message intent change goes live I'll have to officially sunset R. Danny and all my bots. An actual literal death of my oldest bot and everything this hobby meant for me. A piece of my history and my time. A piece of Discord history. I'm sure a lot of the people over at Discord Inc. don't care about my bot at all. Maybe some would even do another jab at me for being emotionally attached to it. But to me, this actually matters.
It depresses me.
I actually am a developer who is pretty new to bot developing. I started developing my bot around 5 days ago as a way to put my Python skills to use and practice writing code in it. I had an easy enough time working around the API limitations since my bot is currently in <100 servers, meaning that I'm not required to verify my bot for access to some of the other intent features.
Today, I was working on implementing the new Timeout feature and happened to come across this gist while doing research as to why discord.py was an archived repository. Being new to Discord bot development, I was not aware of the mandatory transition to slash commands.
I have to say, I do not agree at all with Discord's changes to the API platform as a whole. I've never been a fan of slash commands, and based on how slowly the other major bots have been implementing them, I don't think a lot of others are either. Not only are they more confusing and complicated to work with, but slash commands take away some of the immersiveness of bots that I've always loved. Instead of typing a slash and using your mouse to pick from a list of available options, I've always preferred simply typing the command into the channel. It really feels that Discord is babying up Discord. The mouse-picking interact method with bots honestly seems really gimmicky and the in-chat message that says "user used
/info
" or whatever seems completely unnecessary; I wouldn't be surprised if Discord decided to add bot output to some sort of secondary text box (under the send message box or in the sidebar perhaps).Even without considering slash commands, restricting developers' options of using the API to make more awesome bots is still a terrible move by Discord. The dropping of library support forces developers to spend more of their time on actually implementing the API into their code (whether through an API request with response parsing or through other means) and less time on actually implementing their ideas into a functional bot, which is what I was looking forward to. The remaining libraries that actually support Discord's new API will give existing developers a choice: completely rewrite their bot in the same programming language to support the use of slash commands for those who are developing in languages that support the new API, rewrite their bot in a different programming language that supports the new API so that they can continue developing, rewrite their bot in an incompatible programming language and be forced to implement the API themselves, or completely quit developing the bot.
I fully respect and understand your decision to stop development on discord.py, and I wish you luck in future projects that you may work on. Discord is killing many of the small bot developers who don't have the time or knowledge to simply rewrite their bot in a different language and/or completely re-implement API methods in their code. I really want Discord to bring back the legacy way of interacting with bots (especially with how buggy slash commands currently are - even many big bots such as MEE6 and Dyno constantly run into errors when using slash commands), but I have no expectations for Discord. As for me, I'm not doing anything: I will continue developing my bot using discord.py (mainly for the learning experience of developing with Python). By the time April of next year rolls around, I'll have to consider my options again.