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

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 })
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
KodyWiremane
@KodyWiremane
Пони, Debian, LEMP, LAN, любитель
Составить правильное условие.

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

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

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

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

Похожие вопросы