尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

slack-irc 完整教程:commandCharacters 与 autoSendCommands 让 Slack 里的 IRC 命令跑起来

slack-irc 完整教程:commandCharacters 与 autoSendCommands 让 Slack 里的 IRC 命令跑起来 slack-irc 完整教程commandCharacters 与 autoSendCommands 让 Slack 里的 IRC 命令跑起来【免费下载链接】slack-ircConnects Slack and IRC channels by sending messages back and forth.项目地址: https://gitcode.com/gh_mirrors/sl/slack-ircslack-irc 是一款免费的 Slack 与 IRC 双向桥接机器人gateway它通过一个 IRC bot 账号把两个平台的频道互相打通消息来回自动转发。对于同时使用 Slack 和 IRC 的团队来说它最大的亮点是两项进阶配置commandCharacters让 Slack 用户直接发送!xxx这类 IRC 命令和autoSendCommands机器人连上 IRC 服务器后自动执行 NickServ 认证等命令。本文将带你快速搞懂这两个配置的用法、原理和实战技巧。为什么需要这两个配置在默认的桥接模式下你在 Slack 里输入的每句话都会带上你的用户名前缀转发到 IRC例如zhangsan 大家好这会带来两个常见问题命令会被污染IRC 的命令如/me、/quote或频道机器人的指令必须以特定字符开头一旦前面被加上了zhangsan服务器就会把它当成普通聊天命令直接失效。认证需要人工干预很多 IRC 网络要求用户上线后先向 NickServ 验证昵称或加入私有频道前输入密码手动操作非常麻烦。commandCharacters和autoSendCommands正是为解决这两个问题而生的。commandCharacters把 Slack 变成 IRC 命令控制台 commandCharacters用于指定命令字符。只要你在 Slack 里发送的消息以这些字符开头slack-irc 就不会给它加上用户名前缀而是原样转发到 IRC——这样真正的 IRC 命令就能正常执行了。它的默认值是空数组[]即不识别任何命令字符你可以在配置文件中改成commandCharacters: [!, .]配置后你在 Slack 中发送!uptime机器人会先在 IRC 频道里发一行提示Command sent from Slack by zhangsan:然后原样发送!uptime不带任何用户名前缀IRC 侧的机器人就会把它识别为命令并执行。背后的实现逻辑核心判断逻辑非常简洁见 lib/bot.jsisCommandMessage(message) { return this.commandCharacters.indexOf(message[0]) ! -1; }也就是说只检查消息的第一个字符。只有首字符命中commandCharacters列表消息才会走命令通道见 lib/bot.js✅ 不加用户名前缀✅ 前置一条Command sent from Slack by xxx提示让 IRC 用户知道命令来源❌ 首字符不匹配的消息仍按普通聊天处理小提示如果你的 IRC 命令习惯用!开头只配置[!]即可想同时支持.开头的短指令类似 Discord 机器人可以写成[!, .]。autoSendCommands连接成功后自动执行的 IRC 命令 autoSendCommands是一个命令队列机器人成功注册registered到 IRC 服务器后会按顺序自动发送队列中的每一条 IRC 命令。每条命令是一个字符串数组第一个元素是命令名后面是参数。典型配置如下autoSendCommands: [ [PRIVMSG, NickServ, IDENTIFY password], [MODE, test, x], [AUTH, test, password] ]这三行分别表示命令作用PRIVMSG NickServ IDENTIFY password向 NickServ 验证昵称密码让机器人使用已注册的昵称MODE test x为机器人开启隐身invisible模式AUTH test password执行服务器认证SASL 风格对应的执行时机在 lib/bot.js 中机器人监听到 IRC 的registered事件后遍历队列逐条调用this.ircClient.send(...element)。相关行为在单元测试 test/bot-events.test.js 中有明确验证——只要触发registered事件队列中的命令会被逐条、按序发出。为什么推荐用 autoSendCommands 做 NickServ 认证无人值守进程重启、断线重连后自动重新认证不需要人工盯着。顺序可控队列严格按数组顺序执行先认证、再开隐身逻辑清晰。失败不致命某条命令被服务器拒绝只会在日志中报错不会影响机器人继续转发消息。完整配置示例两个配置组合使用下面是官方 README.md 中高级选项示例的节选展示了两个配置如何配合完整示例还包含头像、用户名格式等选项{ nickname: test, server: irc.bottest.org, token: your-slack-bot-token, autoSendCommands: [ [PRIVMSG, NickServ, IDENTIFY password], [MODE, test, x], [AUTH, test, password] ], channelMapping: { #slack: #irc channel-password }, commandCharacters: [!, .] }工作流一目了然机器人以test身份连上irc.bottest.org注册成功后自动完成 NickServ 认证和隐身设置进入channelMapping中声明的频道开始双向转发当 Slack 用户发送!xxx或.xxx开头的消息时以命令身份原样送入 IRC。测试用的配置样例可参考 test/fixtures/single-test-config.json它演示了commandCharacters与autoSendCommands的最小可用组合。上手步骤与常见坑 ⚠️最快配置方法3 步在 Slack 创建一个 Bot User获取 token并用/invite botname把它拉进目标频道在 JSON 配置中填入server、nickname、token、channelMapping再按需添加commandCharacters和autoSendCommands运行npm install -g slack-irc slack-irc --config /path/to/config.json仓库方式可 clone 后npm install npm run build详见 README.md。常见坑清单JSON 不支持注释README 示例里的//注释在实际配置文件中必须先删掉否则解析报错。commandCharacters 只看首字符!写在消息中间不会触发命令模式。autoSendCommands 只在 registered 时执行一次断线重连会重新走注册流程命令会再次执行这正是 NickServ 认证想要的效果。密码安全autoSendCommands中的密码是明文写在配置文件里的请妥善保管该文件不要提交到公共仓库。一个实例可跑多个 bot配置文件写成一个 JSON 数组即可用同一份 slack-irc 服务多个 Slack 团队 / IRC 网络。总结slack-irc 用不到十个配置项就能让 Slack 团队无缝接入 IRC 世界。其中commandCharacters—— 决定哪些开头的消息被视为 IRC 命令原样透传、不加用户名前缀lib/bot.jsautoSendCommands—— 上线后自动执行的命令队列让 NickServ 认证、隐身、频道密码等一次性搞定lib/bot.js。两个配置各司其职一个解决命令能发出去一个解决上线自动就绪。把这两项加进你的配置文件Slack 里的 IRC 命令从此真正跑起来 【免费下载链接】slack-ircConnects Slack and IRC channels by sending messages back and forth.项目地址: https://gitcode.com/gh_mirrors/sl/slack-irc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表