如何从 .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 中?