Задать вопрос
Пользователь пока ничего не рассказал о себе

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

Все теги (4)

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

Все ответы (10)
  • Как сделать так чтобы мой бот работал только на моём сервере?

    @john_does13
    1. Сделайте вашего бота приватным:
    • Перейдите на портал разработчика;
    • Выберите нужного бота в разделе "Applications";
    • Нажмите на вкладку "Bot" слева;
    • В разделе "PUBLIC BOT" поставьте галочку напротив "Public bots can be added..."

    Всё! Теперь только вы сможете добавлять бота на сервера.

    2. Ограничить доступ бота к дугим серверам с помощью кода:
    @client.event
    async def on_server_join(server):
        if server != MY_SERVER:
            await client.leave_server(server)

    Где, "MY_SERVER" - экземпляр класса disnake.Guild.
    Впрочем, вместо экземпляра класса Guild, вы можете использовать айди сервера следующим образом:
    if server.id != MY_SERVER_ID:

    Конечно, при таком подходе вы всё равно сможете добавить бота на сервер, если бот будет оффлайн, но это решается добавлением ивента on_ready() и добавлением в него такого же кода, как и в примере выше.
    Ответ написан
    Комментировать
  • Почему бот игнорит команду?

    @john_does13
    Почитайте документацию по Intents.
    Скорее всего ваш бот не видит обычные команды потому, что на своём портале разработчика в разделе намерений вашего бота вы не указали нужные (смотрите первую ссылку о документации). Но если коротко:
    1. Заходите на портал разработчика
    2. Выбираете своего бота
    3. Слева в меню переходите на вкладку "Bot"
    4. В разделе "Privileged Gateway Intents" включите намерение "MESSAGE CONTENT INTENT"

    Также в коде вам необходимо указать нужные намерения (intents) при создании бота. В нашем случае - это message_content:
    intents = disnake.Intents.default()
    intents.message_content = True
    bot = commands.Bot(command_prefix='!', intents=intents)
    Ответ написан
    5 комментариев
  • Как сделать, чтобы бот на disnake (python) мог выдавать админку на сервере?

    @john_does13
    Не совсем понятно, что вам нужно.
    Вы уже написали функцию, которая выдаёт случайную роль с вашего списка "roles", если в этом списке будет роль с правами Администратора, то бот (в случае если сам является администратором и роль бота выше, чем выдаваемая роь) сможет выдать эту роль пользователю.

    Если же вы хотите дать какой-то роли права администратора, то читайте документацию по этому поводу.
    Там сказано, что объект Role (роль) имеет метод "edit()", у которого есть параметр "permissions". В свою очередь "Permissions" имеет атрибут "administrator", установив который в значение "True" вы сможете дать права администратора для определённой роли.
    А уже роль вы сможете выдать пользователю, как в вашем коде.
    Ответ написан
    2 комментария