Ваша идея использовать MAC-адрес для авторизации — интересное решение. Основная проблема, о которой вы упоминаете, связана с тем, что по нажатию кнопки "Разрешить" вы не наблюдаете ожидаемого поведения (добавление MAC-адреса в файл). Давайте разберёмся, как можно улучшить ваш код, чтобы решение проблемы стало возможным.
1. **Отправка уведомления в Telegram**: Убедитесь, что вы правильно обрабатываете ссылку для API Telegram внутри функции `notification`. Проверьте правильность добавления токена и идентификатора чата.
2. **Обработка нажатий кнопок**: Когда пользователь нажимает кнопку, Telegram отправляет callback-запрос на ваш сервак (или URL). Вам нужно создать механизм для обработки этих запросов. Обычно это делается через веб-хук или периодический опрос (polling).
Вот пример общего подхода:
### 1. Убедитесь, что вы правильно обрабатываете callback-запросы:
```python
from flask import Flask, request
app = Flask(__name__)
# Ваш код...
@app.route('/callback', methods=['POST'])
def handle_callback():
data = request.get_json()
if 'callback_query' in data:
callback_data = data['callback_query']['data']
# Обработка нажатия кнопки
handle_telegram_response(callback_data)
return '', 200
```
### 2. Обработчик callback:
Измените вашу функцию `handle_telegram_response`, чтобы в ней добавлялся MAC-адрес в файл.
```python
def handle_telegram_response(callback_data):
action, mac = callback_data.split(":")
if action == "allow":
add_mac(mac) # Добавляем MAC-адрес в файл
# Отправка подтверждения в Telegram
message = f"MAC-адрес {mac} был разрешен."
send_confirmation_message(message)
elif action == "deny":
# Обработка отказа
message = f"MAC-адрес {mac} был отклонен."
send_confirmation_message(message)
def send_confirmation_message(message):
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
data = {"chat_id": CHAT_ID, "text": message}
requests.post(url, json=data)
```
### 3. Настройка вебхуков:
Не забудьте настроить вебхуки для Telegram, чтобы он знал, куда отправлять запросы после нажатия на кнопку. Это можно сделать с помощью запроса к Telegram API:
```python
url = f"https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url=https://<ваш_домен>/callback"
requests.get(url)
```
### 4. Запуск сервера:
Запустите Flask сервер, чтобы он мог принимать запросы от Telegram.
```python
if __name__ == "__main__":
app.run(port=5000) # или любой другой порт
```
### 5. Проверьте наличие ошибок:
После внесения всех изменений проведите отладку кода, чтобы убедиться, что нет ошибок, и вы обрабатываете события корректно.
Эти шаги помогут реализовать авторизацию по MAC-адресу, а также корректно обрабатывать нажатия кнопок в вашем Telegram-боте.