IRC 用户在 IRC 网络上的活动无非是两类:执行命令和聊天。而在 IRC 上, 聊天的实质也是通过命令将消息传递给其他的用户(users)或频道(channels)。因此,IRC 的各种命令是 IRC 用户最基本的操作手段,IRC 的所有功能均通过命令来实现。好的客户端软件可以通过各种菜单和对话框的形式对命令进行封装,让普通用户在点击菜单或填充对话框的过程中就完成命令的发送和执行,但却感觉不到自己实际上在执行 IRC 的命令,免去用户记忆和考虑命令的各种格式以及参数的烦恼。但是,对于 IRC 的技术型用户或者发烧友而言,唯有命令才是理解IRC 的根本途径,进而才能够在对命令的灵活多变的组合与运用中,创造出无穷的乐趣。
命令种类
服务器端命令
服务器端命令,是指从IRC的
客户端发出,由服务器端接收并执行的命令。服务器端命令是IRC命令的基础。其发起及运行方式是
客户端--服务器端 ( Client -- Server Command )
1.1 基本命令
基本命令是完全由 RFC 1459 所定义支撑的那些命令。所有的基本命令在任何版本的 IRC
服务器软件中,均得到支持。
基本命令包括如下命令:
1.1.1 连接及注册命令: pass, nick, user, server, oper, quit, squit
1.1.2 频道操作命令:join, part, mode, names, topic, list, invite, kick
1.1.3 服务器端信息查询命令:version, stats, links, time, ping, trace, admin, info
1.1.4 消息发送命令:
privmsg, notice
1.1.5 用户查询命令:who, whois, whowas
1.1.6 服务器端控制命令:away, rehash, restart, summon, users, operwall, userhost, ison, kill, connect
1.2 扩展命令
扩展命令是由各大IRC服务器软件版本体系所各自推出的服务器端命令。IRC在不断的发展过程中,渐渐形成了3大流派的服务器端软件:IRCD,IRCU,IRCX,下面又再分为一些小的流派软件。这些不同的IRC服务器端软件,各自在 RFC1459 的基础之上,开发出了更多的一些命令,这些命令并不记录于 RFC 1459 当中,属于基于 RFC 1459扩展出来的服务器端命令。
客户端命令
客户端命令,是指从IRC的客户端发出,并由该客户端软件自身执行的命令。 ( Client-self Command )
2.1 客户端IRC命令
客户端IRC命令,是指该命令由客户端发出,经由客户端软件在本地执行并添加各项参数后,形成完整的服务器端命令或者是服务器端命令的排列组合,而后发送给服务器端进行执行的命令。
2.2 客户端非IRC命令
客户端非IRC命令,是指该命令由客户端发出,经由客户端软件在本机执行,不需要形成服务器端命令,并且不需要发送给服务器端的命令。客户端非IRC命令的存在,是IRC trojan得以实现的技术基础之一。
远程控制命令
远程控制命令,已经不是严格意义上的IRC命令。它是由IRC的某个客户端用户发出消息或者动作,该消息或者动作通过IRC网络传递给其他的一些用户客户端,并且触发在IRC上待命的某些特定客户端执行某个或者某些动作,相当于以IRC为信息传递媒介,远程控制其他的客户端执行特定任务的命令。( Client(user) -- Client(BOT)Command )
远程控制命令通常由单一作者按照自己的意愿写成,需要配合特定的
客户端使用。对普通用户而言,远程控制命令最常见于对 IRC Services(服务系统) 和其他BOT (机器人)的远程控制。而远程控制命令的存在,也是IRC trojan得以实现的另一技术基础。
3.1 Services 命令
顾名思义,Services 命令,就是由用户发送给 Services (服务系统)上的各个客户端(比如chanserv, nickserv, w, x, cs 等等),并由其执行特定行为的命令(比如读写数据库,更改指定用户模式等)。
3.2 其他 BOT 命令
其他 BOT 命令,是指由用户发送给IRC上除 Services 以外的其他的BOT(机器人),由该BOT来执行特定行为的命令。
前置字符
对于多数IRC客户端软件而言,除去通过
菜单和对话框完成封装的那些IRC命令之外,其他的IRC命令在输入之时,都是与聊天的消息输入共用的一个输入窗口或者对话框。而这些输入框中所输入的内容,通常情况下,会被客户端软件当作聊天的消息发送给频道(Channels)或者是用户( users )。那么,
客户端软件如何判断输入框中所输入的是命令,需要由客户端自己或者是发送给服务器端去执行呢? 这就需要在命令前面添加前置字符,作为命令的标识,当有该字符存在之时,则认为所输入的是一条命令,客户端软件将会首先检查自身,看是否对该命令有所定义或者封装,如果有,按自身定义的该命令内容执行;如果没有,则将该命令发送给服务器,交由服务器执行。
当前大多数客户端软件,命令的前置字符均默认为“/”。就是说,用户需要在命令前面添加“/”,该命令才会被执行。对于比较灵活的客户端软件而言,有的也可以灵活设置该默认的前置字符,比如使用“.”,或者是“\u201d。
对于远程控制命令,由于其命令的表现形式很多,难以一一尽述。在此仅仅谈一下以普通的聊天信息方式来表现和发送给 BOT 的命令。为了让 BOT 从众多的聊天消息中识别出命令,通常也会对该命令的前置
字符进行定义。常见的是以“.”或者是“!”打头的前置字符,但也有以某些特定字符串打头为命令标识的。