Преобразование данных, полученных с сервера, в строку

Я уже некоторое время работаю над чат-ботом TwitchTV Python, но я все еще осваиваю Python.

Это может показаться простым, но это смутило меня, поэтому я решил спросить:

В настоящее время я извлекаю сообщения из чата Twitch, используя data = irc.recv

Что я хочу сделать, так это использовать извлеченные данные и превратить их в строку, чтобы затем я мог проверять наличие заглавных букв в сообщениях, используя str.isupper()

Я уже пробовал несколько способов;

data = irc.recv (4096)
msg = data()
capsTime = "30s"
str = msg
if str.isupper():
   message("[-] Woah! Hold back on the caps! (Timeout " + capsTime + ")")
   message("/timeout " + user + capsTime)
# variable "user" already defined

Это только один, который, к сожалению, не сработал.


РЕДАКТИРОВАТЬ:

Это мой новый код. Он работает без сообщений об ошибках, но не работает так, как я хочу;

while True:
   data = irc.recv (4096)
   user = data.split(':')[1]
   user = user.split('!')[0]
   caps = data.split(':')[0]
   capsmsg = str(data)

   print data
   if data.find('PING') != -1: 
       irc.send('PONG ' + data.split()[1] + '\r\n')

   if capsmsg.isupper():
       message("[-] Woah! Hold back on the caps, " + user + "! (Timeout 30s)")
       message("/timeout " + user + " 30s")

РЕДАКТИРОВАТЬ 2:

Ожидаемый результат: если сообщение найдено со ВСЕМИ заглавными буквами, оно напечатает это сообщение и отметит время выхода пользователя: message("[-] Woah! Hold back on the caps, " + user + "! (Timeout 30s)")

Текущий вывод: бот не получает сообщение и не запускает скриптовый код.


person pythagon    schedule 25.08.2014    source источник
comment
не сработало - нам понадобится немного больше информации. Пожалуйста, добавьте все сообщения об ошибках и неожиданном поведении, с которыми вы столкнулись.   -  person hlt    schedule 25.08.2014
comment
Вы пробовали простое приведение типа stri = str(msg)? Я переименовал переменную str, потому что это недопустимое имя.   -  person Robin Carlier    schedule 25.08.2014
comment
str является зарезервированным ключевым словом!   -  person Tushar    schedule 25.08.2014


Ответы (1)


Попробуй это:

data = irc.recv (4096)
# msg = data()
capsTime = "30s"
mystr = repr(data)
if mystr.isupper():
   message("[-] Woah! Hold back on the caps! (Timeout " + capsTime + ")")
   message("/timeout " + user + capsTime)
# variable "user" already defined

Не используйте зарезервированное ключевое слово.

person Stephen Lin    schedule 25.08.2014
comment
Спасибо за это - это не совсем сработало, так как выдало мне это сообщение об ошибке: TypeError: 'str' object is not callable для строки msg = data() Я также забыл упомянуть, что я новичок в Python, так что извините, если я кажусь глупым, не могу решить это для сам. - person pythagon; 25.08.2014
comment
@pythagon Хорошо, я вижу твою проблему. Я обновляю свой ответ, дайте мне знать, если он работает. - person Stephen Lin; 25.08.2014
comment
Исправлена ​​ошибка невозможности вызова строки - теперь ошибка 'msg' не определена. - person pythagon; 25.08.2014
comment
@pythagon В этом коде больше нет сообщения. Вы использовали msg где-нибудь еще? Вы можете заменить msg данными и повторить попытку. - person Stephen Lin; 25.08.2014
comment
Я добавил код, как вы выразились. Он не выдает ошибок, но не работает при тестировании в чате Twitch. Я обновил свой исходный пост своим новым кодом ниже. - person pythagon; 25.08.2014
comment
@pythagon Каков ваш ожидаемый результат? И что это сейчас? Можете ли вы обновить его в исходном сообщении? - person Stephen Lin; 25.08.2014
comment
@pythagon capsmsg.isupper() возвращает True, если все символы в регистре в capsmsg являются прописными и в нем есть хотя бы один символ в регистре. Очевидно, что в вашем случае capsmsg.isupper() возвращает False. Вы можете распечатать его, чтобы проверить, прав ли я. - person Stephen Lin; 25.08.2014
comment
Хорошо, спасибо. Я знал об этом, но теперь я пытаюсь заставить его возвращать «Истина», если сообщение написано всеми заглавными буквами. Я буду возиться с этим, но я просто оставлю этот вопрос здесь, вместо того, чтобы продолжать. Спасибо за все ваши советы и помощь! - person pythagon; 25.08.2014