true_pelmeshek
@true_pelmeshek
Я нажал куда-то не туда и всё сломалось

Почему бот на VkBotLongPoll дублирует ответы на сообщения?

Имеется некоторый бот, использующий VkBotLongPoll. Логика, в принципе, проста: авторизация, создание списка имен и ответов на неопознанные команды, словари команд в формате "текст команды : ответ", а также функция-обработчик сообщений:
def message_type(self, message: str) -> str:
        """
        Функция определения типа сообщения

        :param message: текст сообщения
        """
        for name in self.NAMES:
            if message.startswith(name):
                message_words = message.split()
                other_text_list = message_words
                other_text_list.pop(0)
                command = ' '.join(other_text_list)

                if command in self.PHRASES:
                    return random.choice(self.PHRASES[command])
                elif command not in self.PHRASES and command not in self.COMMANDS:
                    return random.choice(self.COMMAND_NOT_STATED)
            elif message == 'да':
                return self.MEMES[message]
            elif message in self.MEMES:
                return self.MEMES[message]


И основной цикл:
def listen(self):
        """
        Основной цикл, реагирующий на события
        """

        for event in self.longpoll.listen():
            try:
                if event.type == VkBotEventType.MESSAGE_NEW:
                    self.text = event.object['text'].lower()
                    self.result = self.message_type(message=self.text)
                    if self.result:
                        if event.from_user:
                                self.send_message(id_=event.object['from_id'], message=self.result)
                        elif event.from_chat:
                                self.send_message(id_=event.object['peer_id'], message=self.result)
            except requests.exceptions.ReadTimeout:
                print('Reconnection...')
                self.listen()


Бот вполне корректно работает в ЛС, а также с одной беседой. Но как только количество бесед увеличивается, он начинает время от времени дублировать ответы. В чем может быть причина, и спасет ли сортировка бесед в БД?
  • Вопрос задан
  • 386 просмотров
Решения вопроса 1
true_pelmeshek
@true_pelmeshek Автор вопроса
Я нажал куда-то не туда и всё сломалось
Поменял ключ доступа, всё работает корректно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@arynyklas
Мне кажется потому что вы указали
elif message == 'да':
    return self.MEMES[message]
elif message in self.MEMES:
    return self.MEMES[message]

Пояснение :
Вы пишите что если человек отправляет 'да' то отправляется переменная message
Но ведь переменная message в данной ситуации будет ровна = 'да'
Понимаете?
Вы не должны указывать 'message' в методе отправки
Ответ написан
Ваш ответ на вопрос

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

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