ircv3 / ircv3-ideas

46 stars 3 forks source link

Allow servers to advertise commands for clients. #109

Open ValwareIRC opened 10 months ago

ValwareIRC commented 10 months ago

This is be useful for suggestion or auto-completion and gives each user a broader idea about what commands are available to them on the server.

Currently my implementation only tells you that a command exists, and does not tell you about any of the expected parameters of each command.

Here is a working UnrealIRCd module which provides this capability. The README will explain in further detail how it works.

Here is a working mIRC script which uses the command information to provide suggestion and autocompletion based on what commands we know we can use.

delthas commented 10 months ago

I think that for it to be intuitive to users, each command should have a description, parameters and the meaning of each parameter. But it sounds difficult to design a simple spec which incorporates these items, so I'm not sure if this feature is possible at all.

progval commented 10 months ago

in other words, making HELP/HELPOP machine-parseable

ValwareIRC commented 10 months ago

I agree with what you're saying, it would be optimal if these could be provided too, however most of the meaningful commands and their parameters are already known to clients and so clients can base them off spec.

A majority of common parameter types (channels and nicks) are intuitively suggested/autocompleted in many clients, so the gap is closed a little.

So this is still meaningful for clients to be able to show available commands as it's convenient discovery tool for:

I myself have found it to be useful and I've discovered new commands I didn't know about before (not because they're undocumented, but because the information isn't convenient to discover).

Some clients suggest in-built client commands and a few that they're sure are exist on the server, i.e. /me or /join without suggesting parameters. It would be a good place to start and eventually incorporate things like expected parameter count and type.