【问题标题】:How to make a warn command and a warnings list discord.py如何制作警告命令和警告列表 discord.py
【发布时间】:2021-03-04 10:16:16
【问题描述】:

我正在使用 discord.py rewrite 并希望创建一个名为 ~warn <user> <reason> 的命令来警告用户,并创建一个名为 ~warns <user> 的命令来显示用户的警告数量。我一直在寻找有关此的教程,但几乎所有这些都在 discord.js 中,而 discord.py 中的那些都是异步的。有人可以帮我编码吗?

【问题讨论】:

    标签: discord discord.py discord.py-rewrite


    【解决方案1】:

    你可以使用JSON Module,我来做命令,

    async def update_data(users, user):
        if not f'{user.id}' in users:
            users[f'{user.id}'] = {}
            users[f'{user.id}']['warns'] = 0
    
    async def add_warns(users, user, warns):
        users[f'{user.id}']['warns'] += 1
    
    @client.command()
    async def remove_warn(ctx, user: discord.Member, amount: int=None):
        with open('warns.json', 'r') as f:
            users = json.load(f)
    
        amount = amount or 1
    
        await update_data(users, user)
        await add_warns(users, user, -amount)
    
        if users[f'{user.id}']['warns'] <= 0:
            with open('warns.json', 'w') as f:
                del users[f'{user.id}']['warns']
                del users[f'{user.id}']
                f.write(json.dumps(users, indent=4))
            return
    
        else:
    
            with open('warns.json', 'w') as f:
                json.dump(users, f, sort_keys=True, ensure_ascii=False, indent=4)
    
            await ctx.send(f'Removed {amount} warn for {user}')
            return
    
    @client.command()
    async def warns(ctx, user: discord.Member=None):
        user = user or ctx.author
        try:
            with open('warns.json', 'r') as f:
                users = json.load(f)
    
            warns = users[f'{user.id}']['warns']
    
            await ctx.send(f'{user} has {warns} warnings')
        except:
            await ctx.send(f'{user} dont have any warnings.')
    

    【讨论】:

    • 你认为我如何发出警告 命令?
    • @TheAgencyMGE 我建议你使用JSON(上面的代码是示例)或者使用SQLite3(数据库)模块
    • 第一:原来你的 remove_warn 命令实际上是警告命令。这很难理解。第 2 点:警告实际上是为每个服务器中的用户保存的。例如,假设我警告服务器 1 中的成员。它会说“警告 {user}”但是当我转到服务器 2 并输入“~warns {user}”时,它甚至会说“{user} 有一个警告”如果我从未警告过该服务器中的用户。
    • 您可以在代码上添加一个类别,例如 warns[f'{user.guild.id}'][f'{user.id}'] ['warns'] 什么的,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2021-07-25
    • 2020-03-31
    • 2021-10-20
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多