Ответы пользователя по тегу discord.py
  • Как отладить ошибки в коде?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    FlegYy, собственный вопрос перечитайте, вы ctrl-v нажали дважды и не затерли токен.
    В официальной документации дана инструкция по созданию токена и выдаче интентов, читать инструкции надо там. Судя по отсутствию реакции у вас не выдан MESSAGE CONTENT INTENT, а вы сделали префиксную команду вместо слеша. Остальные инструкции тоже прочтите, в том числе как логировать.

    Вы правильно описали, что код как бы рабочий. В реальности в нем в половине мест бот сломается при определенных обстоятельствах. Сколько там других людей писали такой же код, не делает его более качественным. Рассмотрите вариант фриланса, маловероятно что можете корректно реализовать задуманное.
    Ответ написан
  • Почему команды бота(disnake) не обновляются?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Почему команды бота(disnake) не обновляются?
    Потому что в коде есть какая-то ошибка, препятствующая обновлению. Например намудрили с декораторами.

    Команда работает верно, но почему-то в боте( слэш командах ) она не показывается, уже прошел день.
    Слеш-команда не может верно работать, если она не показывается. Вероятно вы сделали префикс "/", что делать нельзя, поскольку с ним слеш-команды работать не будут.

    Почему команды бота(discord.py) не обновляются?
    Во-первых для разработки объявляется тестовый сервер и обновление на нем происходит мгновенно
    bot = commands.Bot("!", test_guilds=[123456789, 987654321])

    Во-вторых есть флаг дебага sync_commands_debug, который выдаст в логи дополнительную информацию
    Ответ написан
    Комментировать
  • Проблемы с кодом disnake?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    TypeError: Client.__init__() got an unexpected keyword argument 'help_commands'

    Жмешь на commands.Bot, проваливаешься в описание и находишь что аргумент должен зваться help_command без s
    Ответ написан
    Комментировать
  • Почему не работает функция?

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

    Однако для метода add_roles помимо HTTP ошибок есть только одно исключение, которое возникает, если у бота нет прав на выдачу роли.
    Убедитесь, что у бота есть нужные права и что роль, которую вы пытаетесь выдать находиться в списке ролей ниже, чем наивысшая из ролей бота.
    Ответ написан
    Комментировать
  • Не отправляет ответ что делать?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    что делать?

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

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Текущая структура кода не предусматривает адекватного способа решения поставленных вами задач, а правила ресурса в целом не предусматривают решение чужих задач. Так что на вопрос есть три возможных ответа:
    1. Добавить любого существующего, их сотни на любой вкус
    2. Сформировать ТЗ и пойти на фриланс
    3. Выучить язык за пределами if...else..., описать модель предметной области, продумать объекты и их взаимодействие, нарисовать схему, написать тесты, разделить задачи на более мелкие подзадачи и реализовать их.
    Ответ написан
    Комментировать
  • Disnake не находит команду. как решить?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Потому что нельзя делать префиксом слеш
    Ответ написан
  • Как получить содержание сообщения disnake.interaction?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    original_message это корутина. Соответственно рабочий код будет как вы сами и написали будет
    message = await interaction.original_message()
    При этом в приложенном коде нет await

    При любых подобных проблемах делайте print(type(obj)) и смотрите по документации что вам вернулось.
    Ответ написан
  • Как сделать слэш команду с выбором человека и выбором 1 из 3 пунктов? И желательно чтобы бот это всë выводил в ответ + кто отправил команду. Можно?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Я здесь вижу 4 отдельных вопроса и вижу 0 попыток самостоятельно это реализовать.

    Да все это сделать можно, открываете документацию и изучаете.
    Даже 3 строчки что вы приложили дают понять, что вы ее не открывали, поскольку слеш-команды принимают не Контекст, а Взаимодействие. Это разные объекты с разными атрибутами и методами.
    @client.tree.command()
    async def send(interaction: discord.Interaction, text_to_send: str):
        await interaction.response.send_message(text_to_send)

    В частности у него есть атрибут response, который как раз отвечает за ответ, а не самостоятельное сообщение.

    Кто вызвал команду лежит в user.

    Для выбора человека и выбора из пунктов нужно ознакомиться со страницей discord-converters, там даны все типы, которые можно передать в параметры команды. Нужно только проставить типы, все остальное библиотека делает сама.
    Ответ написан
  • Как получить Member, имея id пользователя?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    в дискорде есть кнопка, и у этой кнопки свой тэг ввиде 'y/n user_id role_id'
    Проверяйте, что она имеет именно этот вид. И get_role и get_member возвращают None в случае если не найден искомый ID.
    Почему он не найден вопрос к вам.
    Ответ написан
    Комментировать
  • Как осуществить кнопку очистки выбора в меню выбора (компонента embed)?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Вообще это не предусмотрено, поскольку placeholder подразумевает что ничего не выбрано, но вы можете обновить основное сообщение в конце callback'a
    await interaction.message.edit(view=DropdownView())
    Ответ написан
    Комментировать
  • Почему не показывает ник человека который пригласил пользователя на сервер в 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. Вот в него и стоит отправлять уведомления.
    Ответ написан
    Комментировать