Каким образом избавиться от global в коде телеграмм бота?
Я только начинаю изучать Python. Пробую написать телеграмм бота с регистрацией, бот запрашивает у пользователя данные и сохраняет их в sql базу данных. Многие пишут, что global лучше не использовать, но я не могу понять как от них избавиться в данном случае
import telebot
import sqlite3
conn = sqlite3.connect('D:\python projects\Bot_registration\db/users.db', check_same_thread=False)
cursor = conn.cursor()
def db_table_val(name: str, surname: str, email: str, password: str):
cursor.execute('INSERT INTO users (name, surname, email, password) VALUES (?, ?, ?, ?)', (name, surname, email, password))
conn.commit()
bot = telebot.TeleBot("***")
@bot.message_handler(commands=['start'])
def start_message(message):
markup = types.InlineKeyboardMarkup(row_width=1)
item1 = types.InlineKeyboardButton("Регистрация", callback_data='registration')
markup.add(item1)
bot.send_message(message.chat.id, "Добро пожаловать! Нажмите кнопку регистрация для начала", reply_markup=markup)
@bot.callback_query_handler(func=lambda call: call.data == 'registration')
def registration(call):
bot.send_message(call.message.chat.id, 'Введите ваше имя:')
bot.register_next_step_handler(call.message, get_name)
def get_name(message):
global name
name = message.text
name1 = str(name)
bot.send_message(message.chat.id, f'Введите вашу фамилию:')
bot.register_next_step_handler(message, get_surname)
def get_surname(message):
global surname
surname = message.text
surname1 = str(surname)
bot.send_message(message.chat.id, f'Введите ваш адрес электронной почты:')
bot.register_next_step_handler(message, get_email)
def get_email(message):
global email
email = message.text
email1 = str(email)
bot.send_message(message.chat.id, f'Введите ваш пароль:')
bot.register_next_step_handler(message, get_password)
def get_password(message):
password = message.text
db_table_val(name=name , surname=surname , email=email , password=password)
bot.send_message(message.chat.id, 'Регистрация прошла успешно!')
bot.polling()
Источник: Stack Overflow на русском