--- layout: post # 使用的布局(不需要改) title: IRC急速入门 # 标题 subtitle: IRC的指令及使用 #副标题 date: 2019-09-17 # 时间 author: Duter2016 # 作者 header-img: img/post-bg-dutlx.jpg #这篇文章标题背景图片 catalog: true # 是否归档 music-id: # 网易云音乐单曲嵌入 music-idfull: # 网易云音乐歌单嵌入 tags: #标签 - IRC --- ## 一、名词 == * **IRC** 一种网络聊天协议 * **IRC 网络** 依据 IRC 协议组成的聊天网络, 比较知名的有 `freenode`, `EFnet`, `DALnet` 等 * **IRC 服务器** 每个 IRC 网络由多个 IRC 服务器互相连接形成. 假设 `freenode` 由 A,B,C 三台服务器互联而成, 那么你随意连接到其中一台便意味着你连接上了 `freenode` 网络, 便可进入其中的聊天室聊天 * **IRC 聊天室** 当你连接到 IRC 网络后(比如 `freenode`), 便可以进入网络上的聊天室进行聊天. 聊天室多以主题为名, 如 `#javascript`, `#php`, `#porn`, `#hacker` 等 并不是所有的聊天都可以任意进入, 有些聊天室只能被邀请进入, 有些聊天室只允许已经注册昵称的用户进入, 等等 * **昵称** 在聊天室, 昵称即你的显示名字, 比如我在 `freenode` 的注册昵称就是 `UniFreak` * **IRC 客户端** 连接到 IRC 网络需要对应的客户端(就好比浏览网页需要网页客户端, 即浏览器一样) 知名的客户端有 mIRC, xChat, HexChat 等 下载 HexChat: https://hexchat.github.io/downloads.html ## 二、IRC使用命令 * **IRC 命令** 使用 IRC 必须掌握几个必须的命令, 命令以 / 开头, 如: **(1)注册、登陆等系统级命令** 示例命令|备注 -|- `/server irc.freenode.net`|连接到 `freenode` 网络 `/list` | 频道列表 `/nick myName`|更换昵称为 myName `/nick zhijia`|登陆或切换用户名 `/msg NickServ identify `|切换用户后登陆验证用户身份 `/msg nickserv register password me@163.com`|注册昵称, 密码为 password, 邮箱为 me@163.com `/join #java`|进入 #java 聊天室 `/exit`|退出账户 `/quit`|退出服务器 `/disconnect` |退出服务器 **(2)聊天消息类命令** 示例命令|备注 -|- `/msg ` | 向某人发私消息(会打开新窗口) `/query ` | 向某人发私消息(新开窗口且转换到这个窗口) `/say ` | 向某人说话(不新开窗口) `/notice ` | 向指定人发出注意消息 `/me <动作>` |在当前聊天室窗口中做出动作。 如做出晕倒动作:`/me` 晕倒 `/part ` | 退出一个频道,不加频道名退出当前频道,后面可以跟退出原因。 `/query 昵称`|和某人开小窗口私聊 `/away `|留下信息说明暂时离开,别人向你发出私聊时将会返回此消息 `/away`|(不指定参数)取消离开。当您不写原因时,就会取消离开状态 `/ison …` | 查询指定别名是否在线 `/ignore ` | 忽略某人的聊天内容 `/set autolog on` | 自动保存聊天记录 **(3)查询类命令** 示例命令|备注 -|- `/names [#聊天室]` | 列出当前服务器或指定聊天室下的所有人员名称(无法列出隐藏人员) `/who` | 查看频道的所有人 `/whois 昵称`|查看某人的资料 `/help`|帮助 `/info` | 查询服务器信息 `/admin` | 查询当前服务器上的Admin `/lusers` | 查询当前服务器上的统计信息 `/motd` | 查询当前服务器今日的统计信息 `/links` | 查询当前的服务器,解析当前的有几个服务器 …等等 ## 三、使用示例 == 1. 安装 hexChat 2. 配置网络 首次打开 hexChat 会自动弹出网络配置窗口. 也可以使用菜单 `HexChat`\->`Network Lists` 打开该窗口 ![配置窗口](https://unifreak.github.io/images/posts/201604/hexChatServerlist.png) 填写自己想要的昵称 在 `Networks` 的列表中点选 `freenode`, 然后点击 `Connect` 连接到 `freenode` 3. 连接成功后会弹出此窗口 ![连接成功](https://unifreak.github.io/images/posts/201604/hexChatConnSuccess.png) 取消选中 `always show this ...`, 点击 `OK` 4. 现在来到主界面 ![主界面](https://unifreak.github.io/images/posts/201604/hexChatUI.png) 输入 `/msg NickServ register ` 以注册当前昵称 **注意**: 把 `` 换成你自己的密码, 把 `` 换成你自己的邮箱地址 5. 进入邮箱, 收取邮件. 把邮件中给你的命令粘贴到消息输入框, 回车, 以完成验证 6. 现在输入命令 `/join #irc` 以加入 #irc 聊天室, 在这里你可以问任何有关 irc 的问题. 当然你也可以加入其它感兴趣的聊天室. 7. 开始聊天 * [名词](#0) * [示例](https://unifreak.github.io/tutorial/IRC-quick-start#1) ## 四、使用指引 什么是 IRC 频道 ---------------------------------------------------- 就是让许多人一起聊天的地方。像 g0v.tw 建立的 `#g0v.tw` 就是一个 IRC 频道。 为什么要建立自已的 IRC 频道 ---------------------------------------------------- 可能有几个原因: 1. 为了想练习 IRC 指令,但是怕在公开的频道上练习会打扰到別人,或是打错指令出包,或是不小心把密码发出去。这时可以开一个只有自已的频道来练习。 2. 为了测试 IRC 机器人。机器人是在 IRC 频道里提供特定功能的程式,像 `#g0v.tw` 里的 kcwu 就是半人半机器,会跟大家报告频道里贴出的 URL 网页標题是什么。测试程式的时候为了避免发出太多无意义的讯息,可以开一个没什么人的频道来测试。 3. 为了秘密集会。IRC 频道可以设定成「仅限被邀请者才能加入」,因此可以用来开秘密会议(如果只有两个人要私下聊,用 `/msg` 私讯即可)。 怎样建立一个新频道 ---------------------------------------------------- 首先你需要註册。如果还没註册的话,请参考一下[如何註册自已的帐號](%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8-IRC#%E5%A6%82%E4%BD%95%E8%A8%BB%E5%86%8A%E8%87%AA%E5%B7%B1%E7%9A%84%E5%B8%B3%E8%99%9F)。 建立新频道和[加入频道](%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8-IRC#%E5%A6%82%E4%BD%95%E5%8A%A0%E5%85%A5%E9%A0%BB%E9%81%93)的方式一模一样。只要点选右边的「Add a Network」,在输入要加入的频道名称时,打进你的新频道的名称,就可以建一个新频道了。 如果你是在下方的输入条打指令,可以打 /join 这里 `channel_name` 就是你要建立的频道名称。 这时,如果该频道没有被人注册则你将会是该频道的op,否则就是已经被人注册了,你就再换个其它的名称吧 然后我们使用 `/msg ChanServ REGISTER <#channel> ` 来完成频道注册,channel为频道名,passwd为频道密码 比如 `/msg ChanServ REGISTER #debian\_cn 1234 ` 至此频道已经创建成功。 **(可选)**一般频道都通过ChanServ这个机器人管理. 如下命令将ChanServ永久加入你的聊天室 `/msg ChanServ SET <频道名> GUARD ON` **管理员退出后再登录如何获取管理员权限**,前提是频道是你注册的: `/msg ChanServ op #channel $nick` 建好频道以后,可能要设定一下主题,让別人知道这个频道在討论什么。可以用下方的输入条打进指令: /topic 比如打 `/topic IRC 练习`,讯息窗上方的主题就会变成「IRC 练习」。 怎样建立仅限受邀者才能加入 (invite-only) 的频道 ---------------------------------------------------- 建好频道以后,在下方的输入条打进指令: /mode +i 这样会把频道设成只有受邀请的人才能加入。要邀请人,只要打 /invite `nickname` 就是你想邀请的人。这个邀请只能用一次。如果被邀请的人加入频道(join),后来又离开(leave),那下次要再加入就必须再被邀请一次。 要解除仅限邀请的状態,可以打 /mode -i 怎么踢走不相干的人 ---------------------------------------------------- 只要你是频道的管理员(operator,建立频道的人自动就是管理员),就可以决定谁必须离开这个频道。用以下的指令: /mode +b 这样子这个 `nickname` 就不能在频道中发言了. 但是他仍然可以收看这个频道(如果没有关掉讯息窗的话). 要把他踢出这个频道,要用 /kick 配合上面的 `/mode` 指令,可以让他再也不能加入这个频道。 ## 补充说明 ---------------------------------------------------- 一般目前大家都是在freenode(irc.freenode.net)建立频道。 freenode提供了两只robot,chanserv跟nickserv,chanserv负责频道的权限管理,而nickserv负责使用者的管理。 可以/msg chanserv help 列出可以用的指令(nickserv也適用) 通常管理者和一般使用者的差异在管理频道的权限(operation channel)简称op,op又分成几种情况 1. sop (super operator) 频道的註册者,拥有操作频道所有权限,包括踢人。 2. aop (auto operator) 频道註册者信任的共同管理者,拥有部分权限,和第三个的差异在於,离开频道后再进入还是能拥有管理权限。 3. op 普通管理者,可能一旦离开频道就失去op。