Деньги чистое зло
Гуру
(2624)
4 месяца назад
Спасибо, что предоставили код. Я проанализировал его и не вижу явных ошибок в логике добавления задания. Однако, давайте рассмотрим несколько моментов, которые могут помочь решить проблему:
1. Проверка сохранения данных:
После добавления задания, попробуйте вручную проверить файл 'family_tasks.json'. Убедитесь, что он создается и содержит корректные данные.
2. Отладочные сообщения:
Добавьте больше отладочных сообщений в функцию `process_task`, чтобы убедиться, что все этапы выполняются корректно:
```python
@bot.message_handler(state=UserStates.waiting_for_task)
def process_task(message):
print("Processing task...")
task = message.text
user_id = str(message.chat.id) # Преобразуем в строку
print(f"User ID: {user_id}")
data = load_data()
print(f"Loaded data: {data}")
if user_id not in data:
data[user_id] = {'tasks': [], 'stars': 0}
data[user_id]['tasks'].append({"task": task, "status": "Не выполнено"})
print(f"Updated data: {data}")
save_data(data)
bot.send_message(message.chat.id, "Задание добавлено")
bot.delete_state(message.chat.id, message.chat.id)
```
3. Проверка типов данных:
Убедитесь, что `user_id` всегда строка, так как JSON использует строковые ключи.
4. Обработка исключений:
Добавьте обработку исключений в функцию `process_task`:
```python
@bot.message_handler(state=UserStates.waiting_for_task)
def process_task(message):
try:
# ... (ваш существующий код) ...
except Exception as e:
print(f"Error in process_task: {e}")
bot.send_message(message.chat.id, "Произошла ошибка при добавлении задания. Попробуйте еще раз.")
finally:
bot.delete_state(message.chat.id, message.chat.id)
```
5. Проверка состояния:
Убедитесь, что состояние корректно устанавливается и удаляется:
```python
@bot.message_handler(commands=['add'])
def add_task(message):
print("Add task command received!")
bot.send_message(message.chat.id, "Введите задание:")
bot.set_state(message.chat.id, UserStates.waiting_for_task, message.chat.id)
print(f"State set for user {message.chat.id}")
```
6. Проверка версии библиотеки:
Убедитесь, что вы используете последнюю версию `pyTelegramBotAPI`.
Попробуйте внести эти изменения и запустить бота снова. Если проблема сохраняется, проверьте консольный вывод на наличие ошибок или необычного поведения. Это поможет лучше понять, на каком этапе возникает проблема.