Помогите исправить ошибку при вычитании
код:
#!/usr/bin/python3
import telebot
bot = telebot.TeleBot(token='///')
mon = int(10000)
@bot.message_handler(commands=['start'])
def startJoin(message):
if not str(message.chat.id) in 'c://tgplay':
File = open('c://tgplay/{0}_money.py'.format(message.chat.id), "x+")
File.write('50000')
File.close
send_welcome = f'? Привет, <b>{message.from_user.first_name}</b>!\n\nP.S. Бот в стадии разработки.' + "\nДля помощи, используйте команду /help."
bot.send_message(message.chat.id, send_welcome, parse_mode='html')
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
if message.text == 'Работать':
for en in range(1):
ne = 10
qos = ne-1
bot.send_message(message.chat.id, '? Вы заработали ' + str(mon) + '$!\n⚡ Энергия: ' + str(qos), parse_mode='html')
File = open('c://tgplay/{0}_money.py'.format(message.chat.id), 'r')
str_numb = File.read()
File.close
numb = int(str_numb) + int(mon)
File = open('c://tgplay/{0}_money.py'.format(message.chat.id), 'w')
File.write(str(numb))
File.close
elif message.text == 'Баланс':
File = open('c://tgplay/{0}_money.py'.format(message.chat.id), 'r')
balance = File.read()
bot.send_message(message.chat.id, 'Ваш баланс: ' + balance + '$')
File.close
bot.polling(none_stop=True, interval=0)
Если увидели что то странное, значит это моя фантазия(код всё равно работает)
Ошибка(или как назвать, я не знаю) заключается с def'a (get_text_messages), а именно, с функцией range. Нужно чтобы при каждом запросе команды "Работать", писалась энергия с 10 до 1, но у меня пишется только:
Энергия: 9
И никак не уменьшается на единицу. Помогите сделать так, чтобы при каждом запросе выводилось на одну единицу меньше. Заранее, огромное спасибо!
Ответы (1 шт):
При каждом вызове get_text_messages с message.text равным 'Работать' вы заходите в цикл с одним проходом (range(1)) в котором будет инициализироваться ne=10 и qos всегда будет равен 9 (qos=ne-1).
- Уберите цикл
for en in range(1)(по аналогии сelif message.text == 'Баланс') - Храните энергию пользователя, например, также в файле, как вы делаете это балансом
- При каждом вызове
get_text_messagesсmessage.textравным'Работать'считывайте текущую энергию пользователя, вычитайте затраченную и обновляйте в файле
P.S. Ну и конечно, я бы заменил хранение информации о балансе/энергии пользователей хотя бы на sqlite