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

Более 3,5 тыс жителей Балашихи уже посетили врачей в новой поликлинике в Саввино

В храме Живоначальной Троицы в Конькове установили памятник святителю Гавриилу

Врач Андрян: новогодние салаты сложны для пищеварительной системы человека

В Москве мужчина пытался сжечь полицейскую машину и был пойман





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

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

В январе температура на большей территории РФ будет около нормы либо выше

Певца Шарлота* приговорили к 5,5 года за реабилитацию нацизма

Правительство Азербайджана сделало заявление по поводу падения самолета в Казахстане

Daxak после победы над командой Перданчика: «Хайп закончился»

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

Певица из Невеля стала призером конкурса «Россия, музыка, стихи - моя стихия»

«Россети Новосибирск» напомнили о правилах электробезопасности на праздниках

Митрофанов: «Официальные лица УЕФА прекрасно видят качественный уровень организации на турнирах в России»

В Московской области при силовой поддержке ОМОН 'Пересвет" Росгвардии задержаны подозреваемые в разбойном нападении на пенсионерку

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

Рябков: РФ готова к разным вариантам событий после инаугурации Трампа

Daxak после победы над командой Перданчика: «Хайп закончился»

Туман и гололедица в Москве: советы МЧС для водителей на 28 декабря

Скончался замгендиректора "Союз Маринс Групп" Вячеслав Каныгин

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

В Москве прошла международная премия «The Women’s Business Awards - 2024»

СЛД «Сольвычегодск» прошло ресертификацию системы менеджмента качества (СМК)

Надолго и всерьез: «детский» формат ГПМ Радио запущен в 30 городах

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

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

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

Даниил Медведев обошёл Пита Сампраса по сумме заработанных за карьеру призовых

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

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

Moscow.media

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

Больше половины опрошенных автомобилистов поддержали повышение штрафа за езду без ОСАГО

Хулиганская выходка жителя Орловской области обернулась реальным сроком

Пьяный орловчанин не смог вылететь из Нового Уренгоя











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

Rss.plus






Певца Шарлота* приговорили к 5,5 года за реабилитацию нацизма

В Челябинской области рассказали о расписании междугородних автобусов в праздники

Рябков: РФ готова к разным вариантам событий после инаугурации Трампа

Павел Чинарёв: «Актерство — это гонка, и я не знаю, куда она меня заведет дальше»