Discord.py (переписать): обработка ошибки «неправильный токен» в функции - PullRequest
0 голосов
/ 17 июня 2019

Мне кажется, что мне не хватает простого способа решения этой проблемы, но я не могу найти способ справиться с ошибкой discord.errors.LoginFailure: Improper token has been passed..То, что я пытаюсь сделать, это запустить функцию, которая по сути запускает бота и повторяется, если он сталкивается с какими-либо ошибками (с try: и except:) и если он ловит ошибку «неправильный токен», то измените настройку вмой код и повторите его.

Я считаю, что происходит то, что попытка / исключение не перехватывает ошибку и останавливает программу (печатая всю ошибку в процессе).Я попробовал несколько быстрых решений, таких как превращение функции в оператор while, и пока она не достигнет конца программы, она будет повторяться, однако, не уловив ошибки, я не смогу продолжить любой код.

Myкод запутан и связан с большим количеством переменных, которые были определены ранее в этом большом файле python, поэтому я не буду показывать всю свою функцию.

Вот упрощенная версия:

def code(mainText):
    mainLines = mainText.split("\n")
    # Do some stuff editing mainText
    final = "\n".join(mainLines)
    try:
        exec(final, globals())
    except Exception as e:
        print(str(e))
        # edit 'final' a bit
        exec(final, globals())

Полное сообщение об ошибке:

Task exception was never retrieved
future: <Task finished coro=<Client.start() done, defined at E:\DiscordBot\lib\site-packages\discord\client.py:526> exception=LoginFailure('Improper token has been passed.')>
Traceback (most recent call last):
  File "E:\DiscordBot\lib\site-packages\discord\http.py", line 258, in static_login
    data = await self.request(Route('GET', '/users/@me'))
  File "E:\DiscordBot\lib\site-packages\discord\http.py", line 222, in request
    raise HTTPException(r, data)
discord.errors.HTTPException: 401 UNAUTHORIZED (error code: 0): 401: Unauthorized

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "E:\DiscordBot\lib\site-packages\discord\client.py", line 542, in start
    await self.login(*args, bot=bot)
  File "E:\DiscordBot\lib\site-packages\discord\client.py", line 400, in login
    await self.http.static_login(token, bot=bot)
  File "E:\DiscordBot\lib\site-packages\discord\http.py", line 262, in static_login
    raise LoginFailure('Improper token has been passed.') from exc
discord.errors.LoginFailure: Improper token has been passed.

На момент написания этой статьи я обнаружил, что «Исключение задачи никогда не получено», это что-то важное или это обычная ошибка «неправильного токена»?

Спасибо, заранее извините за мои плохие методы кодирования и отсутствие опыта использования переполнения стека.

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Является ли ваш токен строкой?Вы получили это с портала разработчиков Discord?то есть вы уверены, что это правильный токен?

Убедитесь, что BOT_TOKEN является строкой и ваш токен действителен

0 голосов
/ 07 июля 2019

Попробуй это. Я сам не пробовал. Это мой лучший ответ относительно того, что я могу понять из вашей проблемы и сообщения об ошибке:

#Put this at the bottom of your .py file
try:
    bot.run(BOT_TOKEN)
except discord.errors.LoginFailure as e:
    print("Login unsuccessful.")
...