Проблема с обработкой
Код:
import telebot
import os
import random
import json
import datetime
bot = telebot.TeleBot('тут токен, но я не буду его палить')
user_data_file = 'user_data.json'
def load_user_data():
try:
with open(user_data_file, 'r') as f:
return json.load(f)
except FileNotFoundError:
return {}
def save_user_data(user_data):
with open(user_data_file, 'w') as f:
for user_id, data in user_data.items():
if 'last_bonus' in data:
if data['last_bonus'] is not None:
data['last_bonus'] = data['last_bonus'].isoformat()
json.dump(user_data, f)
user_data = load_user_data()
@bot.message_handler(commands=['start', 'help', 'balance', 'bonus'], chat_types=['group', 'supergroup'])
def handle_group_command(message):
if message.text == '/start':
if message.from_user.id not in user_data:
user_data[message.from_user.id] = {'balance': 0, 'last_bonus': None}
save_user_data(user_data)
if message.text == '/start':
bot.send_message(message.chat.id, f"Привет! Я бот для нашей беседы. Чтобы узнать мои команды напиши /help")
elif message.text == '/help':
bot.send_message(message.chat.id, "/help - список команд, доступные в боте\n/balance - узнать свой баланс\n/bonus - получить бонусные дрочекойны")
elif message.text == '/balance':
bot.send_message(message.chat.id, f"Ваш баланс: {user_data[message.from_user.id]['balance']} дрочекойнов.")
elif message.text == '/bonus':
if give_bonus(message.from_user.id):
bot.send_message(message.chat.id, "Ты получил бонус!")
else:
bot.send_message(message.chat.id, "Бонус не может быть выдан, так как ещё не прошло 24 часа.")
@bot.message_handler(content_types=['text'], chat_types=['private'])
def handle_message(message):
if message.text == '/start':
if message.from_user.id not in user_data:
user_data[message.from_user.id] = {'balance': 0, 'last_bonus': None}
save_user_data(user_data)
bot.send_message(message.chat.id, f"Привет! Я бот для нашей беседы. Чтобы узнать мои команды напиши /help")
elif message.text == '/help':
bot.send_message(message.chat.id, "/help - список команд, доступные в боте\n/balance - узнать свой баланс\n/bonus - получить бонусные дрочекойны")
elif message.text == '/balance':
bot.send_message(message.chat.id, f"Ваш баланс: {user_data[message.from_user.id]['balance']} дрочекойнов.")
elif message.text == '/bonus':
if give_bonus(message.from_user.id):
bot.send_message(message.chat.id, "Ты получил бонус!")
else:
bot.send_message(message.chat.id, "Бонус не может быть выдан, так как ещё не прошло 24 часа.")
def give_bonus(user_id):
now = datetime.datetime.now()
if user_id in user_data:
if user_data[user_id]['last_bonus'] is None or (now - datetime.datetime.fromisoformat(user_data[user_id]['last_bonus'])).total_seconds() >= 86400:
user_data[user_id]['balance'] += random.randint(3, 15)
user_data[user_id]['last_bonus'] = now
save_user_data(user_data)
return True
return False
bot.polling(none_stop=True)
Не выводит сообщения в групповом чате, как фиксить? Что исправить/добавить? upd: так же при первом запуске создаётся файл users_data.json, а при следующем запуске сразу выдаёт ошибку:
Traceback (most recent call last):
File "c:\Users\Winner\PycharmProjects\pythonProject\popa.py", line 26, in <module>
user_data = load_user_data()
^^^^^^^^^^^^^^^^
File "c:\Users\Winner\PycharmProjects\pythonProject\popa.py", line 14, in load_user_data
return json.load(f)
^^^^^^^^^^^^
File "C:\Users\Winner\AppData\Local\Programs\Python\Python312\Lib\json\__init__.py", line 293, in load
return loads(fp.read(),
^^^^^^^^^^^^^^^^
File "C:\Users\Winner\AppData\Local\Programs\Python\Python312\Lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Winner\AppData\Local\Programs\Python\Python312\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Winner\AppData\Local\Programs\Python\Python312\Lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)