Задать вопрос
  • Как внедрить меню dropdown?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Как внедрить меню dropdown?
    Как написано в документации и примерах использования dropdown

    (желательно ответьте куском кода )

    Код из примера
    import discord
    from discord.ext import commands
    
    class Dropdown(discord.ui.Select):
        def __init__(self):
            options = [
                discord.SelectOption(label='Red', description='Your favourite colour is red', emoji=''),
                discord.SelectOption(label='Green', description='Your favourite colour is green', emoji=''),
                discord.SelectOption(label='Blue', description='Your favourite colour is blue', emoji=''),
            ]
            super().__init__(placeholder='Choose your favourite colour...', min_values=1, max_values=1, options=options)
    
        async def callback(self, interaction: discord.Interaction):
            await interaction.response.send_message(f'Your favourite colour is {self.values[0]}')
    
    
    class DropdownView(discord.ui.View):
        def __init__(self):
            super().__init__()
            self.add_item(Dropdown())
    
    
    class Bot(commands.Bot):
        def __init__(self):
            intents = discord.Intents.default()
            intents.message_content = True
    
            super().__init__(command_prefix=commands.when_mentioned_or('$'), intents=intents)
    
        async def on_ready(self):
            print(f'Logged in as {self.user} (ID: {self.user.id})')
            print('------')
    
    
    bot = Bot()
    
    
    @bot.command()
    async def colour(ctx):
        view = DropdownView()
        await ctx.send('Pick your favourite colour:', view=view)
    
    bot.run('token')
    Ответ написан
    Комментировать
  • Почему if isinstance(interaction.component, disnake.ui.Button) возвращает False?

    fenrir1121
    @fenrir1121
    Начни с документации
    Потому что disnake.ui.Button и disnake.Button не одно и то же.

    disnake.ui.Button используется для создания кнопок, а в component лежит или disnake.Button или disnake.BaseSelectMenu
    Ответ написан
    Комментировать
  • Как выучить disnake?

    fenrir1121
    @fenrir1121
    Начни с документации
    disnake это библиотека, а не язык чтобы его учить. Берете и пользуетесь.

    Для начала у него достаточно крупное ру комьюнити и начать стоит с руководства, где очень подробно описан весь основной функционал.

    Когда основ недостаточно добро пожаловать в документацию.
    Ответ написан
    Комментировать
  • Как составить запрос к нескольким таблицам?

    fenrir1121
    @fenrir1121
    Начни с документации
    Использоваться девятью INNER JOIN.

    Но что-то мне подсказывает проблема в архитектуре базы и отсутствии внешних ключей, а не в необходимости запроса к 10 таблицам.
    Ответ написан
    Комментировать
  • Как создать слеш команды на discord.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Многие используют from discord_slash import SlashCommand
    Смелое заявление о библиотеке, которая не обновлялась с 2021 года. У нее уже даже архивный репозиторий удалили и ссылка ведет на interactions.py.

    Как создать слеш команды на discord.py?
    Открыть examples библиотеки, например basic.py, вставить свой токен и запустить. Все примеры снабжены исчерпывающими комментариями.
    Ответ написан
    Комментировать
  • Ошибка при импорта библиотеки?

    fenrir1121
    @fenrir1121
    Начни с документации
    Просто по приколу изучить язык прежде чем что-то делать.
    Просто по приколу не пытаться программировать на телефоне.
    Просто по приколу перевести ошибку.
    Причина и инструкция что нужно делать чёрным по белому написаны в ошибке:
    error: can't find Rust compiler

    If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain


    Кроме того прочитайте правила ресурса и оформите вопрос как положено: удалите теги, дискорд не имеет отношения к вашему вопросу, замените сложность и уберите портянку под спойлер
    Ответ написан
    2 комментария
  • Как исправить отличающийся символ в названии файла на macos и windows?

    fenrir1121
    @fenrir1121
    Начни с документации
    В linux и macos все кодировки по-умолчанию совпадают с UTF-8, а windows с ее cp1251 и cp866 для любителей острых ощущений.
    Что касается нормализации, есть 4 вида: NFC, NFD, NFKC и NFKD
    В разницу композиции и декомпозиции углубляться не буду, для этого есть документация и W3C, но отмечу что NFKC и NFKD могут приводить к потере данных, поэтому лучше использовать NFC, а остальные использовать если ее недостаточно.

    from unicodedata import normalize
    
    def eq_nfc(str1, str2):
        return normalize('NFC', str1) == normalize('NFC', str2)
    Ответ написан
    Комментировать
  • Временный мут на discord.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Вероятно вы выключали бота в этом случае логика никогда не отработает.
    Необходимо хранить подобную информацию в БД. Кроме того для есть discord.ext.tasks, чтобы периодически в фоне запускать что-либо.
    Ответ написан
  • Я не могу решить вопрос с асинхронным выполнением кода. Оптимальное решение?

    fenrir1121
    @fenrir1121
    Начни с документации
    эта статья тык

    Вам внутри вашего же примера дан нужный код
    def my_after(error):
        coro = some_channel.send('Song is done!')
        fut = asyncio.run_coroutine_threadsafe(coro, client.loop)
        try:
            fut.result()
        except:
            # an error happened sending the message
            pass

    coro - асинхронная функция
    Ответ написан
  • Есть ли для Python простые в использовании ORM с поддержкой asyncio и type hints?

    fenrir1121
    @fenrir1121
    Начни с документации
    Алхимия де-факто стандарт. Можно попробовать врапперы над ней, хотя все тоже с проблемами. Eсть подозрения, что сейчас алхимия и пайдентик апнулись до 2 версии и оживет sqlmodel.

    Что до списка выше есть вот такой разбор от контрибьютора черепашки. Можно глянуть по цифрам и выводам, с чем-то из ограничений все равно приходится мириться.
    Ответ написан
    2 комментария
  • Как скачивать файлы Telegram через php более 20МБ?

    fenrir1121
    @fenrir1121
    Начни с документации
    Поднимать собственное хранилище и хранить в нем файлы какого угодно размера. Телеграм, очевидно, не заинтересован, чтобы любой желающий использовал его как файлопомойку через их же API.

    P.S. прочитайте правила и удалите все теги, кроме Telegram, они не имеют отношения к вопросу.
    Ответ написан
    Комментировать
  • Я неправильно добавляю кнопки в сообщение. Как правильно?

    fenrir1121
    @fenrir1121
    Начни с документации
    Посмотрите этот пример. Каждый ряд это отдельный список
    Ответ написан
    Комментировать
  • Хочу сделать мьют на discord.py duration reason?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Сам мут.
    @bot.command
    async def mute(ctx, member: discord.Member):
        await member.edit(mute=True)

    Чтобы он был на время реализуйте отложенную задачу, которая будет его снимать. Для небольших периодических задач у дискорда есть свой ext.tasks, но чтобы задачи не исчезали в случае перезапуска бота нужна своя реализация с хранением данных в БД.
    Ответ написан
    Комментировать
  • Как убрать "Ошибка взаимодействия" при нажатии на кнопку в Discord?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    В каких дебрях интернета вы нашли этот код?
    Где вы увидели использование слеша в качестве префикса? Этому какой-то ютубер учит?
    В актуальной версии библиотеки discord.py нет события on_button_click. А у вас намешаны в одну кучу контексты и взаимодействия, которые являются принципиально разными.

    Удалите весь код, никогда не заходите туда, где его нашли (или смотрите дату публикации).
    Откройте официальную документацию, getting-started и пишите по ней заново.
    Ответ написан
    1 комментарий
  • При исполнения команды, бот отправляет GIF файл, который не грузит discord, в чем проблема?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    В списке в перемешку ссылки на веб страницы и на mp4 видео.
    set_image требует как это ни странно изображение.
    Чтобы приложить видео есть аналогичный атрибут Embed.video, а ссылку на сайт можно разве что в текст засунуть.

    P.S. не используйте столько тегов, оставляйте только ключевой, в данном случае discord.py
    Ответ написан
  • Не блокирует человека discord.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Команда верная. Если убрать лишнее она сводится к одной строчке.
    @client.command()
    @commands.has_permissions(ban_members = True)
    async def ban(ctx, member : discord.Member, *, reason = None):
        await member.ban(reason = reason)


    А не работает, поскольку в функции нигде не определен объект userName у которого вы пытаетесь вызвать метод send. Что впрочем вам должно было бы писаться, если только вы не глушите любые ошибки
    Ответ написан
    Комментировать
  • Какими материалами повысить экспертизу в python?

    fenrir1121
    @fenrir1121
    Начни с документации
    Fluent Python однозначно лучшая из существующих, но есть еще несколько неплохих книг.

    Все сложные случаи гуглю
    Из старого Beazley - Python Cookbook, хоть и написана для 3.3 классика различных приемов.
    Из нового Martelli - Python in a Nutshell.

    как должна выглядеть хорошая масштабируемая архитектура
    Architecture Patterns with Python

    Ну и с учетом flask/fastapi Fowler - Python Concurrency with asyncio. Кривая работа с асинхронностью это классика.
    Ответ написан
    Комментировать
  • Как сделать анти флуд по комманде пример: !antispam on / off?

    fenrir1121
    @fenrir1121
    Начни с документации
    Загир Меджидов надеюсь это chatGPT. Если нет внимательно поищите SPAM_TIME в вашем коде.

    Coding No на вопрос
    не знаю как ...
    отвечает гугл. Если вы используете тег Python потрудитесь представить вашу попытку решения.
    В дискорде существует slow-mode, который можно выставить на любое время и дать ролям иммунитет к нему.
    Все кто без иммунитета смогут писать 1 сообщение в X секунд. Если передать 0 - отключается.
    Выставляется одной строчкой кода
    async def setdelay(ctx, seconds: int):
        await ctx.channel.edit(slowmode_delay=seconds)
    Ответ написан
  • Что нужно знать, чтобы устроиться на позицию Python Junior?

    fenrir1121
    @fenrir1121
    Начни с документации
    Нужно знать больше, чем знают остальные кандидаты на ту же позицию.

    https://roadmap.sh/python
    Ответ написан
    3 комментария
  • Почему когда загружаю коги через команду они не работают(слеш команды) nextcord?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Слеш команды полностью отличаются от префиксных.
    Если префиксные запустил бота и они работают, то в случае со слешами они синхронизируются на стороне серверов дискорда и до этого момента они не работают. Соответственно для синхронизации команд есть функции sync_application_commands, sync_all_application_commands, discover_application_commands и еще несколько.

    Для того чтобы можно было тестировать их можно дополнительно передавать в команду guild_ids=[TESTING_GUILD_ID], но и в этом случае команды нужно синхронизировать.
    Ответ написан
    Комментировать