如何创建使用 JSON 存储用户 ID 的命令? (不和谐.py)

时间:2021-05-11 10:18:09

标签: python json discord.py

我没有做过任何编码,但我会更详细地解释我想要做什么。

  1. 创建名为“!hi”的命令示例
  2. 一旦用户输入“!hi”,该用户的 ID 将被存储到一个 json 文件中

1 个答案:

答案 0 :(得分:-1)

如果您以前从未编程过,我不确定这是一个好主意,但无论如何,我会尽力解释代码的作用......

这个程序的第一部分是导入部分。我导入了许多有用的模块,包括 jsondiscord

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

之后,我将添加一些 JSON 实用程序,让我们可以轻松操作 JSON

def loadJsonData(name):
    global config
    if os.path.exists(name+".json"):
        with open("{}.json".format(name), "r") as f:
            config = json.load(f)
    else:
        with open("{}.json".format(name), "w") as f:
            f.write("{\"users\": []}")
            f.close()
        with open("{}.json".format(name), "r") as f:
            config = json.load(f)

如果文件不存在,这将创建一个文件,并创建一个名为 config 的全局变量

这一行将前缀设置为“!”:

client = commands.Bot(command_prefix='!')

还有最重要的部分:

@client.command()
async def hi(ctx):
    print(f"We are trying to save the id: {ctx.author.id} !")
    loadJsonData("database")
    config["users"].append(str(ctx.author.id))
    saveConfig("database")

这将创建一个名为 hi 的命令。执行时,会打印出作者的id。然后它将使用 json 实用程序函数将其记录到 json 文件中。

最后一部分:使用令牌运行机器人:

client.run("enter-your-token-here")

完整代码:

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

def loadJsonData(name):
    global config
    if os.path.exists(name+".json"):
        with open("{}.json".format(name), "r") as f:
            config = json.load(f)
    else:
        with open("{}.json".format(name), "w") as f:
            f.write("{\"users\": []}")
            f.close()
        with open("{}.json".format(name), "r") as f:
            config = json.load(f)

def saveConfig(name):
    with open("{}.json".format(name), "w") as f:
        json.dump(config, f, indent=4)

client = commands.Bot(command_prefix='!')

@client.command()
async def hi(ctx):
    print(f"We are trying to save the id: {ctx.author.id} !")
    loadJsonData("database")
    config["users"].append(str(ctx.author.id))
    saveConfig("database")

client.run("enter-your-token-here")