Добавить новость

MR Group вошла в топ-3 лидеров офисного девелопмента Москвы

От сказки до ностальгии: выставка «Зима. Русский стиль. Взгляд из XXI века» в галерее Беляево

Хоккеисты воронежского «Бурана» закрыли год победой на московском льду

Его несколько раз спасали от самоубийства - новые подробности смерти экс-мужа Седоковой



Новости сегодня

Новости от TheMoneytizer

Обновление бота многопользовательский режим в Телеграмм

### Описание проекта
Существующий бот написан на Python и управляется через Telegram. Он выполняет торговые операции на спотовом рынке по заданным условиям. Управление ботом осуществляется через меню, созданное с использованием библиотеки aiogram.

Бот взаимодействует с биржей через API MEXC и поддерживает динамическое обновление настроек через JSON-файлы.

### Цель доработки
Добавить возможность предоставления доступа к боту до 100 пользователей Telegram. Пользователи должны быть авторизованы на основе их Telegram ID. Доступ предоставляется на ограниченный период, задаваемый вручную через файл JSON.

### Требования к доработке

#### 1. Структура данных для управления доступомСоздать файл JSON (например, `users.json`) для хранения информации о пользователях. Формат файла:```json[ { "id": 123456789, "api_key": "example_api_key", "start_date": "2024-01-01T00:00:00", "end_date": "2024-01-31T23:59:59", "name": "John Doe" }, { "id": 987654321, "api_key": "another_api_key", "start_date": "2024-01-01T00:00:00", "end_date": "2024-01-15T23:59:59", "name": "Jane Smith" }]```- `id`: Telegram ID пользователя (уникальный идентификатор).- `api_key`: API-ключ для взаимодействия с биржей MEXC.- `start_date` и `end_date`: временные метки начала и окончания доступа в формате ISO 8601.- `name`: имя пользователя для удобства.

#### 2. Авторизация пользователей- При запуске бота и при каждом новом сообщении проверять, авторизован ли пользователь.
- Проверка включает: 1. Наличие Telegram ID в файле `users.json`. 2. Проверку, что текущая дата находится в диапазоне между `start_date` и `end_date`.

Если пользователь не авторизован:
- Вывести сообщение: "Ваш доступ к боту неактивен. Обратитесь к администратору."
- Прекратить обработку дальнейших сообщений от данного пользователя.

#### 3. Изменение структуры существующего кода- Добавить функцию `is_user_authorized(user_id: int) -> bool`:```pythonimport jsonfrom datetime import datetime

