PircBot如何获取主机名

时间:2012-05-13 03:13:53

标签: java irc

有谁知道如何在PircBots中使用它? http://www.jibble.org/javadocs/pircbot/index.html 我只需要获取用户主机名并禁止它们。谢谢你的阅读!

                if (cmd.equalsIgnoreCase("ban")) {
                        if (command[1] != null && command[2] != null) {
                            //Command[1] is the users name.
                            //Command[2] is the reason.
                            //how do i make this ban someone?
                        }
                    }

2 个答案:

答案 0 :(得分:0)

你不能有理由禁止,只是有理由踢。在这种情况下,我假设你想要kban,这是kick + ban。

            if (cmd.equalsIgnoreCase("ban")) {
                    if (command[1] != null && command[2] != null) {
                        //Command[1] is the users name.
                        //Command[2] is the reason.
                        //how do i make this ban someone?

                        // ban first 
                        //make sure to input the current channel in "currentChannel"
                        ban(currentChannel, command[1]+"!*@*");

                        // kick with a reason
                        kick(currentChannel, command[1], command[2]);
                    }
                }

如果你的命令需要一个主机掩码,你应该让用户指定它 - 他可能想要一个特定的禁令,也许是禁止整个范围等。否则,产生一个糟糕的昵称禁令(如果用户离线你可以使用“whowas”要找出来,否则你应该使用“whois”。注意“whowas”可能不起作用。)

来自PircBot的JavaDoc - http://www.jibble.org/javadocs/pircbot/index.html

ban(String channel,String hostmask)           禁止来自频道的用户。

kick(String channel,String nick)           从频道中踢出用户。

kick(String channel,String nick,String reason)           从频道中踢出用户,给出了理由。

答案 1 :(得分:0)

虽然这是一个老问题,但我想我会分享我是如何解决这个问题的。我假设您正在处理 onMessage 事件中的 ban 命令。在这种情况下,您必须在地图中保存 command[1]。然后调用

sendRawLine("WHO " + command[1]);

覆盖 onServerResponse 并捕获代码 RPL_WHOREPLY,然后 split("\\s") 响应。然后您可以使用 splitResult[5] 在地图中使用密钥查找,主机将在 splitResult[3] 中,然后您可以使用 String.format("*!*%s", splitResult[3])

执行禁令