@garant_ot_manuki

Как решить эту проблему?

пишу телеграм бота с генерацией дс гифтов
import telebot, random, string 
from telebot import types


token = ""

bot = telebot.TeleBot(token)

@bot.message_handler(commands = ['start'])
def start(message) :
	markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
	item = types.KeyboardButton("Генерировать ")

	markup.add(item)

	bot.send_message(message.chat.id, "Я бот для управления киви кошельком, я пока что в разработке" , reply_markup = markup)

#генерация
@bot.message_handler(content_types = ["text"])
def markupBalance(message) :
	if message.chat.type == "private" :
		if message.text == "Генерировать " :
			bot.send_message(message.chat.id, "Введите кол-во генераций")
			if (message.text).isdigit():
				amount = (int(message.text))

			value = 1

			while value < amount:
				code = "https://discord.gift/" + ('').join(random.choices(string.ascii_letters + string.digits, k=16))
				#f = open('Codes.txt', "a+")
				#f.write(f'{code}\n')
				#f.close()
				bot.send_message(message.chat.id, f'[GENERATED] {code}')
				value += 1
		else :
			markup1 = types.InlineKeyboardMarkup(row_width=1)
			item1 =  types.InlineKeyboardButton("Баланс", callback_data = 'balance')
			markup1.add(item1)

			bot.send_message(message.chat.id, "Пиши командами, я не понимаю иначе", reply_markup=markup1)

#не обращайте внимание
def generate(message) :
	if (message.text).isdigit():
		amount = (int(message.text))
	value  = 1
	while value <= amount:
		code = "https://discord.gift/" + ('').join(random.choices(string.ascii_letters + string.digits, k=16))
		#f = open('Codes.txt', "a+")
		#f.write(f'{code}\n')
		#f.close()
		bot.send_message(message.chat.id, f'[GENERATED] {code}')
		value += 1

bot.polling()

пишет вот эту ошибку
UnboundLocalError: local variable 'amount' referenced before assignment
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
amount объявляется только при выполнении условия if (message.text).isdigit():
Так что если в message не число, то будет ошибка. Тут уже на вкус и цвет, либо игнорировать такое, либо делать значение по умолчанию. либо просить пользователя ввести число
Ответ написан
solotony
@solotony
покоряю пик Балмера
if (message.text).isdigit():
    amount = (int(message.text))


что это за дичь ?

надо использовать

try: ... except:
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы