как я могу отобразить в #channel участников с определенной ролью? (с discord.py) - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь написать команду в моем (первом) боте, которая печатает на канале разногласий все элементы в определенной @role (в этом она называется "Serf"), это моя команда / функция

@client.command()
async def snap(ctx):
    target = discord.Role.members("Serf")
    for person in target:
        await ctx.send(person)

но ничего не происходит и я получаю эту ошибку в терминале

Ignoring exception in command snap:
Traceback (most recent call last):
  File "/home/thonkpad/.local/lib/python3.7/site-packages/discord/ext/commands/core.py", line 83, in wrapped
    ret = await coro(*args, **kwargs)
  File "Python/thanosBot/bot.py", line 28, in snap
    target = discord.Role.members("Serf")
TypeError: 'property' object is not callable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/thonkpad/.local/lib/python3.7/site-packages/discord/ext/commands/bot.py", line 892, in invoke
    await ctx.command.invoke(ctx)
  File "/home/thonkpad/.local/lib/python3.7/site-packages/discord/ext/commands/core.py", line 797, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "/home/thonkpad/.local/lib/python3.7/site-packages/discord/ext/commands/core.py", line 92, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'property' object is not callable

1 Ответ

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

Проблема в том, что вы вызываете сам объект discord.Role и не находите объект Role с указанной вами ролью c. Вы можете сделать что-то вроде этого:

@client.command()
async def snap(ctx):
    role = discord.utils.get(ctx.message.guild.roles, name="Serf")
    target = role.members
    for person in target:
        await ctx.send(person.name)

target будет список discord.Member объектов

...