Проверка рангов в IRC - PullRequest
       17

Проверка рангов в IRC

0 голосов
/ 20 ноября 2011
write("NAMES " + channel, writer);//build list of people in channel
String[] Users = reader.ReadLine().Split(' ');//read the line from NAMES, and split into Users array
String[] sender = nick.Split('!');//Person calling the bot
string[] args = data.Split('-');//Arguments to command (Not listed)
nick = sender[0].Substring(1);//Person callin the bot as above
foreach (string i in Users)
{
    if (i.StartsWith("+") && i.EndsWith(nick) || i.StartsWith("%") && i.EndsWith(nick) || i.StartsWith("@") && i.EndsWith(nick) || i.StartsWith("&") && i.EndsWith(nick) || i.StartsWith("~") && i.EndsWith(nick))
    {
        Roll_Args(nick, args[1], args[2]);//If above is correct, roll the the command
    }
}

По какой-то причине он не работает для @, но работает для ранга +.Я не знаю, как еще проверить ранги в IRC.

Существует ли более надежный / эффективный способ проверки рангов в IRC?

Спасибо за чтение.

Редактировать: иногда это не всегда работает для имен пользователей некоторых людей./ прозвище.Например: @Oh_Herro_Der не работает с командой.

1 Ответ

2 голосов
/ 20 ноября 2011

Вам необходимо заключить каждое из ваших && условий в скобки.

if (i.StartsWith("+") && i.EndsWith(nick)) 
|| (i.StartsWith("%") && i.EndsWith(nick)) 
|| (i.StartsWith("@") && i.EndsWith(nick)) 
|| (i.StartsWith("&") && i.EndsWith(nick)) 
|| (i.StartsWith("~") && i.EndsWith(nick)))
{
    Roll_Args(nick, args[1], args[2]);//If above is correct, roll the the command
}
...