Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 02.07.2019, 23:54   #1
1xev3
Новичок
 
Регистрация: 02.07.2019
Сообщений: 2
Репутация: 10
По умолчанию Vk bot. Бот работает неккорректно.бот отвечает всегда одним сообщением вне зависимости от комманды.

Незнаю как обьяснить данную проблему,но код который я создал ведёт
себя странно при добавлении разных вариаций
комманд.Старички,подскажите что не так.Всё что не хотел бы спалить заменил на test.Странность заключается в том что после добавления в код or бот отвечает всегда одним сообщением вне зависимости от комманды
скриншоты:
http://prntscr.com/o9pgtl

Код:
import vk_api
import random
import time

token = "test"

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

vk._auth_token()

while True:
    try:
        messages = vk.method("messages.getConversations", {"offset": 0, "count": 20, "filter": "unanswered"})
        if messages["count"] >= 1:
            id = messages["items"][0]["last_message"]["from_id"]
            body = messages["items"][0]["last_message"]["text"]
            if body.lower() == "hello" or "q" or "qq" or "привет" or "ghbdtn": #Проблемная строка
                vk.method("messages.send", {"peer_id": id, "message": "Привет!Я бот созданный 1xev3.Если пишешь ради вопроса - проигнорируй ответ бота","random_id": random.randint(1, 2147483647)})
            elif body.lower() == "ссылки" or "ccskrb": #Проблемная строка
                vk.method("messages.send", {"peer_id": id, "message": "Discord:  \n test \n test \n Группа ВК: test \n test \n test:  ", "random_id": random.randint(1, 2147483647)})
            elif body.lower() == "беседа": #Дальше не стал делать or
                vk.method("messages.send", {"peer_id": id, "message": "Ссылка на беседу: test", "random_id": random.randint(1, 2147483647)})
            elif body.lower() == "ники":
                vk.method("messages.send", {"peer_id": id, "message": "test", "random_id": random.randint(1, 2147483647)})
            else:
                vk.method("messages.send", {"peer_id": id, "message": "Не понял тебя.Если пишешь ради вопроса - проигнорируй ответ бота.Чтобы отправить мне комманду напиши её сообщением(Без # )\nМои комманды: #ссылки# , #беседа# , #ники#", "random_id": random.randint(1, 2147483647)})
    except Exception as E:
        time.sleep(1)
#Код сам по себе запускается без ошибок

Последний раз редактировалось 1xev3; 03.07.2019 в 00:27. Причина: Изменение заголовка
1xev3 вне форума   Ответить с цитированием
Старый 03.07.2019, 05:10   #2
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Адрес: RF Moscow
Сообщений: 5,406
Репутация: 2502

icq: 438888048
По умолчанию

Код:
body = messages["items"][0]["last_message"]["text"].lower()
if body in ("hello", "q", "qq", "привет", "ghbdtn"):
    ...
elif body in (...):
__________________
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума   Ответить с цитированием
Старый 03.07.2019, 05:13   #3
Black Fregat
Программист
Профессионал
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,439
Репутация: 1021
По умолчанию

or работает не так, как Вы думаете.. Ваша строка
Код:
if body.lower() == "hello" or "q" or "qq" or "привет" or "ghbdtn":
на самом деле читается так:
Код:
if (body.lower() == "hello") or ("q") or ("qq") or ("привет") or ("ghbdtn"):
Строки непустые => обрабатываются Питоном как True => or даёт True

Я бы написал
Код:
if body.lower() in ["hello", "q", "qq", "привет", "ghbdtn"]:
Black Fregat вне форума   Ответить с цитированием
Старый 03.07.2019, 13:33   #4
1xev3
Новичок
 
Регистрация: 02.07.2019
Сообщений: 2
Репутация: 10
По умолчанию

Спасибо,помогли.
1xev3 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
QUdpSocket работает только при локальном IP. Не работает если указан динамичесский айпи kook163 Qt и кроссплатформенное программирование С/С++ 5 09.05.2018 23:40
Не работает анимация. Механизм работает лишь при изменения числа в едит1. Студент ММИ Помощь студентам 1 18.05.2015 08:39
Программа на Visual C# работает при запуске руками, но не работает при попытки автоматического запуска Bug$ Помощь студентам 18 21.10.2013 16:22
не работает relese версия проги и debug работает тока на моем компе D][mon C# (си шарп) 2 04.05.2012 20:21
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 10:56


09:14.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.