Ответы пользователя по тегу discord.py
  • Как управляя своим аккаунтом дискорда отправлять сообщения другу на python?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Юзерботы запрещены политикой дискорда, поэтому discord.py и все его форки такой функционал не предоставляют.
    Есть несколько сомнительного качества библиотек, но по правилу 5.5 их пиару не место на тостере.
    Ответ написан
  • Сможете помочь решить проблему с Interaction атрибутами?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Контест был в обычных командах. В слеш командах взаимодействия. Это разные сущности с разными атрибутами и методами.
    Вместо send в ней response
    Ответ написан
    2 комментария
  • Почему Не запускается dropdown на disnake, и как исправить?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Внутри класса первым аргументом всегда идет self - ссылка на объект класса (или cls для методов класса), так что ваше async def wp(ctx) получает не то, что вы ожидаете.

    Не смешивайте теплое с мягким, определите команду отдельно. Вот официальный пример
    Ответ написан
    Комментировать
  • Что делать если не отправляется embed сообщение?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Открываем документацию, находим get_channel
    get_channel(id, /)
    Returns a channel or thread with the given ID.
    Parameters
    id (int) – The ID to search for.
    Returns
    The returned channel or None if not found.

    Если канал не найден возвращается None, это ваш случай.

    Хардкодить канал не очень хорошая задумка. У любого сервера для уведомлений предусмотрен отдельный канал , который можно достать из guild.system_channel. Вот в него и стоит отправлять уведомления.
    Ответ написан
    Комментировать
  • Embed сообщение discord.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Используйте поиск по сайту, например тут или тут дан нужный вам код.

    Решение в общем виде:
    - Используете событие on_member_join, оно срабатывает когда собственно кто-то присоединяется к серверу
    - Создаете объект discord.Embed
    - Достаете канал в который нужно отправить сообщение и делаете channel.send(embed=embed)
    Ответ написан
    Комментировать
  • Как настроить у бота ожидание события взаимодействия(меню выбора)?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Обычно делают 2 вида взаимодействий:
    - Вечные, которые можно кликать сколько угодно.
    - Пользовательские, которые вызваны из команды и доступны только тому кто их вызвал.

    Проверяйте и обрабатывайте только нажатия от вводившего команду или делайте команду эфемерной чтобы только вводивший ее видел.
    Ответ написан
  • Как скрыть сообщение «ошибка взаимодействия» в боте?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Суть взаимодействий в том, что вы обязаны на них ответить. Как минимум выдать эфемерное сообщение в духе "я сделаль".

    Судя по приложенному коду возможно логичнее написать этот функционал как Application Command, которая вызывается из профиля пользователя
    Ответ написан
    1 комментарий
  • Как сделать чтобы инвайт считался тому кто по своей ссылке пригласил человека?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Исправить опечатки в коде.
    Ты не для того человека считаешь и не того человека выводишь в Embed
    Ответ написан
    Комментировать
  • Как сделать Билдер JSON в боте дискорд?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Embed.from_dict из словаря создает объект Embed.
    Формат словаря у тебя похоже есть, но все же приведу официальную документацию
    Ответ написан
    3 комментария
  • Как сделать задержку на выполнение функции при реагировании на сообщения, а не на команды?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    await asyncio.sleep(seconds)
    Если это не то, что нужно, разворачивайте вопрос более подробно, что вы пытаетесь сделать, зачем и как пытались.

    Кроме того лучше вообще не пихать логику в on_message, это ивент, который срабатывает на каждое сообщение, а сообщений в секунду бывает очень много.
    Ответ написан
  • Как исправить AttributeError: 'Context' object has no attribute 'edit'?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Давайте мы переведем за вас.
    Объект "контекст" не имеет атрибута "edit"

    В контексте хранится Message, который в свою очередь имеет метод Message.edit().
    Обратите внимание, что он принимает только именованные аргументы.
    Ответ написан
    Комментировать
  • Почему Бот выдаёт ошибку, но в консоли она не отображается (disnake.py)?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Сообщение "Приложение не отвечает" говорит о том, что твой бот за 3 секунды не выдал какой-либо ответ.
    Оно не означает что в коде есть ошибки.

    Они там определенно есть, но другого характера. Ваш код выдает ответ не в любом случае, а только при выполнении ряда условий, причем настолько специфичных, что можно было сразу на фазы луны завязываться, было бы надежнее. Для начала постарайтесь не пытаться выдать ответ посреди цикла, а для веток if добавлять else. К примеру сейчас если не выполняется if counter==4: не произойдет ничего.

    А лучше отложите бота и перечитайте теорию с самого начала.
    Ответ написан
    1 комментарий
  • Ошибка при установки discord.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Ошибка при установки discord.py?
    да ошибка, попробуйте переводчик

    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-buil...
    Ответ написан
    1 комментарий
  • Как решить проблему с объектом который не имеет атрибута 'send_modal'?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    1) Узнайте что такое self, является ли это ключевым словом или просто переменной и что туда передается, где обычно пишут self.

    2) Узнайте в чем отличие класса от экземпляра класса. Подумайте над 8 строчкой, должен ли туда передаваться класс или его экземпляр.

    3) Узнайте что такое ctx, чем отличается Context от Interation. Тот же вопрос другим боком: чем отличаются команды от слеш-команд.

    4) Определитесь вам нужен send_model или send_modal (перечитайте заголовок вопроса и сам вопрос и исправьте)

    5) Когда разберетесь с вопросом 4, нужный метод доступен для класса InteractionMessage. Найдите его среди ваших объектов, используя функцию type(some_object)
    Ответ написан
    Комментировать
  • Что делать, если Не появляются slash команды?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    В guld_id значение должно быть меньше или равно 9223372036854775807

    Ошибка происходит внутри кода библиотеки и связана с тем, что передается слишком большое значение id сервера.

    Или вы где-нибудь в конфиге или бд прописали слишком большой id. Их мы не видим так что ищите.
    Или это баг в самой библиотеке и в этом случае открывайте issue на github'e
    Ответ написан
    Комментировать
  • Как сделать чтобы бот выдавал обратную связь если была ошибка со стороны пользователя, В чём была моя ошибка при коде?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Не стоит привязываться к ошибкам библиотеки. Создаете кастомную ошибку и вызываете в месте возникновения.
    Сейчас вы привязываете к стандартным ошибкам текст, который в реальности не отражает проблему: скажем отсутствие разрешений это MissingPermissions или BotMissingPermissions. BadArgument это ошибка разбора аргументов.

    Ну и не нужно дергать вызов ошибок в событии предназначенном для их обработки.
    async def on_command_error(error, ctx):
        if isinstance(error, commands.BadArgument):
            await ctx.send("Запрос команды с ошибочным аргументом")
        elif isinstance(error, commands.CommandNotFound):
            await Client.send_message(ctx.message.channel, "Команда не найдена")
        ... # вставлять новые проверки сюда
        else:
            await Client.send_message(ctx.message.channel, "Неизвестная ошибка")
    Ответ написан
    Комментировать
  • Как сделать чтобы кнопка работала даже после перезапуска бота?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    При старте бота в событии on_ready нужно регистрировать обработчик.
    Официальный пример с комментариями.
    Ответ написан
    1 комментарий
  • Бот не высвечивает кто пригласил, как исправить?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Потому что при result is None and chann is not None inviter_id будет None.
    inviter_id = None
    if result is not None:
       ... 
    
    if chann:
        embed = nextcord.Embed(
            title='Leafy InviteLogger',
            description=f'{member.mention} join the server!\n\n Invited by <@{inviter_id}>\n Total invitations {total_invites}',
            colour=0x2b2d31
        )


    P.S. Отредактируйте вопрос в соответствии с правилами ресурса. Используйте спойлер для портянок и изображений.
    Ответ написан
  • Что делать ошибка после возрата?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Переводим ошибку
    coroutine 'ApplicationContext.respond' was never awaited

    Смотрим на строку, которая эту ошибку вызывает
    ctx.respond(f'Вы уже использовали {us} из {kyp}',ephemeral=True)

    Сравниваем с вашим же кодом на 10 строк нижe
    await ctx.respond(embed=embedvar,ephemeral=True)
    Играем в игру "найди одно ключевое отличие", добавляем в код await

    С учетом того, что у библиотеки discord.py нет объектов ApplicationContext, похоже код использует какой-то форк и такие вещи стоит указывать.
    Ответ написан
    Комментировать
  • Guild.members не возвращает список всех участников сервера. Что делать?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Вам не дадут всех участников всех серверов. А если вы расчитываете когда-то получить верификацию, учитывайте что вам могут вообще не дать смотреть участников.
    650aa23f17855437585678.png
    1. Никогда не пишите в БД в on_ready. Вы миллион раз будете запускать бота и он миллион раз будет писать миллион пользователей
    2. Не храните пустых пользователей. 99% участников серверов не воспользуются вашим ботом никогда, зачем вы их храните?
    3. Добавляйте запись когда в ней есть необходимость, используйте INSERT ... ON CONFLICT ... UPDATE
    Ответ написан
    Комментировать