为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决discord.py中的身份验证错误

如何解决discord.py中的身份验证错误

泛舟湖上清波郎朗 2023-09-05 20:37:13
我正在使用discord.py 制作discord 机器人。但是当我打开机器人时,它收到错误discord.errors.ConnectionClosed:WebSocket连接已关闭:代码= 4004(私人使用),原因=身份验证失败。有什么办法可以解决这个问题吗?我已经尝试过生成新的代币,或者制作新的机器人。我现在使用的代码之前运行成功。当我在其他计算机(没有相同的IP)上运行此代码时,它可以正常工作。我怎么解决这个问题?import asyncioimport discordapp = discord.Client()def get_token(): # Get tokens from key.key    global token # This part works properly    f = open("Key.key", "r")    token = str(f.readline())@app.eventasync def on_ready(): #Login Part    print("Logining to : ")    print(app.user.name)    print(app.user.id)    print("==========")    game = discord.Game("Bot is working properly!")    await app.change_presence(status=discord.Status.online, activity=game)@app.eventasync def on_message(message):    if message.author.bot:        return None    if message.content == "!hello":        await message.channel.send("hello?")get_token()app.run(token)这是我的源代码,下面是回溯  File "d:\Code\Project\discord_bot\Koi_Bot_Discord\Main.py", line 30, in <module>    app.run(token)  File "D:\Python\lib\site-packages\discord\client.py", line 598, in run    return future.result()  File "D:\Python\lib\site-packages\discord\client.py", line 579, in runner    await self.start(*args, **kwargs)  File "D:\Python\lib\site-packages\discord\client.py", line 543, in start    await self.connect(reconnect=reconnect)  File "D:\Python\lib\site-packages\discord\client.py", line 457, in connect    await self._connect()  File "D:\Python\lib\site-packages\discord\client.py", line 421, in _connect    await self.ws.poll_event()  File "D:\Python\lib\site-packages\discord\gateway.py", line 476, in poll_event    raise ConnectionClosed(exc, shard_id=self.shard_id) from excdiscord.errors.ConnectionClosed: WebSocket connection is closed: code = 4004 (private use), reason = Authentication failed.
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

我建议使用环境变量,但如果您坚持从文件中读取,请尝试:

def get_token(): # Get tokens from key.key

    with open("Key.key", "r") as f:

        return f.readline().strip()

...


app.run(get_token())

您可能会从 中获取换行符readline,因此strip将其删除,但让函数返回您的标记是更好的做法。


查看完整回答
反对 回复 2023-09-05
  • 1 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信