Почему код пропускает неправильные варианты и добавляет их в бд?

Бот проверяет сообщение от пользователя, ищет там группу из списка, перебирая каждую в списке test_list. Если в сообщении от пользователя есть группа из списка, то он создает в базе данных database.db запись с сообщение и группой. Если группа не указана в сообщении, то должно пропускаться, но в моем случае он создает записи со всеми группами, даже если группа не указана. Как решить эту проблему?

Код:

for event in longpool.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:
            msg = event.text.lower()
            id = event.user_id
            send_some_msg(id, 'привет')

            test_list = ['40ТЕСТ8381', '41ТЕСТ8381', '42ТЕСТ8381', '43ТЕСТ8381', '44ТЕСТ8381', '45ТЕСТ8381', '46ТЕСТ8381', '47ТЕСТ8381']

            # checking if string contains list element
            for i in test_list:
                if msg.find(i) != 1:
                    conn = sqlite3.connect('database.db', check_same_thread=False)
                    cur = conn.cursor()
                    cur.execute('INSERT INTO adverts (message, study_group) VALUES (?, ?)', (msg, i))
                    conn.commit()
                    cur.close()
                    conn.close()
                else:
                    print('-')

                print(msg)

Ответы (1 шт):

Автор решения: evgen_dev

Метод string.find(needle) возвращает -1, в случае, если подстрока не найдена.

txt = "Hello, welcome to my world."
x = txt.find("text")
print(x) #-1

Вы же сравниваете результат с положительной единицей и условие всегда будет True, когда подстрока не найдена (или найдена в позиции 1).

Т.е. правильно будет так:

if msg.find(i) != -1:
   conn = sqlite3.connect('database.db', check_same_thread=False)
   cur = conn.cursor()
   cur.execute('INSERT INTO adverts (message, study_group) VALUES (?, ?)', (msg, i))
   conn.commit()
   cur.close()
   conn.close()
else:
   print('-')
→ Ссылка