【发布时间】:2022-01-25 12:40:17
【问题描述】:
大家好,让我们直奔主题吧。上次我决定为我的机器人制作每个服务器的配置文件。我还想添加在机器人更新时向特定频道发送消息的命令,但我知道不是每个人都想收到此消息或想为此创建一个特殊频道,所以我在配置中添加了选项来更改它。 这就是配置文件现在的样子:
{
"update": [
{
"wlaczone": true,
"kanal": 757971193205882900
}
]
}
这就是命令的样子:
@bot.command()
@commands.check(user_is_me)
async def update(ctx):
print('1')
for server in bot.guilds:
print('2')
with open(f'serverSetting/{server.id}.json', 'r', encoding='utf-8') as a:
print('3')
d = json.load(a)
print(d)
print('4')
print(d["update"]["wlaczone"])
for w in d["update"]["wlaczone"]:
print(w)
print('5')
if w == True:
print('6.1')
c = d['update']['kanal']
print('7')
channel = discord.utils.get(bot.get_all_channels(), id=c)
print('8')
try:
print('9')
await channel.send("@everyone Bot dostał właśnie update! Sprawdź |changelog \nsory za ping xD\n~nitolar play")
print('10')
except Exception:
continue
else:
break
elif w == False:
print('6.2')
pass
并且命令在打印 4 号后停止工作。我不知道为什么会发生这种情况,因为这样的事情从未发生在我身上,但是当我删除 ["wlaczone"] 时它可以工作并打印此 {'wlaczone': True, 'kanal': 757971193205882900}。如果有人可以帮助我,那就太棒了。感谢您的帮助!
【问题讨论】:
-
d["update"]包含一个列表....不是花药字典。尝试d["update"][0]["wlaczone"]索引到列表中,然后是包含的 dict - 或者修复你的 json! -
此外,这应该提供错误消息和堆栈跟踪 - 类似于列表只能由整数索引的内容......为什么你忽略你得到的错误消息?
标签: python json python-3.x discord.py