Как можно вырезать подтверждение покупки?

Рейтинг: -1Ответов: 1Опубликовано: 15.04.2023

Есть такой вот код:

#остлеживание ивентов выпадающего списка
    @commands.Cog.listener()
    async def on_dropdown(self, inter: disnake.MessageInteraction):
        tovar = cursor.execute(f"SELECT id, price, tovar FROM shop WHERE name = '{inter.values[0]}' AND status = 0").fetchone()
        if tovar:
            user = cursor.execute(f"SELECT balance, shopping FROM users WHERE id = {inter.author.id}").fetchone()
            if user:
                if user[0] >= tovar[1]:
                    embed = disnake.Embed(title='Вы точно хотите купить?', description=f'{inter.values[0]} за {tovar[1]}₽ \n У вас есть 1 минута на решение!', color=disnake.Color.from_rgb(47,49,54))
                    embed.set_footer(text='Проигнорируйте это сообщение если передумали')
                    await inter.response.send_message(embed=embed, components=[
                        disnake.ui.Button(label='Подтвердить', style=disnake.ButtonStyle.success, custom_id='accept', emoji='✅')
                    ], ephemeral=True)
                    try:
                        cursor.execute(f"UPDATE shop SET status = 1 WHERE id = {tovar[0]}")
                        db.commit()
                        interb = await self.bot.wait_for('button_click', timeout=60)
                        balance = user[0] - tovar[1]
                        shopi = user[1] + 1
                        cursor.execute(f"UPDATE users SET balance = {balance}, shopping = {shopi} WHERE id = {inter.author.id}")
                        cursor.execute(f"DELETE FROM shop WHERE id = {tovar[0]}")
                        db.commit()
                        await interb.send(tovar[2], ephemeral=True)
                        log_channel = await self.bot.fetch_channel(logid)
                        embed = disnake.Embed(title="Новая покупка", description=f"Покупатель: <@{inter.author.id}> \nТовар: {inter.values[0]}", color=disnake.Color.from_rgb(47,49,54))
                        await log_channel.send(embed=embed)
                        guild = await self.bot.fetch_guild(guildid)
                        role = guild.get_role(roleid)
                        print(role, guild)
                        await inter.author.add_roles(role)
                    except:
                        cursor.execute(f"UPDATE shop SET status = 0 WHERE id = {tovar[0]}")
                        db.commit()
                        return
                else:
                    await inter.response.send_message('Вам нехватает денег, пополните счёт! | /start > профиль > пополнить', ephemeral=True) 
            else:
                cursor.execute(f"INSERT INTO users (id, shopping, balance) VALUES ({inter.author.id}, 0, 0)")
                db.commit()
                await inter.response.send_message('Вам нехватает денег, пополните счёт! | /start > профиль > пополнить', ephemeral=True) 
        else:
            await inter.response.send_message('Товар уже продан.', ephemeral=True)

Не могу вырезать подтверждение т.к python толком не знаю :( Нужно чтобы при покупке сразу бот присылал товар, а не спрашивал "Хотите ли вы купить этот товар?"

Ответы

▲ 0
@commands.Cog.listener()
async def on_dropdown(self, inter: disnake.MessageInteraction):
    tovar = cursor.execute(f"SELECT id, price, tovar FROM shop WHERE name = '{inter.values[0]}' AND status = 0").fetchone()
    if tovar:
        user = cursor.execute(f"SELECT balance, shopping FROM users WHERE id = {inter.author.id}").fetchone()
        if user:
            if user[0] >= tovar[1]:
                balance = user[0] - tovar[1]
                shopi = user[1] + 1
                cursor.execute(f"UPDATE users SET balance = {balance}, shopping = {shopi} WHERE id = {inter.author.id}")
                cursor.execute(f"DELETE FROM shop WHERE id = {tovar[0]}")
                db.commit()
                await inter.response.send_message(f"Поздравляем, вы успешно купили {inter.values[0]}", ephemeral=True)
                inter_channel = await self.bot.fetch_channel(inter.channel_id)
                await inter_channel.send(tovar[2])
                log_channel = await self.bot.fetch_channel(logid)
                embed = disnake.Embed(title="Новая покупка", description=f"Покупатель: <@{inter.author.id}> \nТовар: {inter.values[0]}", color=disnake.Color.from_rgb(47,49,54))
                await log_channel.send(embed=embed)
                guild = await self.bot.fetch_guild(guildid)
                role = guild.get_role(roleid)
                print(role, guild)
                await inter.author.add_roles(role)
            else:
                await inter.response.send_message('Вам нехватает денег, пополните счёт! | /start > профиль > пополнить', ephemeral=True) 
        else:
            cursor.execute(f"INSERT INTO users (id, shopping, balance) VALUES ({inter.author.id}, 0, 0)")
            db.commit()
            await inter.response.send_message('Вам нехватает денег, пополните счёт! | /start > профиль > пополнить', ephemeral=True) 
    else:
        await inter.response.send_message('Товар уже продан.', ephemeral=True)