random/irc/bots/drugwars/irc/src/irc_command.rs

243 lines
5.9 KiB
Rust

macro_rules! make_irc_command_enum {
($variant:ident) => {
$variant
};
($($variant:ident: $value:expr),+) => {
#[allow(non_camel_case_types)]
pub enum IrcCommand {
UNKNOWN,
$($variant),+
}
impl From<&str> for IrcCommand {
fn from(command_str: &str) -> Self {
match command_str {
$($value => Self::$variant,)+
_ => Self::UNKNOWN,
}
}
}
};
}
make_irc_command_enum!(
ADMIN: "ADMIN",
AWAY: "AWAY",
CNOTICE: "CNOTICE",
CPRIVMSG: "CPRIVMSG",
CONNECT: "CONNECT",
DIE: "DIE",
ENCAP: "ENCAP",
ERROR: "ERROR",
HELP: "HELP",
INFO: "INFO",
INVITE: "INVITE",
ISON: "ISON",
JOIN: "JOIN",
KICK: "KICK",
KILL: "KILL",
KNOCK: "KNOCK",
LINKS: "LINKS",
LIST: "LIST",
LUSERS: "LUSERS",
MODE: "MODE",
MOTD: "MOTD",
NAMES: "NAMES",
NICK: "NICK",
NOTICE: "NOTICE",
OPER: "OPER",
PART: "PART",
PASS: "PASS",
PING: "PING",
PONG: "PONG",
PRIVMSG: "PRIVMSG",
QUIT: "QUIT",
REHASH: "REHASH",
RULES: "RULES",
SERVER: "SERVER",
SERVICE: "SERVICE",
SERVLIST: "SERVLIST",
SQUERY: "SQUERY",
SQUIT: "SQUIT",
SETNAME: "SETNAME",
SILENCE: "SILENCE",
STATS: "STATS",
SUMMON: "SUMMON",
TIME: "TIME",
TOPIC: "TOPIC",
TRACE: "TRACE",
USER: "USER",
USERHOST: "USERHOST",
USERIP: "USERIP",
USERS: "USERS",
VERSION: "VERSION",
WALLOPS: "WALLOPS",
WATCH: "WATCH",
WHO: "WHO",
WHOIS: "WHOIS",
WHOWAS: "WHOWAS",
RPL_WELCOME: "001",
RPL_YOURHOST: "002",
RPL_CREATED: "003",
RPL_MYINFO: "004",
RPL_BOUNCE: "005",
RPL_TRACELINK: "200",
RPL_TRACECONNECTING: "201",
RPL_TRACEHANDSHAKE: "202",
RPL_TRACEUNKNOWN: "203",
RPL_TRACEOPERATOR: "204",
RPL_TRACEUSER: "205",
RPL_TRACESERVER: "206",
RPL_TRACESERVICE: "207",
RPL_TRACENEWTYPE: "208",
RPL_TRACECLASS: "209",
RPL_TRACERECONNECT: "210",
RPL_STATSLINKINFO: "211",
RPL_STATSCOMMANDS: "212",
RPL_STATSCLINE: "213",
RPL_STATSNLINE: "214",
RPL_STATSILINE: "215",
RPL_STATSKLINE: "216",
RPL_STATSQLINE: "217",
RPL_STATSYLINE: "218",
RPL_ENDOFSTATS: "219",
RPL_UMODEIS: "221",
RPL_SERVICEINFO: "231",
RPL_ENDOFSERVICES: "232",
RPL_SERVICE: "233",
RPL_SERVLIST: "234",
RPL_SERVLISTEND: "235",
RPL_STATSVLINE: "240",
RPL_STATSLLINE: "241",
RPL_STATSUPTIME: "242",
RPL_STATSOLINE: "243",
RPL_STATSHLINE: "244",
RPL_STATSPING: "246",
RPL_STATSBLINE: "247",
RPL_STATSDLINE: "250",
RPL_LUSERCLIENT: "251",
RPL_LUSEROP: "252",
RPL_LUSERUNKNOWN: "253",
RPL_LUSERCHANNELS: "254",
RPL_LUSERME: "255",
RPL_ADMINME: "256",
RPL_ADMINLOC1: "257",
RPL_ADMINLOC2: "258",
RPL_ADMINEMAIL: "259",
RPL_TRACELOG: "261",
RPL_TRACEEND: "262",
RPL_TRYAGAIN: "263",
RPL_NONE: "300",
RPL_AWAY: "301",
RPL_USERHOST: "302",
RPL_ISON: "303",
RPL_UNAWAY: "305",
RPL_NOWAWAY: "306",
RPL_WHOISUSER: "311",
RPL_WHOISSERVER: "312",
RPL_WHOISOPERATOR: "313",
RPL_WHOWASUSER: "314",
RPL_ENDOFWHO: "315",
RPL_WHOISCHANOP: "316",
RPL_WHOISIDLE: "317",
RPL_ENDOFWHOIS: "318",
RPL_WHOISCHANNELS: "319",
RPL_LISTSTART: "321",
RPL_LIST: "322",
RPL_LISTEND: "323",
RPL_CHANNELMODEIS: "324",
RPL_UNIQOPIS: "325",
RPL_NOTOPIC: "331",
RPL_TOPIC: "332",
RPL_INVITING: "341",
RPL_SUMMONING: "342",
RPL_INVITELIST: "346",
RPL_ENDOFINVITELIST: "347",
RPL_EXCEPTLIST: "348",
RPL_ENDOFEXCEPTLIST: "349",
RPL_VERSION: "351",
RPL_WHOREPLY: "352",
RPL_NAMREPLY: "353",
RPL_KILLDONE: "361",
RPL_CLOSING: "362",
RPL_CLOSEEND: "363",
RPL_LINKS: "364",
RPL_ENDOFLINKS: "365",
RPL_ENDOFNAMES: "366",
RPL_BANLIST: "367",
RPL_ENDOFBANLIST: "368",
RPL_ENDOFWHOWAS: "369",
RPL_INFO: "371",
RPL_MOTD: "372",
RPL_INFOSTART: "373",
RPL_ENDOFINFO: "374",
RPL_MOTDSTART: "375",
RPL_ENDOFMOTD: "376",
RPL_YOUREOPER: "381",
RPL_REHASHING: "382",
RPL_YOURESERVICE: "383",
RPL_MYPORTIS: "384",
RPL_TIME: "391",
RPL_USERSSTART: "392",
RPL_USERS: "393",
RPL_ENDOFUSERS: "394",
RPL_NOUSERS: "395",
ERR_NOSUCHNICK: "401",
ERR_NOSUCHSERVER: "402",
ERR_NOSUCHCHANNEL: "403",
ERR_CANNOTSENDTOCHAN: "404",
ERR_TOOMANYCHANNELS: "405",
ERR_WASNOSUCHNICK: "406",
ERR_TOOMANYTARGETS: "407",
ERR_NOSUCHSERVICE: "408",
ERR_NOORIGIN: "409",
ERR_NORECIPIENT: "411",
ERR_NOTEXTTOSEND: "412",
ERR_NOTOPLEVEL: "413",
ERR_WILDTOPLEVEL: "414",
ERR_BADMASK: "415",
ERR_UNKNOWNCOMMAND: "421",
ERR_NOMOTD: "422",
ERR_NOADMININFO: "423",
ERR_FILEERROR: "424",
ERR_NONICKNAMEGIVEN: "431",
ERR_ERRONEUSNICKNAME: "432",
ERR_NICKNAMEINUSE: "433",
ERR_NICKCOLLISION: "436",
ERR_UNAVAILRESOURCE: "437",
ERR_USERNOTINCHANNEL: "441",
ERR_NOTONCHANNEL: "442",
ERR_USERONCHANNEL: "443",
ERR_NOLOGIN: "444",
ERR_SUMMONDISABLED: "445",
ERR_USERSDISABLED: "446",
ERR_NOTREGISTERED: "451",
ERR_NEEDMOREPARAMS: "461",
ERR_ALREADYREGISTERED: "462",
ERR_NOPERMFORHOST: "463",
ERR_PASSWDMISMATCH: "464",
ERR_YOUREBANNEDCREEP: "465",
ERR_YOUWILLBEBANNED: "466",
ERR_KEYSET: "467",
ERR_CHANNELISFULL: "471",
ERR_UNKNOWNMODE: "472",
ERR_INVITEONLYCHAN: "473",
ERR_BANNEDFROMCHAN: "474",
ERR_BADCHANNELKEY: "475",
ERR_BADCHANMASK: "476",
ERR_NOCHANMODES: "477",
ERR_BANLISTFULL: "478",
ERR_NOPRIVILEGES: "481",
ERR_CHANOPRIVSNEEDED: "482",
ERR_CANTKILLSERVER: "483",
ERR_RESTRICTED: "484",
ERR_UNIQOPRIVSNEEDED: "485",
ERR_NOOPERHOST: "491",
ERR_NOSERVICEHOST: "492",
ERR_UMODEUNKNOWNFLAG: "501",
ERR_USERSDONTMATCH: "502"
);