Пример #1
0
async def remove(ctx, arg):
    server = get_server(ctx)

    if arg == 'all':
        server.playlist.deleteAll()
        if server.voice: server.voice.stop()
        await ctx.send(embed=MsgEmbed.info('Удалил весь плейлист :fire:'))
        return

    if not arg.isdigit(): raise commands.MissingRequiredArgument()
    else: pos = int(arg)

    if not 0 <= pos < server.playlist.getLength():
        await ctx.send(embed=MsgEmbed.warning(
            'Как может в казино быть колода разложена в другом порядке?! Ты чё, бредишь, что ли?! Ёбаный твой рот, а!..'
        ))
        return

    mi = server.playlist.getByPosition(pos)
    playlist, voice = server.playlist, server.voice
    if pos == playlist.getPosition() and voice: voice.stop()
    if playlist.deleteByPosition(pos):
        await ctx.send(
            embed=MsgEmbed.info(f'Удалил: {mi.artist} - {mi.title} :fire:'))
    else:
        await ctx.send(embed=MsgEmbed.error('Ошибка удаления'))
Пример #2
0
async def queue(ctx):
    server = get_server(ctx)

    if server.playlist.getLength() == 0:
        await ctx.send(embed=MsgEmbed.info('Плейлист пуст'))
    else:
        mi_list = server.playlist.getAll()
        _list = [
            f'{i} :  {mi.artist} - {mi.title}' for i, mi in enumerate(mi_list)
        ]
        pos = server.playlist.getPosition()
        _list[pos] = f'**{_list[pos]}**'

        emb = MsgEmbed.info('')
        emb.set_author(name='текущий плейлист', icon_url=icons['playlist'])
        await send_long_list(ctx, _list, emb, MsgEmbed.info(''))
Пример #3
0
async def ask_user(ctx,
                   title: str,
                   choice: List[str],
                   *,
                   icon_url: str = icons['list'],
                   timeout=10,
                   start_index=0,
                   step_index=1) -> Optional[int]:
    choice = [f'{i + start_index}. {x}' for i, x in enumerate(choice)]
    emb = MsgEmbed.info('')
    emb.set_author(name=title, icon_url=icon_url)
    await send_long_list(ctx, choice, emb, MsgEmbed.info(''))
    try:
        msg = await client.wait_for('message',
                                    check=get_message_check(ctx.author),
                                    timeout=timeout)
    except asyncio.exceptions.TimeoutError:
        await ctx.send(embed=MsgEmbed.warning('Кто не успел - тот опоздал'))
        return None
    else:
        return int(msg.content)
Пример #4
0
 async def add_all():
     added_songs, songs_count = 0, len(mi_list)
     message = await ctx.send(embed=MsgEmbed.info('Загрузка плейлиста...'))
     for mi in mi_list:
         if server.playlist.add(mi): added_songs += 1
     if added_songs == songs_count:
         await message.edit(
             embed=MsgEmbed.ok('Все песни успешно добавлены!'))
         return True
     elif added_songs == 0:
         await message.edit(
             embed=MsgEmbed.warning('Ни одна песня не была добавлена!'))
         return False
     else:
         await message.edit(embed=MsgEmbed.warning(
             f'Добавлено: {added_songs}/{songs_count}'))
         return True
Пример #5
0
def get_mi_embed(mi: MusicInfo) -> discord.Embed:
    emb = MsgEmbed.info('')
    emb.set_author(name=f'{mi.artist} - {mi.title} [ {mi.time} сек ]',
                   icon_url=mi.image_url)
    return emb
Пример #6
0
async def about(ctx):
    await ctx.send(embed=MsgEmbed.info(about_docs))
    pass