Задать вопрос

Сделал бота чтобы он работал в беседе. Но он отвечает на абсолютно на любое сообщение. Что делать?

from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import vk_api
import random

vk = vk_api.VkApi(token="token")

vk._auth_token()

vk.get_api()

longpoll = VkBotLongPoll(vk, vk group id)

while True:
    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            if event.object.peer_id != event.object.from_id:
                if event.object.text.lower() == "привет бот" or "Привет бот" or "эй бот" or "Эй бот":
                    vk.method("messages.send", {"peer_id": event.object.peer_id, "message": "хай",
                                                "random_id": 0 })
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
KodyWiremane
@KodyWiremane
Пони, Debian, LEMP, LAN, любитель
Составить правильное условие.

if event.object.text.lower() == "привет бот" or "Привет бот" or "эй бот" or "Эй бот":
читается как «если сообщение равно "привет бот" или всегда».

Оператор or перечисляет не варианты значения, с которыми производится сравнение, а варианты условий (которыми, в данном случае, должны быть сравнения результата event.object.text.lower() с разными строками.

Также, поскольку lower() приводит текст к нижнему регистру, не имеет смысла сравнивать со строками, содержащими большие буквы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