Nano Hash - криптовалюты, майнинг, программирование

Как дать разрешения владельца бота Discord?

Я работаю над ботом discord.py, никаких проблем, мой код работает нормально, но я хотел знать, как предоставить разрешения владельца бота, он должен удалить роль, которая дает все высокие разрешения (все разрешения, которые есть в Сервер ›Настройки сервера› роли ›имя роли), поэтому ему следует удалить свою роль, но он выдает эту ошибку:

discord.errors.Forbidden: 403 Forbidden (код ошибки: 50013): Отсутствуют разрешения

@bot.command(name="godRemove")
async def godremover(ctx, persona, numerogod):
    channel = bot.get_channel(id=786285288469037197)
    numerogod=int(numerogod)
    if not numerogod>1:
        numerogod=1
    #hasadded=False
    #hasgod=False
    rolenumber=0
    try:
        guild=ctx.guild
        if ctx.author.name in canAddGod:
            for i in guild.members:
                if str(i)[:-5].lower().strip()==persona.lower().strip():
                    for role in i.roles:
                        #if str(role)=="God":
                            #hasgod=True
                        if representsint(str(role)):
                            rolename=str(int(str(role))-numerogod).strip().lower()
                            rolenumber=int(rolename)
                            if rolenumber>1:
                                if discord.utils.get(ctx.guild.roles, name=rolename)!=None:
                                    togiverole=discord.utils.get(guild.roles, name=rolename)
                                    await i.add_roles(togiverole)
                                    await i.remove_roles(role)
                                    #hasadded=True
                                    await channel.send(removedliteral)
                                    return
                                else:
                                    togiverole=await ctx.guild.create_role(name=str(int(str(role))+numerogod), colour=discord.Colour(0xFFFFFF))
                                    await i.add_roles(togiverole)
                                    await i.remove_roles(role)
                                    #hasadded=True
                                    await channel.send(removedliteral)
                                    return
                            elif rolenumber==0:
                                await i.remove_roles(discord.utils.get(ctx.guild.roles, name="God"))
                            else:
                                await i.remove_roles(discord.utils.get(ctx.guild.roles, name="God"))
                                await i.remove_roles(role)
    except Exception:
        traceback.print_exc()
        await channel.send(errorliteral)

Код немного запутан, но какое-то время я не кодировал на python, поэтому вот небольшое объяснение (ps, это небольшая забавная вещь, которую я хочу добавить на свой сервер, например, все - бог, если они делают что-то забавное, я добавляю богов, если не удаляю богов, поэтому, если у них недостаточно богов (‹0), я удалю настоящую роль бога, который дает разрешения): я получаю канал, на который я должен отправлять сообщения, которые я получаю количество богов, которых нужно удалить, я установил номер роли равным 0, затем я получаю гильдию, если имя принадлежит народам, которые могут это сделать, для каждого члена я буду искать персону, которая будет членом, из которого будут удалены боги, если роль - это int, что означает, что я нашел роль, которую хочу изменить, если количество его богов больше 1, я удаляю таких богов, как если 27 и я удаляю 20, это, возможно, создаст новую роль или дайте уже созданный, если 0, он удалит роль номера, а если ‹0, то я хочу удалить роль Бога, который дает разрешения.

ОТВЕТ: Переместите роль, у которой должно быть больше разрешений, выше, чем роль, которая должна доминировать в списке ролей!


Ответы:


1

discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions означает, что бот не смог что-то сделать из-за разрешений бота. Это отдельный от владельца бота, который является другим пользователем с независимыми разрешениями.

Вам необходимо дать боту разрешение на выполнение любых действий, которые вы выполняете. Это делается в конфигурации вашего сервера / гильдии.

Если вы пишете команды, которые может выполнять только владелец бота, в Discord.py есть декоратор под названием is_owner.

15.01.2021
  • Привет! спасибо за быстрый ответ и извините за мой поздний ответ, можете ли вы связать мне документы для is_owner? Спасибо! 16.01.2021
  • discordpy.readthedocs.io/ ru / latest / ext / commands / 16.01.2021
  • спасибо, но как это может мне помочь? Я уже делаю эту проверку (сам), затем бот должен удалить эту роль, которую обычно может удалить только владелец, я не нашел ничего в поиске 16.01.2021
  • Тогда я не слежу за тем, что вы пытаетесь сделать. какую роль вы пытаетесь снять? Вы можете предоставить код? 16.01.2021
  • о, конечно извините, я изменю вопрос 16.01.2021
  • Изменено, извините, длинновато 16.01.2021
  • Если вы просто пытаетесь удалить роли, убедитесь, что у вашего бота есть разрешение на это. 16.01.2021
  • Конечно, у него есть, я дал ему все разрешения, которые мог, но даже роль, которую он пытается удалить, имеет все разрешения, я думаю, что это проблема 16.01.2021
  • Документы подтверждают ваше подозрение: у вас должно быть разрешение manage_roles, чтобы использовать это, а удаленные роли должны отображаться в списке ролей ниже, чем самая высокая роль участника. discordpy.readthedocs.io/en/latest/ 16.01.2021
  • Спасибо! Я не так хорош с разногласиями, поэтому решением было просто переместить разрешение в список разрешений :) 16.01.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..