import telebot;
r = [0, 0]
isLogin = 0
p = [0, 0]
bot = telebot.TeleBot('api');
@bot.message_handler(content_types = ['text'])
def get_text_messages(message):
if r[1] == 1:
code = message.text
r[1] = 0
elif r[0] == 1:
phone = message.text
r[0] = 0
elif message.text == "/phone":
bot.send_message(message.from_user.id, "Пожалуйста введите телефон")
rcsr(0)
elif message.text == "/login":
if p[0] != 0:
if p[1] != 0:
isLogin = 1
if isLogin == 0:
bot.send_message(message.from_user.id, message.first_name + " вы не заполнили следующие поля: ")
if p[0] == 0:
bot.send_message(message.from_user.id, "Телефон. Пожалуйста введите его (/phone)")
if p[1] == 0:
bot.send_message(message.from_user.id, "Код, для авторизации. Пожалуйста введите его (/code)")
else:
bot.send_message(message.from_user.id, "Вы почти авторизованы! ")
elif message.text == "/code":
bot.send_message(message.from_user.id, "Код для авторизации.")
rcsr(1)
else:
bot.send_message(message.from_user.id, "Для начала работы - авторизируйтесь. /login")
def updateData():
global phone;
global code;
scr = [phone, code]
print(scr[1])
print(scr[0])
return scr;
def rscr(s):
global r;
f = r
f[s] = 1
r = f
return f
if __name__ == '__main__':
bot.polling(none_stop=True)
2022-06-08 02:27:24,207 (util.py:65 WorkerThread1) ERROR - TeleBot: "UnboundLocalError occurred, args=("local variable 'isLogin' referenced before assignment",)
Traceback (most recent call last):
File "C:\Users\Яков\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\util.py", line 59, in run
task(*args, **kwargs)
File "C:/Users/Яков/PycharmProjects/hackBot/main.py", line 28, in get_text_messages
if isLogin == 0:
UnboundLocalError: local variable 'isLogin' referenced before assignment
"
Traceback (most recent call last):
File "C:/Users/Яков/PycharmProjects/hackBot/main.py", line 61, in <module>
bot.polling(none_stop=True)
File "C:\Users\Яков\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\__init__.py", line 389, in polling
self.__threaded_polling(none_stop, interval, timeout)
File "C:\Users\Яков\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\__init__.py", line 413, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\Яков\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\util.py", line 108, in raise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File "C:\Users\Яков\PycharmProjects\pythonProject\venv\lib\site-packages\six.py", line 719, in reraise
raise value
File "C:\Users\Яков\PycharmProjects\pythonProject\venv\lib\site-packages\telebot\util.py", line 59, in run
task(*args, **kwargs)
File "C:/Users/Яков/PycharmProjects/hackBot/main.py", line 28, in get_text_messages
if isLogin == 0:
UnboundLocalError: local variable 'isLogin' referenced before assignment
каждый вызов я ее личные переменные приравниваю к общим, изменяю так же
isLogin = 0
r = 1
def testf():
print(isLogin)
if isLogin == 0:
print(1)
testf()
isLogin = 0
r = 1
def testf():
if r == 0:
isLogin = 1 # тут ты объявляешь внутреннюю переменную, которая перекрывает глобальную.
if isLogin == 0:
print(1)
testf()
r = 1
def testf():
isLogin = 0
if r == 0:
isLogin = 1
if isLogin == 0:
print(1)
testf()
isLogin = 0
r = 1
def testf():
global isLogin
if r == 0:
isLogin = 1
if isLogin == 0:
print(1)
testf()