Ответы пользователя по тегу Discord
  • Есть ли такой бот в Discord?

    @Pavlosik
    Да такое можно для этого вам надо модуль random
    Создайте свои роли для игры
    @client.command(aliases = ['мафия'])
    async def игра(ctx):
         role = ctx.guild.get_role(
            Тут айди ролей которых вы создали
        ) 
        await ctx.author.add_roles(role)
        await ctx.send(
            embed=discord.Embed(
                description=f"**Игра началась**",
                color=discord.Color.red(),
            )
        )
    Ответ написан
    1 комментарий
  • Как сделать команду выдачи ролей?

    @Pavlosik
    @client.command()
    async def news(ctx, member: discord.Member = None):
        if member is None:
        role = ctx.guild.get_role(
            ID роли которую хочешь выдать
        )  
        await ctx.author.add_roles(role)
        await ctx.send(
            embed=discord.Embed(
                description=f"**Вы взяли себе роль {role.mention}**",
                color=discord.Color.purple(),
            )
        )
       else:
    role = ctx.guild.get_role(
            ID роли которую хочешь выдать
        )  
        await ctx.author.add_roles(role)
        await ctx.send(
            embed=discord.Embed(
                description=f"Вы выдали **{ctx.author}** роль {role.mention}",
                color=discord.Color.purple(),
            )
        )
    Ответ написан
    4 комментария
  • Как сделать слеш команды в когах discord.py?

    @Pavlosik
    PREFIX = "/"

    bot = commands.Bot(command_prefix = PREFIX , intents=discord.Intents.all())
    Ответ написан
  • Несколько токенов и ботов, но 1 код, как так сделать?

    @Pavlosik
    Хоч создать скрипт которой запускает ботов по очереди?

    Создай бот файл и напиши следушее
    @echo off

    call %~dp0proj\venv\Scripts\activate (если есть venv) если нету то пофиг просто удали эту строку

    cd %~dp0папка

    python название файла
    python название 2 бота
    python ну и тд

    pause

    все боты должны быть в одной папке
    Ответ написан
  • Почему бот не находит канал голосовой, как исправить?

    @Pavlosik
    @bot.event
    async def on_voice_state_update(member, before, after):
    channel = after.channel
    bot_connection = member.guild.voice_client

    if channel and member.id in friends:
    if bot_connection:
    await bot_connection.move_to(channel)
    else:
    await channel.connect()

    if not channel and bot_connection:
    await bot_connection.disconnect()

    @bot.command()
    async def yt(self, ctx, *, url):
    """Plays from a url (almost anything youtube_dl supports)"""

    async with ctx.typing():
    player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True)
    ctx.voice_bot.play(player, after=lambda e: print('Player error: %s' % e) if e else None)

    await ctx.send('Now playing: {}'.format(player.title))



    ytdl_format_options = {
    'format': 'bestaudio/best',
    'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s',
    'restrictfilenames': True,
    'noplaylist': True,
    'nocheckcertificate': True,
    'ignoreerrors': False,
    'logtostderr': False,
    'quiet': True,
    'no_warnings': True,
    'default_search': 'auto',
    'source_address': '0.0.0.0' # bind to ipv4 since ipv6 addresses cause issues sometimes
    }

    ffmpeg_options = {
    'options': '-vn'
    }

    ytdl = youtube_dl.YoutubeDL(ytdl_format_options)

    class YTDLSource(discord.PCMVolumeTransformer):
    def __init__(self, source, *, data, volume=0.5):
    super().__init__(source, volume)

    self.data = data

    self.title = data.get('title')
    self.url = data.get('url')

    @classmethod
    async def from_url(cls, url, *, loop=None, stream=False):
    loop = loop or asyncio.get_event_loop()
    data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=not stream))

    if 'entries' in data:
    # take first item from a playlist
    data = data['entries'][0]

    filename = data['url'] if stream else ytdl.prepare_filename(data)
    return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data)

    @bot.command(pass_context=True, brief="This will play a song 'play [url]'", aliases=['pl'])
    async def play(ctx, url: str):
    song_there = os.path.isfile("song.mp3")
    try:
    if song_there:
    os.remove("song.mp3")
    except PermissionError:
    await ctx.send("Wait for the current playing music end or use the 'stop' command")
    return
    await ctx.send("Песня скачивается, пожалуста подождите, Скоро музыка будет играть...")
    await ctx.message.add_reaction('⏯')
    print("Музыка проигравается")


    voice = get(bot.voice_clients, guild=ctx.guild)
    ydl_opts = {
    'format': 'bestaudio/best',
    'postprocessors': [{
    'key': 'FFmpegExtractAudio',
    'preferredcodec': 'mp3',
    'preferredquality': '192',
    }],
    }
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download([url])
    for file in os.listdir("./"):
    if file.endswith(".mp3"):
    os.rename(file, 'song.mp3')
    voice.play(discord.FFmpegPCMAudio("song.mp3"))
    voice.volume = 100
    voice.is_playing()

    @bot.command(pass_context=True, brief="Музыка остновлена", aliases=['l', 'le', 'lea'])
    async def leave(ctx):
    channel = ctx.message.author.voice.channel
    voice = get(bot.voice_clients, guild=ctx.guild)
    if voice and voice.is_connected():
    await voice.disconnect()
    await ctx.send(f"Left {channel}")
    else:
    await ctx.send("Музыка остновлена")

    await ctx.message.add_reaction('')
    Ответ написан
  • Как упомянуть человека получив только его id в discord.py?

    @Pavlosik
    Можно использавать member.name.id
    Ответ написан
  • Как сделать топ balance для дискорд бота?

    @Pavlosik
    @client.command(aliases = ['leaderboard', 'lb'])
    async def __leaderboard(ctx):
    embed = discord.Embed(title = 'Топ 10 участников')
    counter = 0

    for row in cursor.execute("SELECT name, cash FROM users WHERE id = {} ORDER BY cash DESC LIMIT 10".format(ctx.guild.id)):
    counter += 1
    embed.add_field(
    name = f'# {counter} | `{row[0]}`',
    value = f'Баланс: {row[1]}',
    inline = False
    )

    await ctx.send(embed = embed)
    Ответ написан
    Комментировать