Ответы пользователя по тегу discord.py
  • Почему не показывает ник человека который пригласил пользователя на сервер в discord.py?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Давайте пройдем пошагово по алгоритму:
    1) Вы смотрите в какой канал зашел пользователь
    - На нем отвалятся те, у кого нет доступа к этому каналу и те кто заходят без конкретного канала

    2) Ищите первого человека, кто создавал для этого канала
    - Тут отвалятся несколько приглашений на один канал

    3) Ожидаете что будет пригласивший
    - Хотя это опциональное поле.

    Итого даже если звезды сойдутся и на ком-то все отработает, считать все равно будет неправильно, т.к алгоритм предполагает, что на один канал может пригласить только один человек.

    Теперь правильный алгоритм:
    1) Заводите команду, например /invite, которой генерируете приглашения за пользователя.
    2) При генерации сохраняете в БД кто команду вызвал, в формате вроде (user_id, url)
    3) При заходите смотрите обязательное поле url и смотрите какой пользователь его генерировал - он и будет пригласившим.
    Ответ написан
    Комментировать
  • Как отправлять ответы с модального окна в конкретный канал?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    response это ответ, он может быть только в том же канале, где и сообщение на которое собственно отвечаешь.

    Чтобы отправить сообщение (не ответ) в другой канал, получаешь его через get_channel, и используешь channel.send
    Ответ написан
    Комментировать
  • Unknown interaction, как исправить?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Ошибка возникает на строке await interaction.response.defer(), которой в "некоей панели с кнопками" вообще не должно быть.
    Единственное предназначение команды defer - отложить ответное взаимодействие пользователю, если не успеваешь дать ответ за 3 секунды.

    По приложенному коду дать ответ невозможно, поскольку не приложено ни то, где и как вьюха вызывается, ни регистратор обработки при перезапуске, ни кода собственно кнопок, которые перестают работать. Так что берите пример из официальной документации и сравнивайте, что ничего не пропустили. В комментариях все подробно расписано.
    Ответ написан
  • Не приходит уведомление о новых роликах в дискорд канале в боте discord.py?

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

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

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Самого запуска бота в коде нет. Собственно поэтому и ошибок нет без запуска.
    Последней строчкой
    bot.run(TOKEN)

    P.s ознакомьтесь с правилами ресурса и исправьте вопрос, если надеетесь на дальнейшую помощь
    Ответ написан
    Комментировать
  • Как управляя своим аккаунтом дискорда отправлять сообщения другу на 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
    Ответ написан
    Комментировать