Прибавляется лишнее значение в базу данных
У меня есть система статистики в телеграм боте telebot. При любом сообщении в группе - в столбцы со статистикой в базе данных sqlite3 прибавляется +1 в колонку messages - bot_stats(основная статистика бота), users_stats(статистика пользователя в группе), groups(статистика беседы). В users_stats прибавляется +1, а в остальных +2. Почему прибавляется +2, я просмотрел код на повторы занесения значения в бд - их вроде нету?
@bot.message_handler(content_types=['text'])
def user_msg(message):
group_type = message.chat.id
group_id = message.chat.id
user_id = message.chat.id
user_nickname = message.from_user.username
if message.text == '8714290712094521':
bot.send_message(message.chat.id, text='1')
elif group_type > 0:
conn = sqlite3.connect('dba.db', check_same_thread=False)
cur = conn.cursor()
cur.execute('UPDATE bot_stats SET messages = messages+1 WHERE id=1')
conn.commit()
cur.close()
conn.close()
elif group_type < 0:
conn = sqlite3.connect('dba.db', check_same_thread=False)
cur = conn.cursor()
cur.execute('SELECT group_id FROM groups WHERE group_id = ("%s")' % group_id)
groups = cur.fetchall()
if len(groups) == 0:
cur.execute('UPDATE bot_stats set groups = groups+1 WHERE id=1')
cur.execute('INSERT INTO groups (group_id) VALUES ("%s")' % group_id)
conn.commit()
bot.send_message(message.chat.id, text='Запись создана')
else:
cur.execute('UPDATE groups set messages = messages+1 WHERE group_id=("%s")' % group_id)
conn.commit()
if message.text == '3428905140234951':
bot.send_message(message.chat.id, text='1')
else:
cur.execute('SELECT group_id, user_id FROM users_stats WHERE (group_id, user_id) = ("%s", "%s")' % (group_id, user_id))
user_stats = cur.fetchall()
conn.commit()
if len(user_stats) == 0:
cur.execute('INSERT INTO users_stats (group_id, user_id, nickname) VALUES ("%s", "%s", "%s")' % (group_id, user_id, user_nickname))
cur.execute('UPDATE users_stats SET messages = messages+1 WHERE (group_id, user_id) = ("%s", "%s")' % (group_id, user_id))
conn.commit()
else:
cur.execute('UPDATE users_stats SET messages = messages+1 WHERE (group_id, user_id) = ("%s", "%s")' % (group_id, user_id))
conn.commit()
cur.execute('UPDATE bot_stats SET messages = messages+1 WHERE id=1')
cur.execute('UPDATE groups SET messages = messages+1 WHERE group_id=?', (group_id,))
conn.commit()
cur.close()
conn.close()
Ответы (1 шт):
elif group_type > 0:
cur.execute('UPDATE bot_stats SET messages = messages+1 WHERE id=1')
conn.commit()
elif group_type < 0:
cur.execute('UPDATE groups set messages = messages+1 WHERE group_id=("%s")' % group_id)
conn.commit()
Скорее всего, в этих строчках возникает ошибка.
Когда group_type равно 1, столбцы messages в таблицах bot_stats и groups обновляются. При любом сообщении в группе с group_type больше 0, будет прибавляться +2 к столбцу messages в базе данных (по одному для bot_stats и groups).