AlexzanderFlores / WOKCommands

132 stars 61 forks source link

This project is *not* Abandoned/Deprecated [Discussion: successor libraries & development] #231

Open WillsterJohnson opened 1 year ago

WillsterJohnson commented 1 year ago

Edit 2: Alexzander of Work Off Keys (the owner of this repo) has declared that they are working on an update for this library to DJSv14. See this comment here.

What this means for the alternatives listed below is up to the authors of those alternatives. Their respective repositories may have more info. I'll add any info below if they're definitely being continued or not. Edit: This library is abandoned. See my thoughts on this below. Read further on from there for discussion and information on some developers who are working on successors alternatives to WOKCommands. Successors Alternatives, in order of when they were shared here; DKRCommands by @karelkryda (being continued? Yes) accord-bots by @willster277 (me) (being continued? Yes)


Discord.js has recently released v14, which as major versions do introduces a lot of breaking changes.

More importantly, the new version keeps up to date with the actual API, many things available in v13 will soon not exist as ways to interact with Discord.

The last commit in this repo was over 10 months ago, and as far as I can tell the only subsequent interaction with this project from the author was on 18 Feb in #208.

@AlexzanderFlores, do you intend to upgrade this project to v14 soon? Yes, they do If not, I suggest that the package be marked as deprecated on NPM, and notices put up on your tutorial series reflecting this. It will save a lot of confusion, a lot of hassle, and a whole lot of issues here relating to v13 no longer being functional.

tippfehlr commented 1 year ago

I agree. This project is used by many that are starting to learn discord.js and many also start learning javascript with this. Also, for example typings.d.ts is created by tsc and shouldn't be imported from the library itself.

WillsterJohnson commented 1 year ago

Yes, there are a few issues with this project's structure. The most glaring of which is not adding the dist folder to .gitignore. The provision of typings.d.ts is, as you say, not a good practice and could be handled much more cleanly.

Even if the author were to upgrade this to v14, there would need to be reworkings of major parts of both the library and the project structure. At that point, it's easier to simply build a new library.

Personally, I will be doing exactly that over the coming months. I can't promise anything spectacular (or anything, really), but upon reaching a viable stage it will be pinned to my profile.

It's sad to see software fall into abandonment, especially software which has and will continue to reach a wide audience of amateur, beginner, and inexperienced developers, many of whom will lack the knowledge to resolve the issues they'll encounter. But when the abandon-er was still marketing it as usable several months after abandoning it, that's just disappointing.

It seems the author has been completely inactive on OSS GitHub since last committing to this project, save for a small express.js script back in april. Caught up with work? Or leaving OSS Dev?

Ultimately, this is a very common, but very sad tale of OSS software; creation, community, disregard, death.


This issue is not closed (it ought to be left open and pinned, imo), but I'll say it's resolved, with the answer being a definite yes.

karelkryda commented 1 year ago

Hello, during yesterday I rewrote the library to support Discord.js v14. Hope this helps you

https://github.com/karelkryda/WOKCommands/tree/dev

npm install github:karelkryda/WOKCommands#dev
tippfehlr commented 1 year ago

That's great, even though I abandoned wokcommands a long time ago from my bot.

That's the point of open source software :D

karelkryda commented 1 year ago

@willster277 Have you already started working on a new library?

I'm currently trying to rewrite the library, but it's a pretty big step. Wouldn't you like to collaborate on this in some way?

risetothetop2127 commented 1 year ago

all 28 of my bots used WOK commands... and for it to be abandoned is alot of work for me to remake my bots if you guys successfully remake WOKcommands I may use it for my bots

WillsterJohnson commented 1 year ago

@karelkryda I haven't started work yet, but I know that the library I build won't have a similar API to WOKCommands. It's definitely good, don't get me wrong, but TypeScript is so much more powerful that most devs are aware of, I want to use and abuse that power as much as possible in order to provide the simplest API with the most powerful type inference. I don't want users to ever write as Type or const varName: Type = ..., it's simply not necessary as of TSv3 (quite a while ago!).

