0

有谁知道如何在 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?
                        }
                    }
4

2 回答 2

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) 将用户踢出频道,给出原因。

于 2012-09-04T07:09:07.793 回答
0

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

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

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

于 2021-04-26T17:57:25.683 回答