@Maxxx_py

Почему не идёт проверка сообщения в vk_api?

Есть код на основе vk_api, но при проверке сообщения от пользователя проверка останавливается на сообщении Аааа и дальше отправляется только ответ на сообщение аааа, всё никак не могу понять почему

import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType

session = vk_api.VkApi(token='') #Мой токен
session_api = session.get_api()
longpoll = VkLongPoll(session)


def sender(id, text):
    session.method('messages.send', {'user_id': id, 'message': text, 'random_id': 0})


for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:

            msg = event.text.lower()
            id = event.user_id

            if msg == 'Привет' or msg == 'привет':
                sender(id, 'Привет')

            elif msg == 'Гриф' or msg == 'Гриф':
                sender(id, 'По моему ты перепутал')

            elif msg == 'Расскажи анекдот' or msg == 'Анекдот':
                sender(id, 'ффввф')

            elif msg == 'Аааа' or 'аааа':
                sender(id, 'аааааа')

            elif msg == 'википедия' or 'википедия' or 'Вики' or 'вики':
                sender(id, '')

            elif msg == 'Команды' or msg == 'help':
                sender(id, '')

            else:
                sender(id, 'Я не понимаю о чём ты, пиши по-русски или узнай список команд с помощью "Команды"')


Вот фото что конкретно не так:

6262d32ab0116139244818.png
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
WolfInChains
@WolfInChains
1) Вы привели текст из ивента к нижнему регистру, но зачем-то проверяете команды и с верхним. При помощи lower() вы уже отформатировали текст и там не может быть больших букв, следовательно все команды, которые начинаются на большую букву никогда не будут вызываться, их нужно убрать.
2) Почему где-то у вас if msg == 'Привет' or msg == 'привет':, тесть рабочий вариант, а где-то elif msg == 'Аааа' or 'аааа': (подсказка - посмотрите сколько у вас "msg" в первом варианте, как они проверяются и сколько во втором). А вообще проще сделать так: if msg in ["aaaa", "bbbb", "cccc"]:, чтобы по 100 раз не писать проверку с or.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы