簡體   English   中英

(discord.py) 從 JSON 文件中獲取用戶的最后一條消息,而不指定名稱/ID

[英](discord.py) Get user's, last message from a JSON file without specifying the name/id

我有一個users.json文件,如果他在房間里寫,它會存儲用戶的 id 和lmessage (當前日期、時間)。

{"5314934047066510132": {"lmessage": "2021-04-21 10:21:01"}}

如何在不指定用戶名或任何內容的情況下獲取所有這些 ID 和屬於該 ID 的lmessage

目前,如果我指定用戶名,我可以通過命令獲取用戶的lmessage

@client.command()
async def lastmess(ctx, member: discord.Member = None):
    id = member.id
    with open('users.json', 'r') as f:
        users = json.load(f)
    lastmessage = users[str(id)]['lmessage']
    await ctx.send(f'{member} Last message: {lastmessage}!')

如果我正確理解您的問題,您只想遍歷 JSON 數據中的所有鍵值對。 如果是這樣,您可以使用各種可用的字典方法:

with open("users.json") as file:
    data = json.load(file)

# Get all keys (user IDs)
user_ids = list(data.keys())   # OR list(data)

# Get all values (last message dictionary)
last_messages = list(data.values())

# Get all keys and values tuples
ids_and_last_messages = list(data.items())

# Get all last message dates
last_message_dates = [uid["lmessage"] for uid in data.values()]

我不知道您希望 output 結果如何,但這是如何在不指定用戶的情況下獲取所有 ID,您可以將其編輯為 output 或根據需要顯示結果

@client.command()
async def lastmess(ctx, member: discord.Member = None):
  id = member.id
  with open('users.json', 'r') as f:
    users = json.load(f)
  for user in users:
    print(user, user['lmessage'])  # here you can print all the IDS/lmessage
  lastmessage = users[str(id)]['lmessage']
  await ctx.send(f'{member} Last message: {lastmessage}!')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM