我一直在学习Erlang一段时间,为了学习它,我正在编写一个IRC机器人。这个IRC机器人应该在“!command”和“Nick:command”表单中监听命令。我预先解析了IRC协议,因此我必须只匹配发送消息。我正在使用这样的二进制模式:
case Msg of
[Nick, _, <<"PRIVMSG">>, <<"#",Channel/binary>>, <<"!rock">>] ->
irckybot_api:privmsg(<<"#",Channel/binary>>, [Nick, choose_hand(rock)]),
{ok, State};
[Nick, _, <<"PRIVMSG">>, <<"#",Channel/binary>>, <<BNick:Len/binary,": rock">>] ->
irckybot_api:privmsg(<<"#",Channel/binary>>, [Nick, choose_hand(rock)]),
{ok, State};
end
我是对的,我必须写两个模式吗?我不能将这两种模式合并为一种吗?也许有更通用的模式?我真的不知道......
LG, CK
答案 0 :(得分:4)
我想它可以更好地写成:
case Msg of
[Nick, _, <<"PRIVMSG">>, <<"#",Channel/binary>>, X] ->
case X of
<<"!rock">> -> ....;
<<BNick:Len/binary,": rock">> -> .......
end;
_ -> .......
end