@flurixxx

Авто-выдача роли discord.py + команда указывающая id, как сделать?

Вообщем-то хотел реализовать такую вот схему:
чтобы бот автоматически выдавал роль на сервере, администратор должен написать !autorole [ID], где ID - айди роли, которую бот выдает(при заходе на сервер, каждому пользователю). Но не до конца понял как это реализовать, может кто помочь?
Вот сам код:
@bot.command()
@has_permissions(administrator=True)
async def autorole(ctx, autoroles: int):
    await ctx.send(embed = discord.Embed(description = f'ID роли для авто-выдачи указано.',color=0xFF8C00))

А потом использовать autoroles как ID канала, но не получилось
  • Вопрос задан
  • 11125 просмотров
Пригласить эксперта
Ответы на вопрос 1
@SerjLore
Здравствуй. (Если это актуально)
Бот выполняет команду так:
1. Создание цикла с объектом "bot.guilds".
2. Поиск в 1-ом пункте "member" на всём сервере.
3. Поиск ID роли по названию. (Или сам думай как сделать по айди, у меня ошибка что нельзя выдавать роль по ID)
4. Выдача роли по действию из 3-го пункта.
5. Отчет.

Сами коды, я использую коги, поэтому есть 2 варианта.
Коги:
@commands.command() # начало команды
	@commands.has_permissions(administrator = True) # нужны права администратора? - да
	async def ar(self, ctx, autoroles): #сама команда и что ей надо указать, это prefix, комаду и НАЗВАНИЕ роли.
		for guild in self.bot.guilds: # оно ищет на сервере людей
			for member in guild.members: # и тут делается все работа для member-a
				autoroles2 = discord.utils.get(ctx.message.guild.roles, name = autoroles) # нахождение айди по названию, иначе будет ошибка(у меня)
				await member.add_roles(autoroles2) # само добавление роли
		emb = discord.Embed(description = 'Роли успешно добавлены ВСЕМ участникам Discord сервера.')
		await ctx.send(embed = emb) # теперь бот сообщает что всё вышло.


Не коги:
@bot.command() # начало команды
@bot.has_permissions(administrator = True) # нужны права администратора? - да
async def ar(ctx, autoroles): #сама команда и что ей надо указать, это prefix, комаду и НАЗВАНИЕ роли.
	for guild in bot.guilds: # оно ищет на сервере людей
		for member in guild.members: # и тут делается все работа для member-a
			autoroles2 = discord.utils.get(ctx.message.guild.roles, name = autoroles) # нахождение айди по названию, иначе будет ошибка(у меня)
			await member.add_roles(autoroles2) # само добавление роли
	emb = discord.Embed(description = 'Роли успешно добавлены ВСЕМ участникам Discord сервера.')
	await ctx.send(embed = emb) # теперь бот сообщает что всё вышло.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы