Discord.py - передача роли функции аргумента - PullRequest
0 голосов
/ 03 апреля 2020

Я хотел создать команду, например! Iknow @user. Думаю, нормальный проверочный бот. Вот мой код, я вставил только важные части:

import discord
from discord.ext import commands

@client.command(pass_context=True)
async def iknow(ctx, arg):
    await ctx.send(arg)

    unknownrole = discord.utils.get(ctx.guild.roles, name = "Unknown")
    await client.remove_roles(arg, unknownrole)

    knownrole =   discord.utils.get(ctx.guild.roles, name = "Verified")
    await client.add_roles(arg, knownrole)

(Роль Неизвестно автоматически передается, когда пользователь присоединяется к серверу.)

Проблема в том, : Я получаю сообщение об ошибке в строке 6 (и я думаю, что я тоже попаду в строку 9).

Файл "/home/archit/.local/lib/python3.7/site -packages / discord / ext / commands / core.py ", строка 83, в упакованном виде
ret = await coro (* args, ** kwargs) Файл" mainbot.py ", строка 6, в iknow, ожидайте client.remove_roles (arg, unknownrole) AttributeError: у объекта 'Bot' нет атрибута 'remove_roles'

Я только начал изучать python, поэтому, пожалуйста, не запугивайте меня!

1 Ответ

0 голосов
/ 03 апреля 2020

Вы ищете Member.remove_roles и Member.add_roles.

Вы также можете указать, что arg должно иметь тип discord.Member, которая автоматически преобразует ваше упоминание в соответствующий Member объект.

Примечание, больше нет необходимости указывать pass_context=True при создании команд. Это делается автоматически, и context всегда является первой переменной в сопрограмме команды.

import discord
from discord.ext import commands

client = commands.Bot(command_prefix='!')


@client.command()
async def iknow(ctx, arg: discord.Member):
    await ctx.send(arg)

    unknownrole = discord.utils.get(ctx.guild.roles, name="Unknown")
    await arg.remove_roles(unknownrole)

    knownrole = discord.utils.get(ctx.guild.roles, name="Verified")
    await arg.add_roles(knownrole)

client.run('token')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...