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

Актриса театра имени Гоголя Майя Ивашкевич умерла на 100-м году жизни

Бывшего министра обороны Армении отпустили после задержания в Москве

"Дивный новый мир": ЕС конец, Францию ждёт ружьё на стене. Россия ищет своё место

Оформление визы в США: требования к россиянам



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

Новости от 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

Жена погибла под Новый год, а у мужа - женский смех по телефону. Трагедия разыгралась из мелочи в Мурманске

Лидер британской партии одной фразой описал Россию

На Новый год запускать салюты в Петербурге разрешили на специальных площадках

Замглавы Подольска исполнили мечты восьми детей из семей участников СВО

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

Путин и Собянин поздравят москвичей на 34 тыс. экранов метро в новогоднюю ночь

Актриса Ника Здорик: Мне нравятся яркие, харизматичные люди

Тренер Дроздов: "Краснодар" нацелен выиграть РПЛ

МТС подключила люки на Сахалине к системам «умного» города, чтобы их не воровали

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

В Грузии запатентовали местного Деда Мороза как интеллектуальную собственность

"Дивный новый мир": ЕС конец, Францию ждёт ружьё на стене. Россия ищет своё место

Новогодние праздники пройдут в парке усадьбы Фряново

Главные спортивные события 2024 года

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

Предприятия филиала «Северный» ООО «ЛокоТех-Сервис» подвели предварительные итоги работы в 2024 году.

«Двух, а лучше трёх»: Григорий Лепс мечтает о совместных детях с 18-летней возлюбленной

Японский Новый год в «Тропикана Парк»

Драгоценный рейтинг городов: «585*ЗОЛОТОЙ» присудила городам драгоценные статусы по итогам 2024 года

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

Стала известна сетка турнира ATP-250 в Брисбене, где сыграют Новак Джокович и Ник Кирьос

Тренер Медведева назвал Синнера и Алькараса самым большим вызовом для российского теннисиста

Открытие Игр в Париже, допинг Синнера и Свёнтек и заявление Федорищева: главные скандалы 2024 года в спорте

ATP опубликовала окончательный рейтинг теннисистов по призовым, заработанным в 2024 году

Moscow.media

Орловские власти вновь не смогли справиться с задачей обеспечения необходимыми лекарствами

Новогодняя...

Америка назвала своего главного врага! Кого сегодня боятся штаты?

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











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

Rss.plus






Бывшего министра обороны Армении отпустили после задержания в Москве

В Грузии запатентовали местного Деда Мороза как интеллектуальную собственность

\"Подозрительные обстоятельства\": смерти каких правителей России вызвали массу вопросов

Жена погибла под Новый год, а у мужа - женский смех по телефону. Трагедия разыгралась из мелочи в Мурманске