@flurixxx

Discord.py одноразовость команды?

Хотел сделать команду !start которая создает на сервере роль "muted", но чтобы она работала 1 раз на одном сервере. Вот сам код:
@bot.command()
@has_permissions(manage_roles=True)
async def start(ctx,name="muted"):
		guild = ctx.guild
		for role in guild.roles:
			if name.lower() not in role.name.lower():
				perms = discord.Permissions(send_messages=False)
				await guild.create_role(name="muted", permissions=perms)
				await ctx.send(embed = discord.Embed(description = '''Первоначальная настройка бота завершена!
Удачного пользования :)''', color = 0x49FF33))
				return role
			else:			
				await ctx.send(embed = discord.Embed(description = 'Бот уже настроен!', color = 0x49FF33))
				return role


Команда работает, и создает роль, но её можно использовать много раз. Как сделать чтобы она была одноразовой?
  • Вопрос задан
  • 468 просмотров
Решения вопроса 1
Alexandre888
@Alexandre888 Куратор тега Discord
Javascript-разработчик
есть множество способов.
к примеру, подключите .json-файл.
после использования команды !start, записывайте в этот файл ID сервера и количество использований.
создайте условие: если количество использований = 1, бот отправляет в чат какое-нибудь сообщение
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Taruu
@Taruu
Шкодер на Python, и немного на C/С++ lua...
Можно создать роль при заходе на сервер при помощи эвента on_guild_join и уже при заходе на сервер бот сам сделает свою роль (нужна защита от лимита ролей на сервере)
Так же если есть база данных то просто заносить данные об настройке на данном сервере.
Так же можно использовать декоратор для проверки. Есть ли роль на сервере. (Сверять на название роли)
Пример из документации:
async def is_owner(ctx):
    return ctx.author.id == 316026178463072268

@bot.command(name='eval')
@commands.check(is_owner)
async def _eval(ctx, *, code):
    """A bad example of an eval command"""
    await ctx.send(eval(code))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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