首页 > 解决方案 > 我如何在 discord.py discord bot 的不和谐排行榜中提及人

问题描述

我一直在使用 discord.py 开发一个不和谐机器人,但在尝试显示排行榜时遇到了一些麻烦。

排行榜目前看起来像: 在此处输入图像描述

但是,我希望用户 ID 显示提及。这是我的 Python 代码:

import discord 
from discord.ext import commands
import json
import os

os.chdir('My File Path')

@client.command(aliases = ["lb"])
async def leaderboard(ctx,x = 5):
    users = await get_bank_data()
    leader_board = {}
    total = []
    for user in users:
        name = int(user)
        total_amount = users[user]["wallet"] + users[user]["bank"]
        leader_board[total_amount] = name
        total.append(total_amount)

    total = sorted(total,reverse=True)    

    em = discord.Embed(title = f"Top {x} Richest People" , description = "This is decided on the basis of raw money in the bank and wallet",color = discord.Color(0xfa43ee))
    index = 1
    for amt in total:
        id_ = leader_board[amt]
        member = client.get_user(id_)
        memberName = f"<@{user}>" #Here is where I'm having trouble
        em.add_field(name = f"{index}. {memberName}" , value = f"{amt}",  inline = False)
        if index == x:
            break
        else:
            index += 1

    await ctx.send(embed = em)


async def get_bank_data():
    with open("main-bank.json", "r") as f:
        users = json.load(f)

    return users

这是我的 json 文件代码:

{"User ID of someone": {"wallet": 66.0, "bank": 2000} "User ID of someone": {"wallet": 0, "bank": 1969}, "User ID of someone": {"wallet": 10, "bank": 0}, "User ID of someone": {"wallet": 89, "bank": 0}}

我试过这样做memberName = member.mention,但这似乎不起作用。

我的 Python 版本是 3.8.5,我在 MacOS Catalina 上运行。

标签: pythondiscorddiscord.py

解决方案


因此,基本上,您不能在嵌入字段的名称中提及用户,而是可以将值与嵌入的名称进行切换并获得满意的结果。您的代码将如下所示 -

for amt in total:
        id_ = leader_board[amt]
        member = client.get_user(id_)
        memberName = f"<@{user}>" #Here is where I'm having trouble
        em.add_field(value = f"{index}. {memberName}" , name = f"{amt}",  inline = False)
        if index == x:
            break
        else:
            index += 1

推荐阅读