@Akmal009

Сохранение старых данных, как сделать актулальными?

Сделал choice, который будет данные с базы данных для использование в выборах

conn = sqlite3.connect('music.db')
cursor = conn.cursor()

cursor.execute("SELECT name FROM music")
result = cursor.fetchall()
audio_names = [row[0] for row in result]


Так же сделал команду для добавление и удаление списка
При добавлении или удаление названия из списка, choice не обновляется, то есть если в базе данных были " soaked" и "яблоко" то после удаления или добавление в список какое то новое название, то при choice все еще были " soaked" и "яблоко". При проверке узнал что при запуске бота, он получается данные и все, больше он не изменяет. Приходится перезапускать бота, пробывал так же while True. Выводила ошибка
async def update_audio_names():
    global audio_names
    while True:
        await asyncio.sleep(1)  # Пауза в 1 секунду
        conn = sqlite3.connect('music.db')
        cursor = conn.cursor()
        cursor.execute("SELECT name FROM music")
        result = cursor.fetchall()
        audio_names = [row[0] for row in result]
        conn.close()

Ошибка NameError: name 'audio_names' is not defined

Мне нужно сделать, чтобы при удаление или добавление в список название, то при вводе команды где есть choice то он был актулальным, а не те данные которые сохранились при запуске бота

Один из кодов в choice

@commands.slash_command(name="a", description="Запустить звук")
    async def a(self, ctx, название = discord.Option(str, description="Выбор трека", choices = audio_names)):
        await ctx.defer()
        conn = sqlite3.connect('music.db')
        cursor = conn.cursor()
        cursor.execute("SELECT path FROM music WHERE name = ?", (название,))
        result = cursor.fetchone()
        if result:
            path = result[0]
            if ctx.author.voice:
                channel = ctx.author.voice.channel
                voice_client = await channel.connect()
                voice_client.play(discord.FFmpegPCMAudio(path), after=lambda e: print(f'Звук воспроизведен {название}'))
                emb = discord.Embed(title = 'Звук', colour = discord.Color.green() )
                emb.set_footer(text = f'Вы запустили звук')

                await ctx.respond(embed=emb)  
                await ctx.delete(delay=10)

                while voice_client.is_playing():
                    await asyncio.sleep(1)

                await voice_client.disconnect()
            else:
                emb = discord.Embed(title = 'Звук', colour = discord.Color.red() )
                emb.set_footer(text = f'Вы не подключены к голосовому каналу. ')
                await ctx.respond(embed=emb)  
                await ctx.delete(delay=10)
        else:
            emb = discord.Embed(title = 'Звук', colour = discord.Color.red() )
            emb.set_footer(text = f'Аудиофайл с таким названием не найден.')
            await ctx.respond(embed=emb)  
            await ctx.delete(delay=10)
        conn.close()
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

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