Как раздать одну роль Дискорд НЕСКОЛЬКИМ ЧЕЛОВЕКАМ за одну команду Discord.py
Бот должен раздавать роли дискорд сервера нескольким людям за одно сообщение (команду) без использования реакций и доп.кнопок. Но я никак не могу это сделать. Получилось раздать роль только автору сообщения. Что я делаю не так и как это исправить?
Код, дающий роль только автору этого сообщения:
import discord
from discord.utils import get
from discord.ext import commands
client = commands.Bot(command_prefix="/", help_command=None)
@client.command()
async def test(ctx):
member = ctx.message.author
role_1 = member.guild.get_role("id of role")
await member.add_roles(role_1)
await ctx.channel.send(member)
client.run("token")
Ответы (1 шт):
Автор решения: Serg Bocharov
→ Ссылка
Как-то так:
members = [список_нужных_участников]
role_1 = member.guild.get_role("id of role")
for member in members:
await client.add_roles(member, role_1)
Сам список формируйте из объектов member:
first = discord.utils.get(message.guild.members, name='Sam')
members.append(first)
UPDATE Вот так должен выглядеть ваш код (нужно использовать контекст ctx):
import discord
from discord.ext import commands
client = commands.Bot(command_prefix="/", help_command=None)
@client.command(name="test")
async def test(ctx):
members = ['name1', 'name2']
role_1 = discord.utils.get(ctx.guild.roles, id=role_id)
for member in members:
current = discord.utils.get(ctx.message.guild.members, name=member)
await current.add_roles(role_1)
client.run("API_key")