Как автоматически изменить переменную после определенного времени?

Как можно автоматически деавторизовать пользователя в телеграмм боте после определенного периода бездействия, если у меня есть список пользователей, у которых я меняю статусы на онлайн?
  • 12 апреля 2024 г. 2:29
Ответы на вопрос 1
Для автоматического изменения переменной после определенного времени в Python можно использовать модуль `threading`. Например, можно создать функцию, которая будет изменять переменную через определенное количество времени с помощью метода `Timer`:

```python
import threading

# Функция, которая изменяет переменную после определенного времени
def change_variable():
    global my_var
    my_var = "новое значение"
    print("Переменная изменена")

# Исходная переменная
my_var = "старое значение"

# Запуск функции через 5 секунд
timer = threading.Timer(5, change_variable)
timer.start()

print("Ожидание...")
```

Чтобы автоматически деавторизовать пользователя в телеграмм боте после определенного периода бездействия, можно использовать тот же подход с модулем `threading`. Например, вы можете создать функцию для деавторизации пользователя и запускать ее через определенное время после его последнего действия. Вам также может понадобиться сохранять время последнего действия пользователя в вашем списке пользователей.

```python
import threading

# Функция для деавторизации пользователя
def deauthorize_user(user_id):
    # Деавторизация пользователя
    print(f"Пользователь {user_id} был деавторизован")

# Список пользователей с временем последнего действия
users_activity = {"user1": 0, "user2": 0, "user3": 0}

# Функция для обновления времени последнего действия пользователя
def update_activity(user_id):
    users_activity[user_id] = 0

# Запуск обновления времени через каждые 30 секунд
def check_activity():
    for user_id, last_activity in users_activity.items():
        users_activity[user_id] += 1  # Увеличиваем время бездействия пользователя
        if users_activity[user_id] >= 3:  # Проверяем, если прошло 1,5 минуты бездействия
            deauthorize_user(user_id)  # Деавторизуем пользователя
    threading.Timer(30, check_activity).start()  # Повторяем проверку через 30 секунд

# Запускаем проверку на бездействие
check_activity()

# Ваш код бота здесь...
```

Это простой пример, который можно доработать и расширить в зависимости от нужд вашего проекта.
Похожие вопросы