Найти - Пользователи
Полная версия: Помогите найти ошибку в коде
Начало » Python для новичков » Помогите найти ошибку в коде
1
AlexBY9
Пытаюсь написать бота для сообщества ВК на питоне.
Есть вот такая функция:
 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





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

FishHook

  def SearchForMsg():
     notread= api.messages.get(cout=1,filters=1)
     ids=notread[1]['uid']
Логично, что если нет непрочитанных сообщений, то notread будет пустым, а вы пытаетесь получить первый член этой (пустой!) коллекции, о чем вам красноречиво сообщается в сообщении об ошибке.
AlexBY9
А можно ли сделать чтобы бот заново проверял список диалогов пока не появится сообщение?
FishHook
AlexBY9
А можно ли сделать чтобы бот заново проверял
Разумеется, можно
AlexBY9
Изменил код:
 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='*******')
Всё заработало!!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB