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

25-летний житель Нижнего Новгорода погиб в ДТП

Телеведущий Андрей Норкин показал пародию на первого президента России Ельцина

Эксперт Парфентьев: западные компании будут возвращаться на российский рынок

Лукашенко рассказал, сколько «Орешников» готова разместить Беларусь





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

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

Более 4,2 тысячи квадратных метров шумозащитных экранов заменили в Москве в 2024 году

Песков: РФ видела требования Азербайджана извиниться за якобы сбитый ПВО Embraer

Спортсменка декабря: Александра Степанова (фото)

AZAL с 28 декабря приостановит полеты в ряд городов России

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

«Жду не дождусь дебюта за «Динамо» Подъяпольского»

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

В Мордовии представители Росгвардии вручили медали и удостоверения подшефным кадетам «Гвардейской смены»

Друг Тиммы заявил, что его телефон уничтожили из-за компромата на Седокову

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

Собянин: Около 90% пациентов могут записаться к терапевту сразу в день обращения

Новогодняя сказка «Бюро новогодних услуг» в ТРЦ «Нора»

Кот-пожарный Толик из Москвы получил первое специальное звание прапорщика

Спортсменка декабря: Александра Степанова (фото)

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

Бесплатная дегустация на фестивале «Московское чаепитие»

Рождественское путешествие

Эксперты «Будь Здоров» оценили проекты участников акселерационной программы Государственного университета управления «Технологии здоровой жизни 2.0»

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

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

Петкович: когда Алькарас плох, он чертовски ужасен. У него нет плана Б

Теннисистка Путинцева: решила выступать за Казахстан из-за лучших условий

Путинцева о том, как с травмой колена победила Швентек на «Уимблдоне»: «Думала: блин, пусть после этого матча вообще больше ничего не сыграю, но ее я сегодня обыграю»

Елена Рыбакина проводит 100-ю неделю подряд в топ-10 рейтинга WTA

Moscow.media

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

Беспроводной сканер штрих-кодов SAOTRON P05i промышленного класса

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

• https://dusil.org • Dusil Photography











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

Rss.plus






От конного маскарада до хоббихорсинга: чем удивило новогоднее цирковое шоу в КСК Emerald Stables

В Подмосковье поздравили кадет раменского «Гвардейского класса» с наступающим Новым годом

Более 4,2 тысячи квадратных метров шумозащитных экранов заменили в Москве в 2024 году

Москвичей попросили воздержаться от использования пиротехники в Новый год