如何从 .json 文件 discord.py 中获取信息

Posted

技术标签:

【中文标题】如何从 .json 文件 discord.py 中获取信息【英文标题】:How to get info from a .json file discord.py 【发布时间】:2021-12-04 10:06:37 【问题描述】:

我想制作一个具有可自定义欢迎消息的机器人,您可以在其中使用命令并键入#(频道)和之后的消息。问题是,在 on_member_join 事件中我不知道如何制作 guild = (the guild that the command was ran in) 要么 channel = (the channel the user put in) 要么 message = (the message the user gave) 所有信息都在一个名为welcomemsgs.json 的json 文件中。我只需要以某种方式从 .json 文件中获取信息。这是 json 文件的样例"channel": 896476418421178397, "message": "Welcome!", "guild": 896476417968205894

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

其实很简单,初学者可以用json

首先你创建命令

@bot.command()
async def welcomechannel(ctx, channel):
    ch = int(channel.strip) # This removes the <#> and leaves the channel id
    with open('yourfilename.json', 'r') as f: # 'r' stands for read mode
        welcomes = json.load(f)

    welcomes[str(ctx.guild.id)] = ch # Sets the key to the channel

    with open('yourfilename.json', 'w') as f: # 'w' stands for write mode
        json.dump(welcomes, f) # Dumps the new data in the file

那你就做

@bot.event
async def on_member_join(member):
    with open('yourfilename.json', 'r') as f:
        welcomes = json.load(f)
    channel = bot.get_channel(welcomes[str(member.guild.id)]
    await channel.send("Welcome " + member.mention)

【讨论】:

如果我想让它更可定制,比如可自定义的消息,您可以在命令中自定义消息? 它给了我一个错误,说我不能使用一些内置方法 ch = int(channel.strip) TypeError: int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method' 如果你有一个 postgresql 数据库,我可以为你提供更多帮助

以上是关于如何从 .json 文件 discord.py 中获取信息的主要内容,如果未能解决你的问题,请参考以下文章

如何从 api 获取 json 数据并将其以嵌入形式发送到 discord.py 中?

在通过 Python (discord.py) 输入追加时组织 JSON 文件

Discord.py 如何从另一个文件运行代码?

Discord py - 不同服务器上的相同机器人

Discord.py 点未加载到 json 中

显示来自 2 个单独 JSON 文件的 JSON 数据 Discord PY