2014-01-17 7 views
1

Как ограничить команду в IRC-боте, написанном на Python?Python | Как ограничить команду в IRC-боте?

Например, у меня есть:

data. = irc.recv(2048) 

if data.find("^cmd",7) != -1: 
    irc.send('PRIVMSG ' + channel + ' :' + 'do_something' + '\r\n') 

Но если пользователь писать bla bla ^cmdblabla это будет тоже работает. Я не хочу этого, так как я могу это ограничить? Пробовал len(), но нет возможности сделать это таким образом. Кажется, что regexp также не поможет.

+0

Какой улик вы используете? – LuRsT

+0

Похоже, он написал свою собственную библиотеку. Плохая идея, если вы должны спросить об этом. –

+0

@ LuRsT, 'socket',' string', 're'. – kuraken

ответ

1

Вам необходимо написать кортеж с разрешенными аргументами. Например:

commands = ("some_command", "other_command", "this_continues") 

Тогда просто:

if not command in commands: 
    print("Unrecognized command.") 

Вы должны анализировать данные, прежде чем получить команду. Возможно, вот так:

command = data[:data.find(" ")] 
# And here the code above 

Надеюсь, это поможет.

+0

'if not data in commands:' 'irc.send ('PRIVMSG' + ':' + 'Unrecognized' + '\ r \ n')' К сожалению, это не работает. Сообщение с сервера _Нет текста для отправки_. – kuraken

+0

Пожалуйста, укажите полный код, чтобы узнать, что вы делаете неправильно. – cdonts

+0

Извините за отсутствие строк, но не знаю, как это сделать 'while 1:' 'data = irc.recv (2048)' 'print data'' commands = ('^ cmd', '^ cmd1', '^ cmd2 ') '' если не данные в командах: irc.send (' PRIVMSG '+': '+' Unrecognized '+' command '+' \ r \ n ') ' – kuraken