2017-03-22 2 views
0

Ich verwende derzeit XMPP4R auf Cloud9.on_message und on_private_message

conference.on_message {|time, nick, text| 
    case text 
     when /regex/i 
      #Same Command as on_private_message 
     end 
    end 
} 

conference.on_private_message {|time,nick, text| 
    case text 
     when /regex/i 
      #Same Command as on_message 
     end 
    end 
} 

conference.on_message ist die Botschaft der Konferenz von einem Chat und conference.on_private_message ist die private Nachricht Chat-Konferenz.

Ich möchte sowohl on_message als auch on_private_message als 1 anstelle von 2 oben dargestellt funktionieren.

Ich versuchte so etwas (unten), aber es funktionierte nur conference.on_private_message. Wie kann ich es möglich machen?

Antwort

0

Wie ich verstehe, ist der Zweck, Ihren Code zu trocknen. Es könnte sich lohnen, ein Proc-Objekt zu erstellen und es an beide Funktionen zu senden.

proc = Proc.new { |time, nick, text| 
case text 
    when /regex/i 
     #Same Command on both on_message and on_private_message 
    end 
end 
} 
conference.on_message(&proc) 
conference.on_private_message(&proc) 

Sie könnten auch versuchen, mit #send-Methode.

[:on_message, :on_private_message].each { |m| conference.send(m, &proc) } 
Verwandte Themen