无法让我的经济 discord.py 排行榜发挥作用
Cant make my economy discord.py leaderboard to work
我用 replit 和 discord.py 编写了这个机器人,但我无法让排行榜正常工作。不知道为什么。我按照 CodeWithSwastik 教程 ep 4 link -> https://www.youtube.com/watch?v=dI3_DWhfT8U
我想要的是做一个排行榜,显示前 5 名最有钱的人
我使用 json 文件作为数据库(我不推荐它,但我知道如何使用它所以我使用它)
json 一个人的例子 ->
"coins": 12253,
"job": "none",
"expirience": 0,
"inventory": [],
"bank": 10000
}
排行榜命令代码->
@bot.command(aliases=['lb'])
async def leaderboard(ctx, pepol_to_show = 5):
data = await get_bank_data()
lb = {}
total = []
for user in data:
name = int(user)
total_amount = data[user]["coins"] + data[user]["bank"]
lb[total_amount] = name
total.append(total_amount)
total = sorted(total,reverse=True)
em4 = discord.Embed(title = f"Top {pepol_to_show} Richest people", description = "Who has the most potatoes (Wallet + Bank)", color = discord.Colour.red())
index = 1
for amt in total:
id_ = lb[amt]
member = bot.get_usser(id_)
name = member.name
em4.add_field(name = f"{index}. {name}", value = f"{amt}", inline = False)
if index == pepol_to_show:
break
else:
index += 1
await ctx.reply(embed=em4)
async def get_bank_data():
with open("users.json", "r") as f:
data = json.load(f)
return data
当我 运行 lb 命令不一致时没有发送任何东西,我得到 0 个错误。不知道为什么
为什么这不起作用?我需要做什么来修复它?
- 这里有错字
member = bot.get_usser(id_)
。应该只是 get_user
。我测试过,否则代码工作正常。
- 您需要设置错误处理程序才能在使用
on_command_error
事件发送命令时查看错误
或者只是本地错误处理程序来查看问题所在
@leaderboard.error
async def leaderboard_error(ctx, error):
print(error)
print(type(error))
你可以在使用 traceback
模块
完成一些工作后获得整个回溯
我用 replit 和 discord.py 编写了这个机器人,但我无法让排行榜正常工作。不知道为什么。我按照 CodeWithSwastik 教程 ep 4 link -> https://www.youtube.com/watch?v=dI3_DWhfT8U
我想要的是做一个排行榜,显示前 5 名最有钱的人 我使用 json 文件作为数据库(我不推荐它,但我知道如何使用它所以我使用它) json 一个人的例子 ->
"coins": 12253,
"job": "none",
"expirience": 0,
"inventory": [],
"bank": 10000
}
排行榜命令代码->
@bot.command(aliases=['lb'])
async def leaderboard(ctx, pepol_to_show = 5):
data = await get_bank_data()
lb = {}
total = []
for user in data:
name = int(user)
total_amount = data[user]["coins"] + data[user]["bank"]
lb[total_amount] = name
total.append(total_amount)
total = sorted(total,reverse=True)
em4 = discord.Embed(title = f"Top {pepol_to_show} Richest people", description = "Who has the most potatoes (Wallet + Bank)", color = discord.Colour.red())
index = 1
for amt in total:
id_ = lb[amt]
member = bot.get_usser(id_)
name = member.name
em4.add_field(name = f"{index}. {name}", value = f"{amt}", inline = False)
if index == pepol_to_show:
break
else:
index += 1
await ctx.reply(embed=em4)
async def get_bank_data():
with open("users.json", "r") as f:
data = json.load(f)
return data
当我 运行 lb 命令不一致时没有发送任何东西,我得到 0 个错误。不知道为什么 为什么这不起作用?我需要做什么来修复它?
- 这里有错字
member = bot.get_usser(id_)
。应该只是get_user
。我测试过,否则代码工作正常。 - 您需要设置错误处理程序才能在使用
on_command_error
事件发送命令时查看错误
或者只是本地错误处理程序来查看问题所在
@leaderboard.error
async def leaderboard_error(ctx, error):
print(error)
print(type(error))
你可以在使用 traceback
模块