on_message 和 on_private_message
on_message and on_private_message
我目前正在 Cloud9.
上使用 XMPP4R
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
是会议聊天消息,conference.on_private_message
是会议私信聊天。
我想让 on_message 和 on_private_message 都作为 1 而不是上面显示的 2。
我尝试过类似的方法(如下),但它只有效 conference.on_private_message
。我怎样才能让它成为可能?
(conference.on_message || conference.on_private_message) { |time, nick, text|
case text
when /regex/i
#Same Command on both on_message and on_private_message
end
end
}
据我了解,目的是干燥您的代码。可能值得创建一个 Proc 对象并将其发送到两个函数。
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)
您也可以尝试使用#send 方法。
[:on_message, :on_private_message].each { |m| conference.send(m, &proc) }
我目前正在 Cloud9.
上使用 XMPP4Rconference.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
是会议聊天消息,conference.on_private_message
是会议私信聊天。
我想让 on_message 和 on_private_message 都作为 1 而不是上面显示的 2。
我尝试过类似的方法(如下),但它只有效 conference.on_private_message
。我怎样才能让它成为可能?
(conference.on_message || conference.on_private_message) { |time, nick, text|
case text
when /regex/i
#Same Command on both on_message and on_private_message
end
end
}
据我了解,目的是干燥您的代码。可能值得创建一个 Proc 对象并将其发送到两个函数。
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)
您也可以尝试使用#send 方法。
[:on_message, :on_private_message].each { |m| conference.send(m, &proc) }