坐下来研究有关discord.py的信息0.16.12我对函数discord.Client.edit_role(服务器,角色,参数*)感兴趣我遇到了一个问题(一小时之前一切正常)
Ignoring exception in on_ready
Traceback (most recent call last):
File "C:\Users\ROG\Desktop\trash\dsbt\venv\lib\site-packages\discord\client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "C:/Users/ROG/Desktop/trash/dsbt/rainbown_rolle/testbd.py", line 10, in on_ready
await bot.edit_role(sr, rl, colour=discord.Colour(((rgb[0] << 16) + (rgb[1] << 8) + rgb[2])))
File "C:\Users\ROG\Desktop\trash\dsbt\venv\lib\site-packages\discord\client.py", line 2860, in edit_role
yield from self.http.edit_role(server.id, role.id, **payload)
File "C:\Users\ROG\Desktop\trash\dsbt\venv\lib\site-packages\discord\http.py", line 169, in request
print(data['retry_after'])
TypeError: string indices must be integers
机器人代码
import discord
token="token"
bot=discord.Client()
@bot.event
async def on_ready():
rgb = [255, 0, 161]
sr= discord.utils.find(lambda m: m.id == '403945874780061707',bot.servers)
rl = discord.utils.find(lambda m: m.name == "Обыватель", sr.roles)
print(type(sr),type(rl))
await bot.edit_role(sr, rl, colour=discord.Colour(((rgb[0] << 16) + (rgb[1] << 8) + rgb[2])))
bot.run(token)
看起来端点返回了一些只是文本的响应体,而不是json。 discord.py期望状态为429(速率有限)的回复是json,它可以变成字典。所以它试图像字典那样访问文本,但是失败了。
根据重写分支修复此问题的this commit,可能是您已被Cloudflare禁止。尝试将您的机器人更新到新版本,但您很可能必须在其他地方托管您的机器人,以解决他们所拥有的任何禁令。