Почему выдает ошибку при несоблюдении условия?

Пишу бота для дискорда, нужно выполнить действие после условия. При этом если условие верно, то ошибки не происходит, но если оно не верно, происходит ошибка. Хотя должна перейти дальше к else:

if message.attachments[0,1].filename.endswith('.jpeg') or 
    message.attachments[0,1].filename.endswith('.jpg') or 
    message.attachments[0,1].filename.endswith('.png'):
        print('Hehe boy!')
        return
else:
    return

Что я делаю не так? Ошибка которую просили:

Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\BlitSpectral\AppData\Local\Programs\Python\Python37\lib\site- 
packages\discord\client.py", line 333, in _run_event
    await coro(*args, **kwargs)
  File "main.py", line 39, in on_message
    if message.attachments[0].filename.endswith('.jpeg') or 
message.attachments[0].filename.endswith('.jpg') or 
message.attachments[0].filename.endswith('.png'):
IndexError: list index out of range

Ответы (2 шт):

Автор решения: Blit Gaming

Я разобрался. В данном случае нужно было поставить 2 условие. То есть -

if message.attachments == []:
    return
elif message.attachments[0].filename.endswith('.jpeg') or 
    message.attachments[0].filename.endswith('.jpg') or 
    message.attachments[0].filename.endswith('.png'):
    print('Heheeee Boy!)')
    return
else:
    return

Такой код работает.

→ Ссылка
Автор решения: Danis

Это происходит потому что message.attachments может быть пустым. Надо сделать дополнительную проверку на то что он не пустой.

место

message.attachments[0].filename.endswith('.jpeg') or 
message.attachments[0].filename.endswith('.jpg') or message.attachments[0].filename.endswith('.png'):

лучше писать так:

message.attachments[0].filename.endswith(('.jpeg', '.jpg', '.png')):

писать везде пустой return не надо.

в итогу получается такой код:

if message.attachments and message.attachments[0].filename.endswith(('.jpeg', '.jpg', '.png')):
    print('Heheeee Boy!)')
→ Ссылка