Discord py 给出命令错误。我正在制作经济不和谐 py 机器人,但发出命令不起作用

时间:2020-12-20 17:15:01

标签: python discord discord.py

import discord
from discord.ext import commands
import os
import json
import random
from discord.ext.commands import Bot


os.chdir("")

有正确的路径,我检查了这个

Bot = commands.Bot(command_prefix = "$")

token = 'my token'

这也是正确的

@Bot.command()
async def give(ctx, member:discord.Member, amount = None):
    await open_account(ctx.author)
    await open_account(member)

    amount = int(amount)
    if amount == None:
        await ctx.send("Please enter the amount")
        return

    bal = await update_bank(ctx.author)

    if amount>bal[1]:
        await ctx.send("You don't have that much money")
        return

    if amount<=0:
        await ctx.send("Amount must be positive")
        return

    await update_bank(ctx.author, -1*amount, "wallet")
    await update_bank(member, 1*amount, "wallet")

    emb = discord.Embed(description = f"You gave {member.name} {amount} gold coins", color = 0x2ecc71)
    await ctx.send(embed = emb)

有完整的命令

async def open_account(user):
    
    users = await get_bank_data()


    if str(user.id) in users:
        return False
    else:
        users[str(user.id)] = {}
        users[str(user.id)]["wallet"] = 0

    with open("mainbank.json", "w") as f:
        json.dump(users, f)

    return True


async def update_bank(user, change = 0, mode = "wallet"):
    users = await get_bank_data()

    users[str(user.id)][mode] += change

    with open("mainbank.json", "w") as f:
        json.dump(users, f)

    bal = [users[str(user.id)]["wallet"]]

    return bal

如您所见,给出命令是行不通的。我也知道,这个问题不在于 open_account 函数,但我不确定 update_bank。

有一个错误:

if amount>bal[1]:
IndexError: list index out of range

如果你有想法,请写下来。

1 个答案:

答案 0 :(得分:0)

您正在将 bal 的列表嵌套在另一个列表中:[users[str(user.id)]["wallet"]]。因此,如果 users[str(user.id)]["wallet"] 的值为 [0, 1],它实际上是 [[0, 1]]。没有索引 1,只有索引 0 和一个嵌套列表,直到索引 1。您可以通过简单地删除额外的括号来解决这个问题:users[str(user.id)]["wallet"]

您可以通过print bal 轻松发现这一点。知道如何调试是一项非常有用的技能。