@VickR0mE

Как исправить ошибку TypeError: DataBase.get_max_cash() missing 1 required positional argument: 'cash'?

Пишу настройку валюты экономики для своего бота. Постоянно вылезают разные ошибки. Хочу исправить хотя бы эту ошибку и посмотреть будет ли работать так, как мне надо или же нет. Так же буду рад, если мне подскажут как мне сделать сравнение валюты. То есть если минимальная валюта больше максимальной, то будет вывод ошибки, как то так, в коде в общем будет все понятнее. Заранее спасибо за решение одного или всех вопросов.
#Установка минимальной валюты
	@commands.command(name = "set_min_cash", aliases = ["min_cash"])
	async def __min_cash(self, ctx, cash: int = None):
		data = await self.db.get_max_cash(cash)
		if cash is None: #если валюта не указана
			await ctx.send("Укажите минимальную валюту!")
		elif cash < 0: #если валюта меньше нуля
			await ctx.send("Минимальная валюта не может быть меньше нуля!")
		else:
			if cash > data['cash']: #если минимальная валюта больше максимальной
				await ctx.send("Минимальная валюта не может быть больше или равна максимальной валюте!")
			else:
				await self.db.insert_min_cash(cash)
				await ctx.send("Минимальная валюта установлена!")


Ниже сами функции
async def insert_min_cash(self, ctx, cash):
        async with aiosqlite.connect(self.db_name) as db:
            cursor = await db.cursor()

            await cursor.execute("INSERT INTO eco_min_cash VALUES(?, ?)", [ctx.guild.id, cash])
            await db.commit()

    async def insert_max_cash(self, ctx, cash):
        async with aiosqlite.connect(self.db_name) as db:
            cursor = await db.cursor()

            await cursor.execute("INSERT INTO eco_max_cash VALUES(?, ?)", [ctx.guild.id, cash])
            await db.commit()    

    async def get_min_cash(self, cash, *, all_data: bool=False):
        async with aiosqlite.connect(self.db_name) as db:
            db.row_factory = aiosqlite.Row
            cursor = await db.cursor()

            result = None
            if all_data:
                # :role: - like guild id
                await cursor.execute("SELECT * FROM eco_min_cash WHERE guild_id = ?", [cash])
                result = await cursor.fetchall()
            else:
                await cursor.execute("SELECT * FROM eco_min_cash WHERE guild_id = ? AND cash = ?", [cash.guild.id, cash])
                result = await cursor.fetchone()

            return result

    async def get_max_cash(self, ctx, cash, *, all_data: bool=False):
        async with aiosqlite.connect(self.db_name) as db:
            db.row_factory = aiosqlite.Row
            cursor = await db.cursor()

            result = None
            if all_data:
                # :role: - like guild id
                await cursor.execute("SELECT * FROM eco_max_cash WHERE guild_id = ?", [cash])
                result = await cursor.fetchall()
            else:
                await cursor.execute("SELECT * FROM eco_max_cash WHERE cash = ? AND guild_id = ?", [cash, ctx.guild.id])
                result = await cursor.fetchone()

            return result
  • Вопрос задан
  • 21 просмотр
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Научиться пользоваться переводчиком.
Вот объявление Вашей функции:
async def get_max_cash(self, ctx, cash, *, all_data: bool=False):


Вот как вы пытаетесь ее вызвать:
data = await self.db.get_max_cash(cash)

Если глядя на последнюю строчку и текст ошибки не приходит никаких идей, попробуйте начать с учебника для начинающих.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы