Python IRC Bot: установка переменных из чтения канала

Я работаю над простым ботом IRC и пытаюсь создать функцию выделения таймера.

Когда я ввожу следующее:

!hl 10

Я хочу присвоить 10 (или что-то другое) в качестве переменной с именем 'var_time' в минутах.

var_time= 0 #External statement

def timer_commands(nick,channel,message):
       global var_time
       if message.find("!hl", var_time )!=-1:
           ircsock.send('PRIVMSG %s :%s I will highlight you in %s minutes!\r\n' % (channel,nick, var_time))
           time.sleep(float(var_time)) #The delay here is in seconds
           ircsock.send('PRIVMSG %s :%s, You asked me %s minutes ago to highlight you.!\r\n' % (channel,nick,var_time))

Я знаю, что var_time не принимает значение 10, это как раз мой вопрос, как я могу это сделать?

Вот как функция вызывается:

  while 1:
      ircmsg = ircsock.recv(2048) # receive data from the server
      ircmsg = ircmsg.strip('\n\r') # removing any unnecessary linebreaks.
      ircraw = ircmsg.split(' ')
      print(ircmsg) # Here we print what's coming from the server

      if ircmsg.find(' PRIVMSG ')!=-1:
         nick=ircmsg.split('!')[0][1:]
         channel=ircmsg.split(' PRIVMSG ')[-1].split(':')[0]
         timer_commands(nick,channel,ircmsg)

Заранее спасибо.

Решение:

  def timer_commands(nick,channel,message):
      if ircraw[3] == ':!hl':
         var_time = float(ircraw[4])
         ircsock.send('PRIVMSG %s :I will highlight you in %s minutes!\r\n' % (channel, nick, ircraw[4]))
         time.sleep(var_time*60) #Delay in Minutes
         ircsock.send('PRIVMSG %s :%s pYou asked me %s minutes ago to highlight you.! \r\n' % (channel, nick, ircraw[4]))

Спасибо Аноним


person Afonso Pinto    schedule 29.08.2015    source источник


Ответы (1)


попробуйте регулярные выражения:

>>> re.match('!hl ([0-9]+)$', '!hl 91445569').groups()[0]
'91445569'
>>> re.match('!hl ([0-9]+)$', '!hl 1').groups()[0]
'1'

или в вашем коде:

import re
m = re.match('!hl ([0-9]+)$', ircmsg)
if m is not None:
    var_time = int(re.groups()[0])
person gellej    schedule 29.08.2015
comment
Спасибо за Ваш ответ. Я не знаком с модулем re, но, судя по вашим примерам, он решает мою проблему. Однако, когда я поместил его в свой код (pastebin.com/8VKM4eta), я заметил, что m всегда возвращает None. - person Afonso Pinto; 29.08.2015
comment
ну, очевидно, это зависит от значения ircmsg в этот момент. Для вашего примера (!hl 10) это работает - person gellej; 31.08.2015