lrstanley / girc

:bomb: girc is a flexible IRC library for Go :ok_hand:
https://pkg.go.dev/github.com/lrstanley/girc
MIT License
137 stars 13 forks source link

Implement RPL_CREATIONTIME #49

Closed yunginnanet closed 2 years ago

yunginnanet commented 2 years ago

First off, love girc. I have a ridiculous fork of it with a lot of wacky changes and have gotten pretty familiar with this masterpiece of yours.

Anyway, you're missing definition and handling of code 329 AKA RPL_CREATIONTIME. (details below)

Details ### RPL_CREATIONTIME (329) ` ` > Sent to a client to inform them of the creation time of a channel. is the name of the channel. is a unix timestamp representing when the channel was created on the network.

I almost made a PR to add it for you into the definitions. However, after a bit of searching I'm not so sure it's in the RFC(s). Because of this I wasn't sure where exactly you'd want to place it, if at all.

It is however, very prevalent and well-enough documented. It likely should be in constants, and if you're feeling cheeky enough, maybe even handled and stored in the channel state. (this is what I plan on doing with girc-atomic).

lrstanley commented 2 years ago

Sorry for the long delay on this, I believe I saw the issue awhile back but totally forgot about it. Should be added in https://github.com/lrstanley/girc/commit/b5af8a2128928b91b9cec3189d3016639800a6a7.

As far as non-RFC functionality when it comes to response codes, it's totally fine that those be added (in the misc section), since we don't map integer -> name, and only name -> integer, it allows overlapping easily, as I know a lot of IRC servers/clients don't follow the RFC.

I actually had planned to auto-generate all known response codes as constants via https://github.com/lrstanley/girc/issues/32 (utilizes ircdocs.horse and alien.net.au), however because it doesn't provide a huge amount of benefit, I've put that on hold for the time being.

yunginnanet commented 2 years ago

Thanks for the helpful response!