Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
WillsterJohnson opened this issue Aug 30, 2022 · 37 comments

Comments

@WillsterJohnson
Copy link

WillsterJohnson commented Aug 30, 2022

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
Copy link
Contributor

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
Copy link
Author

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
Copy link
Contributor

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
Copy link
Contributor

tippfehlr commented Sep 2, 2022

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
Copy link
Contributor

@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
Copy link

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
Copy link
Author

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

@WillsterJohnson WillsterJohnson changed the title Abandoned/Deprecated? This project is Abandoned/Deprecated [Discussion: successor libraries & development] Sep 4, 2022
@karelkryda
Copy link
Contributor

karelkryda commented Sep 4, 2022

@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
Copy link
Contributor

@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
Copy link
Contributor

@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
Copy link
Author

WillsterJohnson commented Sep 4, 2022

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
Copy link
Author

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
Copy link
Contributor

I really like this approach.

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

@WillsterJohnson
Copy link
Author

@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
Copy link

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

Joy6000 commented Sep 10, 2022

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

@AlexzanderFlores
Copy link
Owner

AlexzanderFlores commented Sep 10, 2022

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:

  • More repo managers to deal with pull requests and issues so it won't just be me (currently trying to do a thousand things)
  • Obvious stuff: v14 support, TS support, updated documentation
  • Easy autocomplete support (example)
  • Customizable runtime and syntax validations
    • There are a number of built in validations and users can add their own
    • "Syntax validations" are ran when the bot starts up and will throw an error if the syntax of a command is incorrect.
    • Syntax validation example.
    • "Runtime validations" are ran when a user runs a command. This will return true or false depending on if the command should be ran.
    • Runtime validation example.
  • More user friendly slash command support
    • You can simply add delete: true to your command and it will delete the slash command. No more running /slash and getting an ID from a giant embed to delete the command.
    • In the future there will be a way to auto delete slash commands when the code file is deleted or renamed.
  • More user friendly built in commands
    • You can disable these just like before, but this time they are more user friendly by using slash commands and built in autocomplete. This way you don't need to provide a role ID, instead you just tag a role in the slash command.
  • Customizable cooldown system that can be applied to any action such as button clicks and drop down menus, not just commands
    • Cooldown types:
      • perUser: Adds a cooldown to a specific user who performed an action. This applies to all guilds
      • perUserPerGuild: Adds a guild-based cooldown to a specific user who performed an action in a guild
      • perGuild: Adds a cooldown to all users in a single guild for a specific action
      • global: Over all guilds and users for a specific action
    • These will auto store to your database similar to before.
  • Customizable event handling system
    • Similar to your commands you can now organize your event files in files and folders.
    • You will not need to manually listen for each event. Instead simply create a folder with your event name and all files inside will be ran when the event is ran.
    • Example (Be sure to read the file path comment)
    • There are built in "dynamic validations" that will only allow events to run if certain conditions are met. Users can create their own dynamic validations too.
    • Example use case: You want to listen for the interactionCreate event for button clicks. You can create a folder called "isButton" or "buttonOnly" (it can be called anything) and provide a dynamic validation function called "isButton" or "buttonOnly" (whatever you called the folder). This function will return interaction.isButton(). The event files inside of that folder will only be ran when the function returns true. You can think of this as "event middleware".
    • Example main file and event file
    • The example of button checking is simple and only saves a line or two in the real world. However this system can be expanded to whatever extent you want for your use cases.

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

yay

@WillsterJohnson WillsterJohnson changed the title This project is Abandoned/Deprecated [Discussion: successor libraries & development] This project is *not* Abandoned/Deprecated [Discussion: successor libraries & development] Sep 13, 2022
@WillsterJohnson
Copy link
Author

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
Copy link
Contributor

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
Copy link
Author

@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
Copy link

Fooweb commented Sep 21, 2022

Looking forward to updated WOK!!!

@DJ45X
Copy link

DJ45X commented Oct 11, 2022

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
Copy link
Contributor

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

DJ45X commented Oct 11, 2022

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
Copy link
Contributor

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

DJ45X commented Oct 12, 2022

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

@Fooweb
Copy link

Fooweb commented Oct 12, 2022

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
Copy link
Contributor

@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
Copy link

DJ45X commented Oct 12, 2022

@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
Copy link

DJ45X commented Oct 12, 2022

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

@Fooweb
Copy link

Fooweb commented Oct 13, 2022

@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
Copy link

Fooweb commented Oct 13, 2022

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

@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
Copy link
Contributor

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

DJ45X commented May 26, 2023

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
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants