Discord.py 类定义在明确输入时没有得到变量

from discord.ext import commands

import asyncio

import os

import random

import re


prefix = 'bz '

client = commands.Bot(command_prefix=prefix)





@client.event

async def on_ready():

    print('Logged in as: ')

    print(client.user.name)

    print(client.user.id)

    print('---------------')

    await client.change_presence(activity=discord.Game(name='bz help'))



class DataCreate(commands.Cog):

    def __int__(self, client):

        self.client = client

    async def createdatacash(self, member):

        path = 'bal_' + member + '.txt'

        print('createddatacash')

        if not os.path.isfile(path):

            file = open(path, 'w+')

            file.write('0')

            file.close()

            self.data = True

    async def writefile(self, member, inputthing):

        path = 'bal_' + member + '.txt'

        if not os.path.isfile(path):

            await DataCreate.createdatacash(member)

        file = open(path, 'w+')

        file.write(str(inputthing))

        self.data = True






class GetCash(commands.Cog):

    def __init__(self, client):

        self.client = client

    async def view_cash(self, member):

        path = 'bal_' + member + '.txt'

        if not os.path.isfile(path):

            datacreate = DataCreate

            await datacreate.createdatacash(member)

        file = open(path, 'r')

        output= file.read()

        file.close()

        self.data = output



我的源代码在上面,我希望这就足够了


我得到了错误missing 1 required positional argument: 'amount'


此错误显示在:await cashmodify.addtobal(person, cash)


我一直在尝试为python 3.7制作一个带有discord重写的经济机器人,我决定这次让自己更容易将它们保留在类中,然后在需要时使用它们,但每当我在discord中运行命令时,它说我缺少一个称为数量的必需位置参数。我试过从字符串和整数切换输入,我回头看了看课程,它仍然无法工作。


我尝试过的另一件事是删除 commands.Cog,但这仍然不起作用。所以我很感激任何人能给我的帮助


Helenr
浏览 112回答 1
1回答

回首忆惘然

当您创建一个类的实例并调用其方法之一时,self(代表您的类的实例)将作为参数传递给它。此代码不会创建您的类的实例,它只是创建一个类对象:>>> cashmodify = CashModify>>> cashmodify<class '__main__.CashModify'>该addtobal方法是这样定义的addtobal(self, member, amount),而您是这样调用它的addtobal(person, cash)。你得到一个错误,因为你没有创建类的任何实例CashModify:没有self属性,所以你的person和cash变量分别作为self和member参数传递,没有任何东西传递给amount。要解决此问题,您必须根据您的__init__方法实例化您的类(创建它的实例)并将客户端变量传递给它:cashmodify = CashModify(client)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python