Имеется некоторый бот, использующий 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()
Бот вполне корректно работает в ЛС, а также с одной беседой. Но как только количество бесед увеличивается, он начинает время от времени дублировать ответы. В чем может быть причина, и спасет ли сортировка бесед в БД?