当人加入昵称 IRC

Posted

技术标签:

【中文标题】当人加入昵称 IRC【英文标题】:When person joins with nickname IRC 【发布时间】:2019-10-08 08:19:16 【问题描述】:

我正在制作一个 IRC 机器人 我想做一件事,每当有人以特定昵称加入 IRC 频道时,它都会欢迎他们并说他们是已确认的频道主持人用户并给予他们操作。但我不知道我能做些什么。

我正在使用带有 irc 库的 node.js。

我试过了:

bot.addListener("join", function(channel, who) 
    if((who|user|client).(nick|nickname) = "SlimeDiamond", "JS", "Super"  // The things in the brackets separated by the | are what I have tried there.
bot.say("Welcome, " + who + "!"
 else 
return;
);

【问题讨论】:

(who|user|client).(nick|nickname) 应该是昵称吗?在 IRC 中使用昵称来授予 @ 访问权限也是一个很大的禁忌!也许您想使用某种特定的主机掩码进行操作访问?所以你需要给出一个具体的例子来说明如何识别哪个用户值得@访问。 【参考方案1】:

1。比较 ===== 而不是 =

您的条件需要类似于if (who.nickname === "Something")

2。如果要检查多个值,请使用 indexOf

你不能做if (someVariable == "value1", "value2", "value3"):你需要做 if (["value1", "value2", "value3"].indexOf(someVariable) !== -1)

Documentation for indexOf here

所以,到目前为止,我们的条件是 if (["SlimeDiamond", "JS", "Super"].indexOf(who.nickname) !== -1)

3。阅读文档

从documentation here 开始,join 事件可以通过带有这三个参数的回调来监听:

频道 昵称 留言

我没有测试,但您的第二个参数 (who) 似乎是昵称而不是包含昵称的对象。所以这应该有效:

bot.addListener("join", function(channel, who) 
    if(["SlimeDiamond", "JS", "Super"].indexOf(who) !== -1) 
        bot.say("Welcome, " + who + "!");
     else 
        return;
    
);

【讨论】:

好的,所以我把 if 改成了 indexOf。我使用的是 ==,但显然在将代码输入到 *** 时我打错了。我正在使用 irc 库。 好的,所以您可以更新您的问题以添加此信息(方便任何人在网上搜索相同的问题),我现在将更新我的答案

以上是关于当人加入昵称 IRC的主要内容,如果未能解决你的问题,请参考以下文章

irc昵称的pcre表达式?

IRC中的昵称、用户名、实名有啥区别,密码是啥?

如何使用 IRC URI 方案打开查询窗口?

IRC之freenode的注册登录私聊新建聊天WeeChat终端工具的使用等

IRC

irc使用教程