Уведомления

Группа в Telegram: @pythonsu

#1 Июль 10, 2017 09:32:37

avelok
Зарегистрирован: 2017-07-10
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема в областях видимости при написании бота

Пишу бота на python, опыта разработки на этом ЯП почти минимально. Так вот, пишу музыкального дискорд бота чисто под свои нужды. В общем, по замыслу при вводе play (url) должна запускаться звук с видео с ютуба, с первым play проблем нет, можно стопить, ставить на паузу и тд, но со 2 *play возникают проблемы, песню невозможно стопить и производить с ней какие-либо действия, интерпретатор ссылался на то, что подпрограммы play, stop, resume находятся в главной подпрограмме play и при втором и более вызовах этой подпрограммы 2 раз инициализироваться эти же подпрограммы(play, stop и тд) не могут. Основная проблема в областях видимости, т.к одни подпрограммы находятся в другой, а по-другому нельзя, что делать? На скрине стрелкой показана главная подпрограмма.

 vc = await bot.join_voice_channel(voice_channel)
    vc_clients[message.server.id] = [vc]
@bot.command(pass_context=True)
    async def play(ctx, url):
        try:
            player = await vc.create_ytdl_player(url)
            player.start()
            @bot.command(pass_context=True)
            async def pause():
                player.pause()
                await bot.say('Музыка на паузе')
            @bot.command(pass_context=True)
            async def stop():
                player.stop()
                await bot.say('Музыка остановлена')
            @bot.command(pass_context=True)
            async def resume():
                player.resume()
        except:
            pass

Отредактировано avelok (Июль 10, 2017 09:34:54)

Прикреплённый файлы:
attachment 14996301132620.png (19,2 KБ)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version