@rn8pro

Не могу вывести переменную из функции в python, как это сделать?

В функции callback_inline переменной добавляется единица, но почему то не выводится с помощью return, следовательно не могу ее потом запросить.
import telebot
from telebot import types

bot = telebot.TeleBot('token')

miners1 = 1
miners2 = 0
miners3 = 0
miners4 = 0
miners5 = 0
miners6 = 0

diamond = int(miners1) * 100 + int(miners2) * 300 + int(miners3) * 300 + int(miners4) * 300 + int(miners5) * 300 + int(
    miners6) * 300

balance = 10000

@bot.message_handler(commands=['start'],content_types=['Назад'])

# keyboard

def welcome(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("Магазин")
    item2 = types.KeyboardButton("Шахта")
    item3 = types.KeyboardButton("Баланс")
    item4 = types.KeyboardButton("Обменник")

    markup.add(item1, item2,item3,item4)

    bot.send_message(message.chat.id,
                     "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы быть подопытным кроликом.".format(
                         message.from_user, bot.get_me()),
                     parse_mode='html', reply_markup=markup)

    # Вопрос-Ответ

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    try:
        if call.message:
            if call.data == 'miner1':
                bot.send_message(call.message.chat.id, 'Отлично, Вы купили шахтера 1 уровня')
                miners1 += 1
            elif call.data == 'miner2':
                bot.send_message(call.message.chat.id, 'Отлично, Вы купили шахтера 2 уровня')
                miners2 +=1
            elif call.data == 'miner3':
                bot.send_message(call.message.chat.id, 'Отлично, Вы купили шахтера 2 уровня')
                miners3 +=1
            elif call.data == 'miner4':
                bot.send_message(call.message.chat.id, 'Отлично, Вы купили шахтера 2 уровня')
                miners4 +=1

            # remove inline buttons
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=" Как дела?",
                                  reply_markup=None)

            # show alert
            bot.answer_callback_query(callback_query_id=call.id, show_alert=False,
                                      text="ЭТО ТЕСТОВОЕ УВЕДОМЛЕНИЕ!!11")

    except Exception as e:
        print(repr(e))
        return miners1

@bot.message_handler(content_types=['text'])
def lalala(message):

    if message.chat.type == 'private':
        if message.text == 'Привет':
            bot.send_message(message.chat.id,
                             "Добро пожаловать, {0.first_name}!\nЯ - <b>{1.first_name}</b>, бот созданный чтобы ты мог заработать!".format(
                                 message.from_user, bot.get_me()),
                             parse_mode='html')
        elif message.text == 'Баланс':
            bot.send_message(message.chat.id, 'У Вас: '+ str(balance) + ' алмазов')

        elif message.text == 'Шахта':
            bot.send_message(message.chat.id, 'У Вас работает: ' + str(miners1) + ' шахтер 1 уровня')

        elif message.text == 'Магазин':

            markup = types.InlineKeyboardMarkup(row_width=2)
            item1 = types.InlineKeyboardButton("Шахтер 1 уровня", callback_data='miner1')
            item2 = types.InlineKeyboardButton("Шахтер 2 уровня", callback_data='miner2')
            item3 = types.InlineKeyboardButton("Шахтер 3 уровня", callback_data='miner3')
            item4 = types.InlineKeyboardButton("Шахтер 4 уровня", callback_data='miner4')
            markup.add(item1, item2,item3,item4)

            bot.send_message(message.chat.id,
                             'Приветствую вас, {0.first_name}!\nЗдесь Вы можете приобрести шахтеров и разные улучшения для вашей шахты!\n'.format(
                                 message.from_user, bot.get_me()), parse_mode='html', reply_markup=markup)
        elif message.text == 'Обменник':
            bot.send_message(message.chat.id, 'Тут Вы можете обменять свои ресурсы на деньги!')



        else:
            bot.send_message(message.chat.id, 'Неверная команда')





# Запуск
bot.polling(none_stop=True)
  • Вопрос задан
  • 553 просмотра
Решения вопроса 1
Нужно объявить изменяемые в функции переменные глобальными

def callback_inline(call):
    global miners1, miners2, miners3, miners4
        try:
            if call.message:
            ...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Dr_Elvis
@Dr_Elvis Куратор тега Python
В гугле забанен
return miners1
Тут 1 лишний отступ. Сделайте так:
except Exception as e:
    print(repr(e))
return miners1
Ответ написан
@FLEYZEN
я норм
return miners1

except Exception as e:
print(repr(e))
return miners1
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы