MHOW检查是否在IRC中注册了$ 4



我在用MSL语言进行编程时是一个专家

我正在开发一个新脚本。在此脚本中,我想检查用户所说的$ 4是否是注册的划痕,但我不知道该怎么做。

非常感谢您在高级方面的任何帮助和/或建议。

最好的问候,蒂姆

更新:

raw 307:*:{ set $+(%,%chan,-,%CheckNick) Registered }
on *:TEXT:*:#:{
    if ($1 == !regtest) {
        set %chan $remove($chan,$chr(35))
        set %CheckNick $4
        whois $4
    }
    if ($($+(%,%chan,-,%CheckNick),$4),5) != $null) {
        do this...
    }
    else {
        else message...
    }
}

我让这个工作来检查我的if语句以检查是否设置了该变量是否被忽略...

编辑:

我尝试使用以下方式:

checkNickReg $chan $2 $nick

...回声:

  echo -a Target: $1
  echo -a Nick: $2
  echo -a Status: $3
  echo -a Chan: $3 - $chan

我正在尝试对诸如频道的回应;$ nick $ ,$ 1未注册/注册/注册,但未登录。

我上面发布的内容显然是错误的,因为它不起作用,但是我尝试了几种方法,实际上我不确定如何将数据传递给了nove now not of the nove notkenizing或设置变量。..

回复

[01:59:06]< 〜mmtimarshall>!isreged mr-dynomite
[01:59:08]<& tornhq>:mr-dynomite状态是:notlogged
编辑: MR-DYNOMITE目前不在,如果不存在此不存在,即使它们不在时也不存在,如果这样,这是血腥的brillant !!![02:00:04]< 〜mrtimarshall>!iSreged mrtimarshall
[02:00:04]<& tornhq>:mrtimarshall状态是:loggedin


$ 4似乎不起作用,"存在,未登录"one_answers"识别,未登录"之间有什么区别?

另外,如何在不设置变量或令牌化的情况下传递数据?

(p.s。非常感谢您到目前为止所奉献的帮助!)

另一个编辑:

我今天一直在深入看,我是否正确地认为用户是在线上或没有注册的(在评论中,它说0 =不存在/不存在/不在线,1=未登录,而2还表示未登录,而是认识到我不确定认识的含义。否则我非常感谢此脚本的帮助,而我对数字的不清楚...

由于您尚未指定任何特定网络,所以我为周围某些通用网络(实际上具有用户身份验证系统)编写了大纲。您应该能够按照模式添加许多其他网络。

基本上,您执行/checkNickReg <target> <nick> [optional extra data],当服务器使用注册信息(如果适用)进行重新播放时,请使用on isReged signal事件处理答复。其他一切几乎都是透明的。

编辑:看起来您正在使用的指定网络(TORN)使用标准的Anope服务。因此,我更新了代码以支持该网络。

; triggers when you get nick registration info back
; $1 = Target
; $2 = Nick
; $3 = Status, can be: LOGGEDIN, RECOGNIZED, NOTLOGGED
; $4- = Everything else passed
on *:signal:isReged:{
  echo -a Target: $1
  echo -a Nick: $2
  echo -a Status: $3
  echo -a Else: $4-
}
; reg lookup routines
alias checkNickReg {
  set %reg. $+ $network 1
  set %reg.target. $+ $network $1
  set %reg.nick. $+ $network $2
  set %reg.other. $+ $network $3-
  ; Freenode uses: NickServ ACC <nick>
  if ($network == Freenode) msg NickServ ACC $2
  ; Rizon/SwiftIRC/OFTC/Torn use: NickServ STATUS <nick>
  elseif ($istok(Rizon SwiftIRC OFTC Torn, $network, 32)) msg NickServ STATUS $2
}
; listen for replays
on *:notice:*:*:{
  if ($($+(%, reg., $network),2)) {
    ;
    var %target = $($+(%, reg.target., $network),2)
    var %nick = $($+(%, reg.nick., $network),2)
    var %other = $($+(%, reg.other., $network),2)
    ;
    unset %reg*. $+ $network
    if (($network == FreeNode) && ($2 == ACC)) $&
      || (($istok(Rizon SwiftIRC OFTC Torn, $network, 32)) && ($1 == STATUS)) {
      ; FreeNode:
      ; 0 = does not exist
      ; 1 = exists, not logged in
      ; 2 = recognized, not logged in
      ; 3 = logged in
      ; Rizon/SwiftIRC/OFTC/Torn:
      ; 0 = does not exists / not online
      ; 1 = not logged in
      ; 2 = recognized, not logged in
      ; 3 = logged in
      if ($3 < 2) var %status = NOTLOGGED
      elseif ($3 == 2) var %status = RECOGNIZED
      else var %status = LOGGEDIN
    }
    ;send status signal
    .signal isReged %target %nick %status %other 
  }
}

(额外说明:出于安全原因,添加额外的支票以确保$ nick为authserv/nickserv可能很有用。)

一个简单的用法示例是:

; Just a basic example of how to call it.
on *:text:!isReged &:#:{
  checkNickReg $chan $2 $nick
}
on *:signal:isReged:{
  msg $1 $4: $2 status is: $3
}

类型!isReged <nick>

编辑:通过全局变量传递到ISREGED事件的数据。我将它们设置在checkNickReg别名中,然后在on notice事件中清理它们。因此,您永远不会看到它们,因为它们被清理了。它们被传递给$ 1-。

的Isreged信号事件

在大多数ircds上,它仅在WHOIS响应中显示为用户(如果有的话)。每当用户说某件事是不可或缺的,尤其是因为每次发生通知时都会收到通知。

相关内容

  • 没有找到相关文章

最新更新