#python
Вопрос:
В def __ init __ я поставил токен и идентификатор канала, а в def main я использовал их в команде if, и оба они создали ошибку, что они не определены. Как это изменить? Есть ли способ вспомнить их в основном?
import requests
import sys
class Bonk:
def __init__(self, token, channel_id, message):
self.token = token
self.channel_id = channel_id
self.message = message
self.headers = {'Authorization': token}
def _generate_message(self, m1):
return m1
def execute(self):
return requests.post(f'https://discordapp.com/api/v6/channels/{self.channel_id}/messages', headers=self.headers, json={'content': self._generate_message(self.message)})
def main():
if len(sys.argv) == 99999:
print(f'Usage: py {sys.argv[0]} <TOKEN> <CHANNEL ID> "MESSAGE"')
sys.exit()
if token == 0:
print('token')
token = input()
if channel_id == 0:
print('channel_id')
channel_id = input()
message = 0
if message == 0:
print('message')
message = input()
if __name__ == '__main__':
main()
Комментарии:
1. Пожалуйста, обновите свой вопрос с помощью полной обратной трассировки ошибок.
2. Я понятия не имею, о чем ты говоришь. Возможно, если бы вы рассказали нам о переменных, о которых говорите, и предоставили более четкое описание проблемы, с которой вы столкнулись, кто-нибудь смог бы вам помочь.
3. @CryptoFool: Проблема, с которой столкнулась операция, совершенно ясна. Проблема, с которой мы сталкиваемся, состоит в том, чтобы убедить ОП раскрыть достаточно подробностей, чтобы это стало ясно всем остальным.
4. Ну, в нем не определен «токен»
main
, и также нет «идентификатора канала». Вы ожидали, что эти имена будут относиться к атрибутамBonk
экземпляра, который вы никогда не создавали? Возможно, вам стоит поискать введение в Python.5. Все ваши переменные находятся внутри функций. Это хорошее начало. К сожалению, переменные внутри функций находятся в разных областях, поэтому создаются внутри функций и удаляются при выходе из функции. Возможно, вы хотели передать переменные в качестве параметров функциям.
Ответ №1:
if __name__ == '__main__':
main()
используется для запуска функции main() при извлечении скрипта из командной строки
Теперь представьте, что вы запускаете функцию из оболочки, вы не даете ей никаких аргументов, она не может определить токен и идентификатор канала по своему значению
Ваш класс никогда не будет прочитан, если вы не создадите его экземпляр
Вам нужно иметь что-то вроде
bonk = Bonk(token=1234,channel_id=5678,message='message')
И тогда вы сможете использовать
if bonk.token == 0:
your code