Костылим костылями то что еще не закостылено.
Контакты

Наибольший вклад в теги

Все теги (3)

Лучшие ответы пользователя

Все ответы (6)
  • Фоновый процесс на python?

    retUrn3d
    @retUrn3d
    Пользователь, просто пользователь...
    Попробуйте собрать его через pyinstaller с параметром --noconsole
    Выглядеть это должно примерно вот так:
    pyinstaller --noconsole file.py
    Ответ написан
  • Как упростить код в Embed?

    retUrn3d
    @retUrn3d
    Пользователь, просто пользователь...
    Сделал для вас такое решение, однако это не панацея и ники по типу: "Nick Name" он не найдет.
    Но за то будет отлично работать для ников по типу: "Nickname".
    @bot.command(pass_context = True)
    @commands.has_permissions(administrator = True)
    async def checkuser_user(ctx, arg):
        await ctx.channel.send('Please, wait')
        # Пребираем все пользователей на сервере.
        for guild in bot.guilds:
            for member in guild.members:
                # Сравниваем введенный ник и ники тех кто есть на сервере, убирая идентификатор из ника "#9999" 
                if arg == str(member)[0:-5]:
                    PREFIX = '>'
                    emb = discord.Embed(title = 'User info')
    
                    emb.add_field(name = '{}Bans'.format(PREFIX),value = '0')
                    emb.add_field(name = '{}Kicks'.format(PREFIX),value = '0')
                    emb.add_field(name = '{}Warns'.format(PREFIX),value = '1/3')
                    emb.add_field(name = '{}Ban reason: '.format(PREFIX),value = 'None')
                    emb.add_field(name = '{}Role history'.format(PREFIX),value = 'Verify.')
                    await ctx.send(embed = emb)


    И второй вариант с использованием пакета: fuzzywuzzy
    Этот вариант позволяет более гибко искать нужных пользователей, в том числе, если будет допущена незначительная ошибка в написании ника.

    from fuzzywuzzy import fuzz
    
    @bot.command(pass_context = True)
    @commands.has_permissions(administrator = True)
    async def checkuser_user(ctx, arg):
        await ctx.channel.send('Please, wait')
        # Пребираем все пользователей на сервере.
        for guild in bot.guilds:
            for member in guild.members:
                # Сравниваем введенный ник и ники полученные из списка.
                if fuzz.partial_ratio(arg, str(member)[0:-5]) > 95:  # <- Процент при котором совпадение "успешно".
                    PREFIX = '>'
                    emb = discord.Embed(title = 'User info')
    
                    emb.add_field(name = '{}Bans'.format(PREFIX),value = '0')
                    emb.add_field(name = '{}Kicks'.format(PREFIX),value = '0')
                    emb.add_field(name = '{}Warns'.format(PREFIX),value = '1/3')
                    emb.add_field(name = '{}Ban reason: '.format(PREFIX),value = 'None')
                    emb.add_field(name = '{}Role history'.format(PREFIX),value = 'Verify.')
                    await ctx.send(embed = emb)
    Ответ написан
  • Как сделать бота повторяху, но в канал на выбор?

    retUrn3d
    @retUrn3d
    Пользователь, просто пользователь...
    Вы получаете первый аргумент из сообщения, а вам нужно получить все сообщение. Есть два варианта.
    (Как это работает у вас.)
    >Было< два гуся и булочка
    Чтобы ваш бот принял нужный текст и разом отослал его, необходимо обернуть все нужное в кавычки: '
    >'Было два гуся и булочка'<
    В таком случае, будет получено все сообщение в кавычках, а не только первое слово.

    Так же накидал на скорую руку реализацию пересылки сообщения в выбранный канал, где мы получаем все содержание сообщения.
    @bot.command()
    async def forward(ctx, name_channel=None):
        # Получаем id канала по его названию.
        for channel in ctx.guild.channels:
            if channel.name == name_channel:
                channel = bot.get_channel(channel.id)
                # Получаем все содержание сообщения и отсылаем его в нужный нам канал.
                content = ctx.message.content
                await channel.send(content)
    Ответ написан