@risetothetop2127 as mentioned above, what I write won't be a v14 update to WOKCommands, rather an entirely new library. It will use a lot of the same ideas - ultimately we're writing wrappers around djs - but it will be a lot more work than changing a dependency and making a couple of tweaks.

I've got a lot of research still to do before I'm comfortable getting started, I haven't properly worked with djs since v13 released so I'm a little rusty and mostly unaware of the new API features. I expect to have slash commands & sub commands, buttons, dropdowns, and various other tools implemented by end of year, I would have it sooner than then but I've got university starting up soon which will be taking up a lot of my time. Like I said initially, when it's viable it will be pinned to my profile.

karelkryda commented 1 year ago

@willster277 I understand and from what you write I believe that you can create a very useful and high-quality library.


I'm currently working on a remake of WOKcommands to support Discord.js v14 and meet the requirements for a modern library.

My goal is to offer users a simple migration from WOKcommands so that they can start using the latest version of Discord.js without any problems.

More here

tippfehlr commented 1 year ago

@willster277 This sounds great and it's likely that if I code another discord.js bot I'll use your library (when it's ready). @karelkryda also sounds great. You might want to know that the link you posted is broken, at least for users without your accont, and also it's not good practice to commit .idea. I'd suggest you put it in a global .gitignore.

karelkryda commented 1 year ago

@tippf3hlr Thanks, I fixed the link (typo). And thanks for the heads up about the .idea folder, it is now already in the .gitignore file and will be removed in the next commit.

WillsterJohnson commented 1 year ago

I've decided to call my project "accord-bots" for now, "accord" of course being antonymous to "discord". You can view it here but it's currently nothing much beyond a couple of config files. it's currently able to fully handle slash commands, as well as provide well formatted logs to the console.


I've also updated the original issue comment with links to DKR Commands and to Accord Bots.

WillsterJohnson commented 1 year ago

Update: Accord Bots can now handle slash commands! I haven't fully implemented the type inference, but it should be fine for getting the JS data type and required/optional for simple command options. I've created a rich pool of context to draw from in callbacks (User, Channel, Guild, etc), and require either a string response or an array of embeds which will be automatically sent to a deferred reply. I've set up logging, which includes a system for uniquely identifying errors via an ID which will (optionally) be sent in response to a failed command.

Example of a "ping" command can be found in the readme

tippfehlr commented 1 year ago

I really like this approach.

You updated your age on your profile, was your birthday recently? Just noticed it...

WillsterJohnson commented 1 year ago

@tippf3hlr Could you tell me more about what aspect of Accord Bots you like? I'm very open to change provided I can keep the type inferrence from options permitted -> options received, I'd like to know what you think would be better/what you want to see more of. Feel free to open feature requests if you have any specific ideas also!

Kinda, my birthday was over a month ago... Just kinda forgot to update it.

risetothetop2127 commented 1 year ago

I decided to shutdown my unused discord bots, I'm working on one that will have, Moderation, Verification, Support, Fun, Reaction Roles, Giveaways and a few other commands, Good luck with Accord Bots

Joy6000 commented 1 year ago

No, this is not abandoned. The owner of this repo is very busy. Expect a v14 update within a month or so.

AlexzanderFlores commented 1 year ago

Hey everyone,

This project will be updated by the end of the month.

I've been busy working on a course for Discord bot development and one of the main modules is about creating a command handler from scratch. There are only three more videos until that module is complete, at that time WOKCommands will start to be replaced with this new command handler (still under the same name).

"WOKCommands v2" will have similar syntax but will be more customizable and user friendly. Here are some of the changes you can expect:

Any feedback on these ideas, or even new ideas, are welcome! The goal is to have a dev build released into the WOK Discord community sometime this month. If you're interested in news about that feel free to join here.

risetothetop2127 commented 1 year ago

yay

WillsterJohnson commented 1 year ago

I've updated the issue title & initial comment to reflect the recent news. @AlexzanderFlores , thank you for updating us on this, it's good to hear that WOKCommands lives on!

@karelkryda given this news, are you going to continue working on DKRCommands? No worries if not, I'd just like to add a note next to where I've linked your project in the initial comment so anyone viewing this thread in the near future will know.

karelkryda commented 1 year ago

Hi @willster277,

yes, I would like to continue the development of DKRCommands. The currently released beta version is very close to release. I am currently deciding on the implementation of the cooldown system and its logic. I would be happy if I could publish the library during this week.

My goal was to bring as many improvements and fixes to WOKCommands as possible. I plan to support new releases of Discord.js in the future and add any improvements based on user feedback.

WillsterJohnson commented 1 year ago

@karelkryda that's awesome, I'll take a look at DKR and see how it is sometime soon, it's good to see alternative approaches. I've updated the original comment here also.

Fooweb commented 1 year ago

Looking forward to updated WOK!!!

DJ45X commented 1 year ago

Any updates on when the update will be released? I've been following for about a month now. Last I heard, it was supposed to come out end of September. Just checking in cuz I have a bot that i need to update to D.JS v14 soon and would like to use WOKCommands with it :)

karelkryda commented 1 year ago

Any updates on when the update will be released? I've been following for about a month now. Last I heard, it was supposed to come out end of September. Just checking in cuz I have a bot that i need to update to D.JS v14 soon and would like to use WOKCommands with it :)

Hi, if you want, u can use my new library DKRCommands:

npm install dkrcommands 

or if you really want to use WOKcommands, u can install my modification of WOKcommands for djs v14

npm install github:karelkryda/WOKCommands#dev
DJ45X commented 1 year ago

Any updates on when the update will be released? I've been following for about a month now. Last I heard, it was supposed to come out end of September. Just checking in cuz I have a bot that i need to update to D.JS v14 soon and would like to use WOKCommands with it :)

Hi, if you want, u can use my new library DKRCommands:

npm install dkrcommands 

or if you really want to use WOKcommands, u can install my modification of WOKcommands for djs v14

npm install github:karelkryda/WOKCommands#dev

Do you have any documentation for DKRCommands?

What notable changes did you make to WOKCommands? Anything particularly special? I'm not particularly advanced in d.js so having documentation helps me a lot haha

karelkryda commented 1 year ago

Any updates on when the update will be released? I've been following for about a month now. Last I heard, it was supposed to come out end of September. Just checking in cuz I have a bot that i need to update to D.JS v14 soon and would like to use WOKCommands with it :)

Hi, if you want, u can use my new library DKRCommands:

npm install dkrcommands 

or if you really want to use WOKcommands, u can install my modification of WOKcommands for djs v14

npm install github:karelkryda/WOKCommands#dev

Do you have any documentation for DKRCommands?

What notable changes did you make to WOKCommands? Anything particularly special? I'm not particularly advanced in d.js so having documentation helps me a lot haha

Oh, yeah, ofc I have. Check my repo: https://github.com/karelkryda/DKRCommands

DJ45X commented 1 year ago

@karelkryda Thank you so much! Migration to DRKCommands was smooth and I can now continue development of a critical piece of infrastructure!

Fooweb commented 1 year ago

Any updates on when the update will be released? I've been following for about a month now. Last I heard, it was supposed to come out end of September. Just checking in cuz I have a bot that i need to update to D.JS v14 soon and would like to use WOKCommands with it :)

Hi, if you want, u can use my new library DKRCommands:

npm install dkrcommands 

or if you really want to use WOKcommands, u can install my modification of WOKcommands for djs v14

npm install github:karelkryda/WOKCommands#dev

@karelkryda

I'm checking out your DKRCommands as I also need to move to DJS v14 and may not wait much longer for WOKCommands...

I noticed you don't have the "events" (used to be "features" in V1 of WOK) option in your documentation. Is this not available in your version? Anything else worth noting that is NOT in the documentation?

Nice work on explaining the move from WOK to DKR. (-:

karelkryda commented 1 year ago

@Fooweb Do you mean this events? In this section of migration guide, I listed all properties, that are not available in DKRCommands.

So if we are both talking about the same thing, it is true that this functionality is easy to implement without the need for a special function in DKRCommands. When initializing DKRCommands, the Discord.js Client object is used. This object will allow you to register events directly using:

client.on("xyz", (x, y, z) => {
   // something
});

I came to the conclusion that implementing this functionality directly into DKRCommands is not necessary. Of course, adding it should not be a problem.

\ I'm currently working on a plugin system (that's why I haven't released version 1.0.0 yet). I plan to have plugins for cooldowns, backend, frontend and a separate dashboard that would allow monitoring and managing all bots from one place. The plugin system will thus open the possibility for the community to program any extension for DKRCommands.

I hope you look at my steps positively. I will appreciate any feedback.

Have a nice day.

DJ45X commented 1 year ago

@Fooweb Do you mean this events? In this section of migration guide, I listed all properties, that are not available in DKRCommands.

So if we are both talking about the same thing, it is true that this functionality is easy to implement without the need for a special function in DKRCommands. When initializing DKRCommands, the Discord.js Client object is used. This object will allow you to register events directly using:

client.on("xyz", (x, y, z) => {
   // something
});

I came to the conclusion that implementing this functionality directly into DKRCommands is not necessary. Of course, adding it should not be a problem.

I'm currently working on a plugin system (that's why I haven't released version 1.0.0 yet). I plan to have plugins for cooldowns, backend, frontend and a separate dashboard that would allow monitoring and managing all bots from one place. The plugin system will thus open the possibility for the community to program any extension for DKRCommands.

I hope you look at my steps positively. I will appreciate any feedback.

Have a nice day.

I wonder if they meant how "Features" in WOKCommands is the name WOK used for event listeners. For instance,

client.on('guildMemberAdd', async member => {console.log('${member.user.tag} has joined the server!');

This would go into a separate file in the "Features" directory. Called by featuresDir: path.join(__dirname, 'Features'),

DJ45X commented 1 year ago

Looks like Alex has already started updating the Docs because it no longer reflects the current version of WOKCommands

Fooweb commented 1 year ago

@Fooweb Do you mean this events? In this section of migration guide, I listed all properties, that are not available in DKRCommands.

So if we are both talking about the same thing, it is true that this functionality is easy to implement without the need for a special function in DKRCommands. When initializing DKRCommands, the Discord.js Client object is used. This object will allow you to register events directly using:

client.on("xyz", (x, y, z) => {
   // something
});

I came to the conclusion that implementing this functionality directly into DKRCommands is not necessary. Of course, adding it should not be a problem.

I'm currently working on a plugin system (that's why I haven't released version 1.0.0 yet). I plan to have plugins for cooldowns, backend, frontend and a separate dashboard that would allow monitoring and managing all bots from one place. The plugin system will thus open the possibility for the community to program any extension for DKRCommands.

I hope you look at my steps positively. I will appreciate any feedback.

Have a nice day.

@karelkryda - Yes, we're on the same page! I missed that part, I guess I didn't read far enough. Definitely like the idea and direction you are heading as that will provide flexibility with plugins! Looking forward to v1 and the dashboard!

Fooweb commented 1 year ago

I wonder if they meant how "Features" in WOKCommands is the name WOK used for event listeners. For instance,

client.on('guildMemberAdd', async member => {console.log('${member.user.tag} has joined the server!');

This would go into a separate file in the "Features" directory. Called by featuresDir: path.join(__dirname, 'Features'),

@DJ45X - Yes this is what I meant. Looks like WOK V1 used features and WOK v2 will use events. I do like how this is set up with the different files for each event.

nicocespede commented 1 year ago

@AlexzanderFlores I think it would be awesome if WOKCommands offered the possibility to manage Context menu commands as easy as it does with Slash commands. I'm really glad to know this project is not abandoned btw, and I'll be looking forward to the next update!

tippfehlr commented 1 year ago

This project will be updated by the end of the month.

I am not using any command handler anymore, but what happened to the v14 update? I understand that you might not have time to update this, and that's fine because alternatives exist, but then maybe don't announce an update?

(correct me if I'm wrong)

DJ45X commented 1 year ago

I've completely switched to using Discord JDA in java. No command handler needed. JDA seems to have so much more flexibility that discord.js. For anyone that wants a fresh look on things, check out discord JDA. It was nice having gotten my start in discord.js for discord bots; java is the next endeavor and I highly encourage others to check it out :)

tippfehlr commented 1 year ago

If Java sounds boring, there's also the excellent Rust crate serenity or poise, a framework build around serenity.