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

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

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

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

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

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

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