Подсчёт количества сообщений от пользователя в телеграмм боте
Хочу подсчитать сколько раз пользователи отправляли сообщения моему боту (в том числе и нажатий на кнопки).
Можно ли это реализовать использую обычную глобальную переменную-счётчик в функции обработчика? И если да, то как?
Ответы (2 шт):
Можно использовать JSON.
Сохранять туда id пользователя и count messages.
count += 1 делать когда пришло сообщение(ну и проверку на id).
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.