@avtorlego

Почему не видит переменную токен в скрипте?

Есть скрипты :
если в 1 убрать 7 последних строчек , то все будет работать
fbot.py
import requests
import json
import time
from time import sleep
def set_token(new_token):
    global token
    token = new_token
def api(method, args):
    data = requests.get('https://api.vk.com/method/'+method+'?'+args+'&access_token='+token)
    return json.loads(data.text)
def send(argument):
    requests.get('https://api.vk.com/method/messages.send?user_id='+user_id+'&message='+argument+'&access_token='+token)
print("Выполняется запуск...")
sleep(1)
get_info = api("account.getProfileInfo","")
st = json.loads(get_info.text)
if("first_name" in st["response"][0]):
    print("Запуск выполнен успешно!")
else:
    print("Ошибка. Не валидный токен!")
    quit()

файл bot.py
import fbot as vk
vk.set_token("токен")

кидает ошибку:
Traceback (most recent call last):
File "C:\Users\nikit\Desktop\FoxyVKBOT\bot.py", line 1, in
import fbot as vk
File "C:\Users\nikit\Desktop\FoxyVKBOT\fbot.py", line 15, in
get_info = api("account.getProfileInfo","")
File "C:\Users\nikit\Desktop\FoxyVKBOT\fbot.py", line 9, in api
data = requests.get('https://api.vk.com/method/'+method+'?'+args+'&access_token='+token)
NameError: name 'token' is not defined
  • Вопрос задан
  • 641 просмотр
Решения вопроса 1
@nirvimel
Потому что токен задается vk.set_token("токен")после импорта. А во время импорта в fbot.py из строки 15 делается вызов api, где в строке 9 идет обращение к переменной token, которая на этот момент еще не задана.

Тут много разных вариантов решений. Например, можно взять весь статический код в fbot.py (те самые последние строки после объявления функций) и завернуть в отдельную функцию, которую можно вызывать из bot.py после вызова set_token.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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