Подсчёт количества сообщений от пользователя в телеграмм боте

Хочу подсчитать сколько раз пользователи отправляли сообщения моему боту (в том числе и нажатий на кнопки).

Можно ли это реализовать использую обычную глобальную переменную-счётчик в функции обработчика? И если да, то как?


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

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

Можно использовать JSON.
Сохранять туда id пользователя и count messages.
count += 1 делать когда пришло сообщение(ну и проверку на id).

→ Ссылка
Автор решения: piece0f
counter = {} # {user_id: int}

@bot.message_handler()
def blabla():
    global counter
    ...some code...
    counter[message.from_user.id] = counter.get(message.from_user.id, 0) + 1

@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    global counter
    ...some code...
    counter[call.message.from_user.id] = counter.get(call.message.from_user.id, 0) + 1

Насчет второго counter'a не уверен, но если не будет работать - напишите в комменты, посмотрю как сделать.

Объяснение:
Мы создаем словарь, в котором для каждого id пользователя считается кол-во отправленных им сообщений. counter.get(.from_user.id, 0) нужна для того, чтобы если этот пользователь еще не отправлял сообщений не вылазила ошибка, а возвращался default, равный 0.

→ Ссылка