From 763bcffe234e45d6b65f02f351f2d2b1b2140b38 Mon Sep 17 00:00:00 2001 From: Eric Mertens Date: Mon, 27 Jan 2025 20:02:31 -0800 Subject: [PATCH] add all the reply argument counts --- client.cpp | 2 +- client.hpp | 2 +- irc_commands.gperf | 256 ++++++++++++++++++++++----------------------- main.cpp | 7 +- 4 files changed, 134 insertions(+), 133 deletions(-) diff --git a/client.cpp b/client.cpp index a5f59bd..713c549 100644 --- a/client.cpp +++ b/client.cpp @@ -192,7 +192,7 @@ auto Client::start(Connection &connection) -> std::shared_ptr return thread; } -auto Client::get_my_nickname() const -> const std::string & +auto Client::get_my_nick() const -> const std::string & { return nickname_; } diff --git a/client.hpp b/client.hpp index 36c2831..3eebcb0 100644 --- a/client.hpp +++ b/client.hpp @@ -86,7 +86,7 @@ public: return connection_.shared_from_this(); } - auto get_my_nickname() const -> const std::string &; + auto get_my_nick() const -> const std::string &; auto get_my_mode() const -> const std::string &; auto get_my_channels() const -> const std::unordered_set &; diff --git a/irc_commands.gperf b/irc_commands.gperf index 0e874c4..f15f66a 100644 --- a/irc_commands.gperf +++ b/irc_commands.gperf @@ -19,39 +19,39 @@ struct RecognizedCommand { 201, IrcCommand::RPL_TRACECONNECTING, 4, 4 202, IrcCommand::RPL_TRACEHANDSHAKE, 4, 4 203, IrcCommand::RPL_TRACEUNKNOWN, 6, 6 -204, IrcCommand::RPL_TRACEOPERATOR -205, IrcCommand::RPL_TRACEUSER -206, IrcCommand::RPL_TRACESERVER -208, IrcCommand::RPL_TRACENEWTYPE -209, IrcCommand::RPL_TRACECLASS +204, IrcCommand::RPL_TRACEOPERATOR, 7, 7 +205, IrcCommand::RPL_TRACEUSER, 7, 7 +206, IrcCommand::RPL_TRACESERVER, 8, 8 +208, IrcCommand::RPL_TRACENEWTYPE, 4, 4 +209, IrcCommand::RPL_TRACECLASS, 4, 4 211, IrcCommand::RPL_STATSLINKINFO -212, IrcCommand::RPL_STATSCOMMANDS -213, IrcCommand::RPL_STATSCLINE +212, IrcCommand::RPL_STATSCOMMANDS, 5, 5 +213, IrcCommand::RPL_STATSCLINE, 8, 8 214, IrcCommand::RPL_STATSNLINE 215, IrcCommand::RPL_STATSILINE, 8, 8 -216, IrcCommand::RPL_STATSKLINE -217, IrcCommand::RPL_STATSQLINE -218, IrcCommand::RPL_STATSYLINE -219, IrcCommand::RPL_ENDOFSTATS -220, IrcCommand::RPL_STATSPLINE +216, IrcCommand::RPL_STATSKLINE, 6, 6 +217, IrcCommand::RPL_STATSQLINE, 5, 5 +218, IrcCommand::RPL_STATSYLINE, 10, 10 +219, IrcCommand::RPL_ENDOFSTATS, 3, 3 +220, IrcCommand::RPL_STATSPLINE, 6, 6 221, IrcCommand::RPL_UMODEIS, 2, 2 224, IrcCommand::RPL_STATSFLINE -225, IrcCommand::RPL_STATSDLINE +225, IrcCommand::RPL_STATSDLINE, 4, 4 234, IrcCommand::RPL_SERVLIST 235, IrcCommand::RPL_SERVLISTEND -241, IrcCommand::RPL_STATSLLINE -242, IrcCommand::RPL_STATSUPTIME -243, IrcCommand::RPL_STATSOLINE -244, IrcCommand::RPL_STATSHLINE +241, IrcCommand::RPL_STATSLLINE, 7, 7 +242, IrcCommand::RPL_STATSUPTIME, 2, 2 +243, IrcCommand::RPL_STATSOLINE, 7, 7 +244, IrcCommand::RPL_STATSHLINE, 7, 7 245, IrcCommand::RPL_STATSSLINE -247, IrcCommand::RPL_STATSXLINE -248, IrcCommand::RPL_STATSULINE -249, IrcCommand::RPL_STATSDEBUG +247, IrcCommand::RPL_STATSXLINE, 5, 5 +248, IrcCommand::RPL_STATSULINE, 5, 5 +249, IrcCommand::RPL_STATSDEBUG, 3, 3 250, IrcCommand::RPL_STATSCONN, 2, 2 251, IrcCommand::RPL_LUSERCLIENT, 2, 2 -252, IrcCommand::RPL_LUSEROP -253, IrcCommand::RPL_LUSERUNKNOWN -254, IrcCommand::RPL_LUSERCHANNELS +252, IrcCommand::RPL_LUSEROP, 3, 3 +253, IrcCommand::RPL_LUSERUNKNOWN, 3, 3 +254, IrcCommand::RPL_LUSERCHANNELS, 3, 3 255, IrcCommand::RPL_LUSERME, 2, 2 256, IrcCommand::RPL_ADMINME, 3, 3 257, IrcCommand::RPL_ADMINLOC1, 2, 2 @@ -59,7 +59,7 @@ struct RecognizedCommand { 259, IrcCommand::RPL_ADMINEMAIL, 2, 2 261, IrcCommand::RPL_TRACELOG 262, IrcCommand::RPL_ENDOFTRACE, 3, 3 -263, IrcCommand::RPL_LOAD2HI +263, IrcCommand::RPL_LOAD2HI, 3, 3 265, IrcCommand::RPL_LOCALUSERS, 4, 4 266, IrcCommand::RPL_GLOBALUSERS, 4, 4 270, IrcCommand::RPL_PRIVS, 3, 3 @@ -67,13 +67,13 @@ struct RecognizedCommand { 281, IrcCommand::RPL_ACCEPTLIST, 1, 15 282, IrcCommand::RPL_ENDOFACCEPT, 2, 2 300, IrcCommand::RPL_NONE -301, IrcCommand::RPL_AWAY -302, IrcCommand::RPL_USERHOST +301, IrcCommand::RPL_AWAY, 3, 3 +302, IrcCommand::RPL_USERHOST, 2, 2 303, IrcCommand::RPL_ISON, 2, 2 304, IrcCommand::RPL_TEXT -305, IrcCommand::RPL_UNAWAY -306, IrcCommand::RPL_NOWAWAY -310, IrcCommand::RPL_WHOISHELPOP +305, IrcCommand::RPL_UNAWAY, 2, 2 +306, IrcCommand::RPL_NOWAWAY, 2, 2 +310, IrcCommand::RPL_WHOISHELPOP, 3, 3 311, IrcCommand::RPL_WHOISUSER, 6, 6 312, IrcCommand::RPL_WHOISSERVER, 4, 4 313, IrcCommand::RPL_WHOISOPERATOR, 3, 3 @@ -88,30 +88,30 @@ struct RecognizedCommand { 322, IrcCommand::RPL_LIST, 4, 4 323, IrcCommand::RPL_LISTEND, 2, 2 324, IrcCommand::RPL_CHANNELMODEIS, 3, 3 -325, IrcCommand::RPL_CHANNELMLOCK +325, IrcCommand::RPL_CHANNELMLOCK, 4, 4 328, IrcCommand::RPL_CHANNELURL 329, IrcCommand::RPL_CREATIONTIME, 3, 3 330, IrcCommand::RPL_WHOISLOGGEDIN, 4, 4 331, IrcCommand::RPL_NOTOPIC, 3, 3 332, IrcCommand::RPL_TOPIC, 3, 3 333, IrcCommand::RPL_TOPICWHOTIME, 4, 4 -338, IrcCommand::RPL_WHOISACTUALLY -341, IrcCommand::RPL_INVITING +338, IrcCommand::RPL_WHOISACTUALLY, 4, 4 +341, IrcCommand::RPL_INVITING, 3, 3 342, IrcCommand::RPL_SUMMONING -346, IrcCommand::RPL_INVITELIST -347, IrcCommand::RPL_ENDOFINVITELIST -348, IrcCommand::RPL_EXCEPTLIST +346, IrcCommand::RPL_INVITELIST, 5, 5 +347, IrcCommand::RPL_ENDOFINVITELIST, 3, 3 +348, IrcCommand::RPL_EXCEPTLIST, 5, 5 349, IrcCommand::RPL_ENDOFEXCEPTLIST, 3, 3 351, IrcCommand::RPL_VERSION, 4, 4 -352, IrcCommand::RPL_WHOREPLY +352, IrcCommand::RPL_WHOREPLY, 8, 8 354, IrcCommand::RPL_WHOSPCRPL -315, IrcCommand::RPL_ENDOFWHO +315, IrcCommand::RPL_ENDOFWHO, 3, 3 353, IrcCommand::RPL_NAMREPLY, 4, 4 -360, IrcCommand::RPL_WHOWASREAL +360, IrcCommand::RPL_WHOWASREAL, 3, 3 366, IrcCommand::RPL_ENDOFNAMES, 3, 3 361, IrcCommand::RPL_KILLDONE -362, IrcCommand::RPL_CLOSING -363, IrcCommand::RPL_CLOSEEND +362, IrcCommand::RPL_CLOSING, 3, 3 +363, IrcCommand::RPL_CLOSEEND, 3, 3 364, IrcCommand::RPL_LINKS, 4, 4 365, IrcCommand::RPL_ENDOFLINKS, 3, 3 367, IrcCommand::RPL_BANLIST, 5, 5 @@ -122,12 +122,12 @@ struct RecognizedCommand { 374, IrcCommand::RPL_ENDOFINFO, 2, 2 375, IrcCommand::RPL_MOTDSTART, 2, 2 376, IrcCommand::RPL_ENDOFMOTD, 2, 2 -378, IrcCommand::RPL_WHOISHOST +378, IrcCommand::RPL_WHOISHOST, 3, 3 381, IrcCommand::RPL_YOUREOPER, 2, 2 -382, IrcCommand::RPL_REHASHING +382, IrcCommand::RPL_REHASHING, 3, 3 384, IrcCommand::RPL_MYPORTIS 385, IrcCommand::RPL_NOTOPERANYMORE -386, IrcCommand::RPL_RSACHALLENGE +386, IrcCommand::RPL_RSACHALLENGE, 2, 2 391, IrcCommand::RPL_TIME, 3, 3 392, IrcCommand::RPL_USERSSTART 393, IrcCommand::RPL_USERS @@ -136,118 +136,118 @@ struct RecognizedCommand { 396, IrcCommand::RPL_HOSTHIDDEN 401, IrcCommand::ERR_NOSUCHNICK, 3, 3 402, IrcCommand::ERR_NOSUCHSERVER, 3, 3 -403, IrcCommand::ERR_NOSUCHCHANNEL -404, IrcCommand::ERR_CANNOTSENDTOCHAN -405, IrcCommand::ERR_TOOMANYCHANNELS -406, IrcCommand::ERR_WASNOSUCHNICK -407, IrcCommand::ERR_TOOMANYTARGETS -409, IrcCommand::ERR_NOORIGIN -410, IrcCommand::ERR_INVALIDCAPCMD -411, IrcCommand::ERR_NORECIPIENT -412, IrcCommand::ERR_NOTEXTTOSEND -413, IrcCommand::ERR_NOTOPLEVEL -414, IrcCommand::ERR_WILDTOPLEVEL -415, IrcCommand::ERR_MSGNEEDREGGEDNICK -416, IrcCommand::ERR_TOOMANYMATCHES -421, IrcCommand::ERR_UNKNOWNCOMMAND +403, IrcCommand::ERR_NOSUCHCHANNEL, 3, 3 +404, IrcCommand::ERR_CANNOTSENDTOCHAN, 3, 3 +405, IrcCommand::ERR_TOOMANYCHANNELS, 3, 3 +406, IrcCommand::ERR_WASNOSUCHNICK, 3, 3 +407, IrcCommand::ERR_TOOMANYTARGETS, 3, 3 +409, IrcCommand::ERR_NOORIGIN, 2, 2 +410, IrcCommand::ERR_INVALIDCAPCMD, 3, 3 +411, IrcCommand::ERR_NORECIPIENT, 2, 2 +412, IrcCommand::ERR_NOTEXTTOSEND, 2, 2 +413, IrcCommand::ERR_NOTOPLEVEL, 3, 3 +414, IrcCommand::ERR_WILDTOPLEVEL, 3, 3 +415, IrcCommand::ERR_MSGNEEDREGGEDNICK, 3, 3 +416, IrcCommand::ERR_TOOMANYMATCHES, 3, 3 +421, IrcCommand::ERR_UNKNOWNCOMMAND, 3, 3 422, IrcCommand::ERR_NOMOTD, 2, 2 423, IrcCommand::ERR_NOADMININFO 424, IrcCommand::ERR_FILEERROR -431, IrcCommand::ERR_NONICKNAMEGIVEN -432, IrcCommand::ERR_ERRONEUSNICKNAME +431, IrcCommand::ERR_NONICKNAMEGIVEN, 2, 2 +432, IrcCommand::ERR_ERRONEUSNICKNAME, 3, 3 433, IrcCommand::ERR_NICKNAMEINUSE, 3, 3 -435, IrcCommand::ERR_BANNICKCHANGE -436, IrcCommand::ERR_NICKCOLLISION -437, IrcCommand::ERR_UNAVAILRESOURCE -438, IrcCommand::ERR_NICKTOOFAST -440, IrcCommand::ERR_SERVICESDOWN -441, IrcCommand::ERR_USERNOTINCHANNEL +435, IrcCommand::ERR_BANNICKCHANGE, 3, 3 +436, IrcCommand::ERR_NICKCOLLISION, 3, 3 +437, IrcCommand::ERR_UNAVAILRESOURCE, 3, 3 +438, IrcCommand::ERR_NICKTOOFAST, 4, 4 +440, IrcCommand::ERR_SERVICESDOWN, 3, 3 +441, IrcCommand::ERR_USERNOTINCHANNEL, 4, 4 442, IrcCommand::ERR_NOTONCHANNEL, 3, 3 -443, IrcCommand::ERR_USERONCHANNEL +443, IrcCommand::ERR_USERONCHANNEL, 4, 4 444, IrcCommand::ERR_NOLOGIN 445, IrcCommand::ERR_SUMMONDISABLED 446, IrcCommand::ERR_USERSDISABLED -451, IrcCommand::ERR_NOTREGISTERED -456, IrcCommand::ERR_ACCEPTFULL -457, IrcCommand::ERR_ACCEPTEXIST -458, IrcCommand::ERR_ACCEPTNOT -461, IrcCommand::ERR_NEEDMOREPARAMS -462, IrcCommand::ERR_ALREADYREGISTRED +451, IrcCommand::ERR_NOTREGISTERED, 2, 2 +456, IrcCommand::ERR_ACCEPTFULL, 2, 2 +457, IrcCommand::ERR_ACCEPTEXIST, 3, 3 +458, IrcCommand::ERR_ACCEPTNOT, 3, 3 +461, IrcCommand::ERR_NEEDMOREPARAMS, 3, 3 +462, IrcCommand::ERR_ALREADYREGISTRED, 2, 2 463, IrcCommand::ERR_NOPERMFORHOST -464, IrcCommand::ERR_PASSWDMISMATCH -465, IrcCommand::ERR_YOUREBANNEDCREEP +464, IrcCommand::ERR_PASSWDMISMATCH, 2, 2 +465, IrcCommand::ERR_YOUREBANNEDCREEP, 2, 2 466, IrcCommand::ERR_YOUWILLBEBANNED 467, IrcCommand::ERR_KEYSET -470, IrcCommand::ERR_LINKCHANNEL -471, IrcCommand::ERR_CHANNELISFULL -472, IrcCommand::ERR_UNKNOWNMODE -473, IrcCommand::ERR_INVITEONLYCHAN -474, IrcCommand::ERR_BANNEDFROMCHAN -475, IrcCommand::ERR_BADCHANNELKEY +470, IrcCommand::ERR_LINKCHANNEL, 4, 4 +471, IrcCommand::ERR_CHANNELISFULL, 3, 3 +472, IrcCommand::ERR_UNKNOWNMODE, 3, 3 +473, IrcCommand::ERR_INVITEONLYCHAN, 3, 3 +474, IrcCommand::ERR_BANNEDFROMCHAN, 3, 3 +475, IrcCommand::ERR_BADCHANNELKEY, 3, 3 476, IrcCommand::ERR_BADCHANMASK -477, IrcCommand::ERR_NEEDREGGEDNICK -478, IrcCommand::ERR_BANLISTFULL -479, IrcCommand::ERR_BADCHANNAME -480, IrcCommand::ERR_THROTTLE -481, IrcCommand::ERR_NOPRIVILEGES -482, IrcCommand::ERR_CHANOPRIVSNEEDED -483, IrcCommand::ERR_CANTKILLSERVER -484, IrcCommand::ERR_ISCHANSERVICE +477, IrcCommand::ERR_NEEDREGGEDNICK, 3, 3 +478, IrcCommand::ERR_BANLISTFULL, 4, 4 +479, IrcCommand::ERR_BADCHANNAME, 3, 3 +480, IrcCommand::ERR_THROTTLE, 3, 3 +481, IrcCommand::ERR_NOPRIVILEGES, 2, 2 +482, IrcCommand::ERR_CHANOPRIVSNEEDED, 3, 3 +483, IrcCommand::ERR_CANTKILLSERVER, 2, 2 +484, IrcCommand::ERR_ISCHANSERVICE, 4, 4 485, IrcCommand::ERR_BANNEDNICK -486, IrcCommand::ERR_NONONREG -489, IrcCommand::ERR_VOICENEEDED -491, IrcCommand::ERR_NOOPERHOST -492, IrcCommand::ERR_CANNOTSENDTOUSER -494, IrcCommand::ERR_OWNMODE -501, IrcCommand::ERR_UMODEUNKNOWNFLAG +486, IrcCommand::ERR_NONONREG, 3, 3 +489, IrcCommand::ERR_VOICENEEDED, 3, 3 +491, IrcCommand::ERR_NOOPERHOST, 2, 2 +492, IrcCommand::ERR_CANNOTSENDTOUSER, 2, 2 +494, IrcCommand::ERR_OWNMODE, 3, 3 +501, IrcCommand::ERR_UMODEUNKNOWNFLAG, 2, 2 502, IrcCommand::ERR_USERSDONTMATCH, 2, 2 503, IrcCommand::ERR_GHOSTEDCLIENT -504, IrcCommand::ERR_USERNOTONSERV -513, IrcCommand::ERR_WRONGPONG -517, IrcCommand::ERR_DISABLED -524, IrcCommand::ERR_HELPNOTFOUND -670, IrcCommand::RPL_STARTTLS +504, IrcCommand::ERR_USERNOTONSERV, 3, 3 +513, IrcCommand::ERR_WRONGPONG, 2, 2 +517, IrcCommand::ERR_DISABLED, 3, 3 +524, IrcCommand::ERR_HELPNOTFOUND, 3, 3 +670, IrcCommand::RPL_STARTTLS, 2, 2 671, IrcCommand::RPL_WHOISSECURE, 3, 3 -691, IrcCommand::ERR_STARTTLS -702, IrcCommand::RPL_MODLIST -703, IrcCommand::RPL_ENDOFMODLIST -704, IrcCommand::RPL_HELPSTART -705, IrcCommand::RPL_HELPTXT -706, IrcCommand::RPL_ENDOFHELP -707, IrcCommand::ERR_TARGCHANGE +691, IrcCommand::ERR_STARTTLS, 2, 2 +702, IrcCommand::RPL_MODLIST, 5, 5 +703, IrcCommand::RPL_ENDOFMODLIST, 2, 2 +704, IrcCommand::RPL_HELPSTART, 3, 3 +705, IrcCommand::RPL_HELPTXT, 3, 3 +706, IrcCommand::RPL_ENDOFHELP, 3, 3 +707, IrcCommand::ERR_TARGCHANGE, 3, 3 708, IrcCommand::RPL_ETRACEFULL, 10, 10 -709, IrcCommand::RPL_ETRACE -710, IrcCommand::RPL_KNOCK -711, IrcCommand::RPL_KNOCKDLVR -712, IrcCommand::ERR_TOOMANYKNOCK -713, IrcCommand::ERR_CHANOPEN -714, IrcCommand::ERR_KNOCKONCHAN -715, IrcCommand::ERR_KNOCKDISABLED -716, IrcCommand::ERR_TARGUMODEG +709, IrcCommand::RPL_ETRACE, 8, 8 +710, IrcCommand::RPL_KNOCK, 4, 4 +711, IrcCommand::RPL_KNOCKDLVR, 3, 3 +712, IrcCommand::ERR_TOOMANYKNOCK, 3, 3 +713, IrcCommand::ERR_CHANOPEN, 3, 3 +714, IrcCommand::ERR_KNOCKONCHAN, 3, 3 +715, IrcCommand::ERR_KNOCKDISABLED, 2, 2 +716, IrcCommand::ERR_TARGUMODEG, 3, 3 717, IrcCommand::RPL_TARGNOTIFY -718, IrcCommand::RPL_UMODEGMSG -720, IrcCommand::RPL_OMOTDSTART -721, IrcCommand::RPL_OMOTD -722, IrcCommand::RPL_ENDOFOMOTD -723, IrcCommand::ERR_NOPRIVS +718, IrcCommand::RPL_UMODEGMSG, 4, 4 +720, IrcCommand::RPL_OMOTDSTART, 2, 2 +721, IrcCommand::RPL_OMOTD, 2, 2 +722, IrcCommand::RPL_ENDOFOMOTD, 2, 2 +723, IrcCommand::ERR_NOPRIVS, 3, 3 724, IrcCommand::RPL_TESTMASK -725, IrcCommand::RPL_TESTLINE +725, IrcCommand::RPL_TESTLINE, 5, 5 726, IrcCommand::RPL_NOTESTLINE 727, IrcCommand::RPL_TESTMASKGECO, 6, 6 728, IrcCommand::RPL_QUIETLIST, 6, 6 729, IrcCommand::RPL_ENDOFQUIETLIS, 4, 4 -730, IrcCommand::RPL_MONONLINE -731, IrcCommand::RPL_MONOFFLINE -732, IrcCommand::RPL_MONLIST +730, IrcCommand::RPL_MONONLINE, 2, 2 +731, IrcCommand::RPL_MONOFFLINE, 2, 2 +732, IrcCommand::RPL_MONLIST, 2, 2 733, IrcCommand::RPL_ENDOFMONLIS, 2, 2 -734, IrcCommand::ERR_MONLISTFULL +734, IrcCommand::ERR_MONLISTFULL, 4, 4 740, IrcCommand::RPL_RSACHALLENGE2, 2, 2 741, IrcCommand::RPL_ENDOFRSACHALLENGE2, 2, 2 -742, IrcCommand::ERR_MLOCKRESTRICTE -743, IrcCommand::ERR_INVALIDBAN +742, IrcCommand::ERR_MLOCKRESTRICTE, 5, 5 +743, IrcCommand::ERR_INVALIDBAN, 5, 5 744, IrcCommand::ERR_TOPICLOCK -750, IrcCommand::RPL_SCANMATCHED -751, IrcCommand::RPL_SCANUMODES +750, IrcCommand::RPL_SCANMATCHED, 3, 3 +751, IrcCommand::RPL_SCANUMODES, 8, 8 900, IrcCommand::RPL_LOGGEDIN, 4, 4 901, IrcCommand::RPL_LOGGEDOUT, 3, 3 902, IrcCommand::ERR_NICKLOCKED, 2, 2 diff --git a/main.cpp b/main.cpp index b3db702..682f9a5 100644 --- a/main.cpp +++ b/main.cpp @@ -87,6 +87,7 @@ static auto start(boost::asio::io_context &io, const Settings &settings) -> void const auto bot = Bot::start(client); +/* connection->sig_snote.connect([](auto &match) { std::cout << "SNOTE " << static_cast(match.get_tag()) << std::endl; for (auto c : match.get_results()) @@ -94,10 +95,10 @@ static auto start(boost::asio::io_context &io, const Settings &settings) -> void std::cout << " " << std::string_view{c.first, c.second} << std::endl; } }); - - client->sig_registered.connect([connection]() { +*/ + client->sig_registered.connect([connection, client]() { connection->send_join("##glguy"sv); - connection->send_whois("bot"sv); + connection->send_whois(client->get_my_nick()); }); connection->sig_disconnect.connect(