Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2017 19:41:18

AlexBY9
Зарегистрирован: 2017-04-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде

Пытаюсь написать бота для сообщества ВК на питоне.
Есть вот такая функция:

 def SearchForMsg():
 notread= api.messages.get(cout=1,filters=1)
 ids=notread[1]['uid']
 needphoto=api.messages.getHistoryAttachments(peer_id=ids,media_type='photo',cout=1)
 if need_photo==0:
   api.messages.send(user_id=ids, chat_id=ids,message='*****')
 else:
   api.messages.send(user_id=ids, chat_id=ids,message='*******')
которую я вызываю таким образом
 import time
while True:
 SearchForMsg()
 time.sleep(30)
При первом проходе цикла бот находит новое сообщение и отвечает на него но при следующем проходе выходит ошибка:
list index out of range





И при повторном запуске если входящих сообщений нет выходит та же ошибка.

Отредактировано AlexBY9 (Апрель 8, 2017 19:53:12)

Офлайн

#2 Апрель 8, 2017 20:02:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде


  def SearchForMsg():
     notread= api.messages.get(cout=1,filters=1)
     ids=notread[1]['uid']
Логично, что если нет непрочитанных сообщений, то notread будет пустым, а вы пытаетесь получить первый член этой (пустой!) коллекции, о чем вам красноречиво сообщается в сообщении об ошибке.



Офлайн

#3 Апрель 8, 2017 20:54:17

AlexBY9
Зарегистрирован: 2017-04-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде

А можно ли сделать чтобы бот заново проверял список диалогов пока не появится сообщение?

Офлайн

#4 Апрель 9, 2017 08:26:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде

AlexBY9
А можно ли сделать чтобы бот заново проверял
Разумеется, можно



Офлайн

#5 Апрель 9, 2017 15:29:56

AlexBY9
Зарегистрирован: 2017-04-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку в коде

Изменил код:

 def SearchForMsg():
 notread= api.messages.get(cout=1,filters=1)
 if notread[0]==0:
  time.sleep(30)
 else:
  ids=notread[1]['uid']
  needphoto=api.messages.getHistoryAttachments(peer_id=ids,media_type='photo',cout=1)
  if needphoto==0:
   api.messages.send(user_id=ids, chat_id=ids,message='*****')
  else:
   api.messages.send(user_id=ids, chat_id=ids,message='*******')
Всё заработало!!!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version