def is_user_authorized(user_id: int) -> bool: try: with open('users.json', 'r') as file: users = json.load(file) for user in users: if user['id'] == user_id: now = datetime.utcnow() start_date = datetime.fromisoformat(user['start_date']) end_date = datetime.fromisoformat(user['end_date']) return start_date <= now <= end_date return False except (FileNotFoundError, json.JSONDecodeError): return False```
- Добавить вызов `is_user_authorized` в обработчики сообщений (например, в `handle_message`). Если пользователь не авторизован, отправить соответствующее уведомление.

#### 4. Логирование действий
- Логировать попытки неавторизованного доступа с указанием Telegram ID и временной метки.
- Добавить запись успешных авторизаций в лог-файл (например, `access_log.txt`). Формат:```[2024-01-01 12:00:00] User 123456789 authorized.[2024-01-01 12:05:00] Unauthorized access attempt by user 987654321.```

#### 5. Тестирование
- Проверить корректную работу авторизации при различных условиях:
- Пользователь есть в `users.json`, доступ активен.
- Пользователь есть в `users.json`, доступ истёк.
- Пользователя нет в `users.json`.
- Убедиться, что пользователи с активным доступом могут пользоваться функционалом бота без ограничений.

### Доступные функции и переменныеДля интеграции в существующий код доступны:
- **Функции:** - `handle_message`: основная функция для обработки сообщений. - `update_json_param(param_name, new_value)`: обновляет параметры в JSON-файлах. - `get_json_param(param_name, default_value=None)`: читает параметры из JSON-файлов. - `is_user_authorized(user_id: int) -> bool`: добавляемая функция для проверки авторизации пользователя.- **Глобальные переменные:** - `dp`: объект диспетчера aiogram. - `keyboard_main`, `keyboard_settings`: готовые клавиатуры для управления ботом.

### Ограничения
- Исходный код предоставляется частично. Работать нужно исключительно через указанные функции и добавленные новые функции.
- Не вносить изменения в существующие файлы бота, кроме указанных в задании.
- Внешние библиотеки не должны быть использованы, за исключением стандартных (например, `json`, `datetime`).

### Сроки выполнения
Ожидаемое время выполнения: любое.

### Результат работы
- Обновлённый бот с поддержкой авторизации до 100 пользователей.
- Файл `users.json` для управления пользователями.
- Лог-файл для мониторинга авторизаций.

Читайте на 123ru.net


Новости 24/7 DirectAdvert - доход для вашего сайта



Частные объявления в Вашем городе, в Вашем регионе и в России



Smi24.net — ежеминутные новости с ежедневным архивом. Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net. Мы не навязываем Вам своё видение, мы даём Вам срез событий дня без цензуры и без купюр. Новости, какие они есть —онлайн с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии. Smi24.net — живые новости в живом эфире! Быстрый поиск от Smi24.net — это не только возможность первым узнать, но и преимущество сообщить срочные новости мгновенно на любом языке мира и быть услышанным тут же. В любую минуту Вы можете добавить свою новость - здесь.




Новости от наших партнёров в Вашем городе

Ria.city

Где сегодня москвичи женятся, рожают и кто им в этом помогает — итоги Года семьи

Инвесторы получили 200 гектаров земли по льготной программе в Подмосковье за год

Праздничный десант. Спасатели поздравили пациентов больницы с Новым годом

Песков отказался комментировать заявления США по авиакатастрофе вблизи Актау

Музыкальные новости

В Казани сотрудники Росгвардии задержали мужчину, подозреваемого в краже товара из гипермаркета

Что работодатели должны знать о поколении Z?

Создание ИИ клипа. Создание клипа с помощью нейросети.

Кабмин запретил майнинг в 10 регионах России до 2031 года

Новости России

Инвесторы получили 200 гектаров земли по льготной программе в Подмосковье за год

Πpοκcи Τуpции в οппοɜиции Aбxaɜии

По БКД отремонтировали более 100 участков новогодних дорожных маршрутов – Марат Хуснуллин

Беременная Анна Заворотнюк вернулась в Россию: подробности

Экология в России и мире

Вкусно и безопасно: токсиколог Кутушов рассказал о том, как выбрать идеальные яйца для праздничного стола

Создание ИИ клипа. Создание клипа с помощью нейросети.

В Петербурге пройдет первый зимний городской радиофестиваль

Что работодатели должны знать о поколении Z?

Спорт в России и мире

Матс Виландер: «В 2025-м Синнер выиграет больше «Шлемов», чем Алькарас. Мой очень, очень, очень смелый прогноз – один из них оформит календарный Большой шлем»

Елена Рыбакина за час с лишним разобралась с соперницей

Джессика Пегула снялась с турнира WTA-500 в Брисбене из-за травмы

Стефанос Циципас: «В новом году жду чего-то свежего, нового. В прошлом было много взлетов и падений в плане эмоций»

Moscow.media

Дайджест новостей «Грузовичкоф» за декабрь

В Москве и Московской области жилищные условия за счет материнского капитала улучшили свыше 537,8 тысячи семей

Филиал № 4 ОСФР по Москве и Московской области информирует: Свыше 110 уроков пенсионной грамотности провели сотрудники Отделения СФР по Москве и Московской области

Утро перед ненастьем....











Топ новостей на этот час

Rss.plus






Певец Валерий Меладзе тайно вернулся в Россию

Синоптик предупредила о скачках давления в новогоднюю ночь в Московском регионе

Хоккеисты воронежского «Бурана» закрыли год победой на московском льду

Его несколько раз спасали от самоубийства - новые подробности смерти экс-мужа Седоковой