【问题标题】:discord bot: client.start(Token) not working不和谐机器人:client.start(Token) 不工作
【发布时间】:2021-01-19 05:52:25
【问题描述】:

试图运行一个不和谐的机器人

这是代码

import discord
from discord.ext import commands

TOKEN: str = "Token"

client = commands.Bot(command_prefix = '.')

@client.event
async def on_ready():
    print('Connected')

client.start(TOKEN)

我收到此错误:

C:\Users\josep\AppData\Local\Programs\Python\Python38\python.exe C:/Users/josep/Desktop/unsettler/unsettler.py C:/Users/josep/Desktop/unsettler/unsettler.py:12:RuntimeWarning:从未等待协程'Client.start' client.start(令牌) RuntimeWarning: 启用 tracemalloc 以获取对象分配回溯

我尝试使用 client.run 而不是 client.start,但它会触发更多错误。我该如何解决这个问题?

编辑:我从客户端运行得到的错误:

Traceback(最近一次调用最后一次): 文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\http.py”,第 291 行,在 static_login 数据 = 等待 self.request(Route('GET', '/users/@me')) 文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\http.py”,第 245 行,在请求中 引发 HTTPException(r, 数据) discord.errors.HTTPException: 401 Unauthorized (error code: 0): 401: Unauthorized

上述异常是以下异常的直接原因:

Traceback(最近一次调用最后一次): 文件“C:/Users/josep/Desktop/unsettler/unsettler.py”,第 12 行,在 客户端运行(令牌) 运行中的文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py”,第 708 行 返回future.result() 运行程序中的文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py”,第 687 行 等待 self.start(*args, **kwargs) 文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py”,第 650 行,开始 等待 self.login(*args, bot=bot) 文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py”,第 499 行,登录 等待 self.http.static_login(token.strip(), bot=bot) 文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\http.py”,第 295 行,在 static_login raise LoginFailure('Improper token has been pass.') from exc discord.errors.LoginFailure:传递了不正确的令牌。 异常被忽略:del at 0x00000216FCD9FDC0> 回溯(最近一次通话最后): del 中的文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\asyncio\proactor_events.py”,第 116 行 自我关闭() 文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\asyncio\proactor_events.py”,第 108 行,关闭 self._loop.call_soon(self._call_connection_lost,无) 文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py”,第 711 行,在 call_soon self._check_closed() _check_closed 中的文件“C:\Users\josep\AppData\Local\Programs\Python\Python38\lib\asyncio\base_events.py”,第 504 行 raise RuntimeError('事件循环已关闭') RuntimeError: 事件循环已关闭

【问题讨论】:

  • 您能说明您从client.run 收到的错误消息吗? client.runclient.start 不是等效函数,因为 client.start 需要手动初始化到事件循环中,而 client.run 抽象了该过程并使其更易于使用。

标签: python discord discord.py


【解决方案1】:

根据client.run 的回溯,底部的RuntimeError 源自此异常:

LoginFailure('Improper token has been passed.')

基本上,检查您是否将正确的令牌复制到TOKEN 变量中。当您转到 developer portal 并单击您的应用程序时,请确保您复制 bot 令牌(您将在左侧的 Bot 选项卡中找到它)而不是客户端密码或客户端 ID .

【讨论】:

  • 非常感谢!原来我使用的是客户端密码而不是令牌。
猜你喜欢
  • 2021-01-17
  • 2018-08-24
  • 2018-05-19
  • 2021-11-08
  • 2018-03-20
  • 2021-07-08
  • 2021-04-02
  • 2020-07-03
  • 2020-09-23
相关资源
最近更新 更多