Answer the question
In order to leave comments, you need to log in
Why in python IndexError: list index out of range?
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import vk_api
from vk_api.utils import get_random_id
vk_session = vk_api.VkApi(
token='Опа,а нее, это так не работает')
vk = vk_session.get_api()
group_id = и это тоже заберу
longpoll = VkBotLongPoll(vk_session, str(group_id))
def main():
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
text = event.object.text
lower = text.lower()
peer_id = event.object.peer_id
user_id = event.object.from_id
if peer_id != event.object.from_id:
chat_id = peer_id - 2000000000
if lower == "!помощь":
send_message_to_chat(chat_id,
'Помощь:\n!бассейн\n!мероприятия\n!список отряда (для вожатых) ((не работает)). \nдобавляем ТОЛЬКО ЧЕРЕЗ МЕНЯ')
if lower == "!бассейн":
send_message_to_chat(chat_id,
'шапочка\nсланцы\nполотенце\nмочалка\nмыло\шампунь\nплавки\купальники')
if lower == "!мероприятия":
send_message_to_chat(chat_id, 'Список ближе к лету')
if lower == "aaaa":
send_message_to_chat(chat_id,
'САНЯ, ЛЕНИВАЯ ЖОПА, СДЕЛАТЬ НЕ СМОГ, ВОТ ТЕПЕРЬ ВЫКРУЧИВАЙСЯ @id404016892 (Ты попал лебовски!)')
if lower == "!add":
send_message_to_chat(chat_id,
'САНЯ, ЛЕНИВАЯ ЖОПА, СДЕЛАТЬ НЕ СМОГ, ВОТ ТЕПЕРЬ ВЫКРУЧИВАЙСЯ @id404016892 (Ты попал лебовски!)')
if lower == "!список отряда":
members_data = vk.messages.getConversationMembers(peer_id=peer_id)
for i in members_data['profiles']:
send_message_to_chat(chat_id, i,)
input()
if lower == "!add":
send_message_to_chat(chat_id,
'1')
if lower == "":
send_message_to_chat(chat_id,
'1')
if lower == "":
send_message_to_chat(chat_id,
'1')
print(lower)
if lower.split()[0] == '!бан':
ban(chat_id, user_id, lower)
def ban(chatid, userid, text):
print(2)
if isadmin(chatid, userid):
if len(text.split()) > 1:
candidat = text.split()[1].strip().lower()
print(4)
if candidat[:3] == '[id' and '|' in candidat:
print(5)
banid = candidat.split('|')[0][3:]
if banid.isdigit():
print(6)
banid = int(banid)
members_data = vk.messages.getConversationMembers(peer_id=2000000000 + chatid)
for i in members_data['items']:
if banid == i['member_id']:
print(7)
send_message_to_chat(chatid, 'Соре, так надо было')
vk.messages.removeChatUser(chat_id=chatid, user_id=banid)
break
else:
send_message_to_chat(chatid, 'Введите адресата через @, например !бан @id1')
else:
send_message_to_chat(chatid, 'Введите адресата через @, например !бан @id1')
else:
send_message_to_chat(chatid, 'Введите адресата через @, например !бан @id1')
else:
send_message_to_chat(chatid, 'Вы должны быть админом в беседе')
def isadmin(chatid, userid):
members_data = vk.messages.getConversationMembers(peer_id=2000000000 + chatid)
for i in members_data['items']:
if userid == i['member_id']:
if 'is_admin' in i:
return True
else:
return False
def send_message_to_chat(chatid, message):
print('message to chat {} "{}"'.format(chatid, message))
vk.messages.send(
chat_id=chatid,
message=message,
random_id=get_random_id()
)
if __name__ == '__main__':
main()
Traceback (most recent call last):
File "/home/DLor/mysite/bottt.py", line 105, in <module>
main()
File "/home/DLor/mysite/bottt.py", line 53, in main
if lower.split()[0] == '!бан':
IndexError: list index out of range
Answer the question
In order to leave comments, you need to log in
If the variable contains an lower
empty string, then the method split
will return an empty array. An attempt to access the first element of an empty array naturally causes an exception IndexError
. I suspect that you should use a diaper of elifs instead of if's.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question