Во втором примере, который вы предоставили, похоже, что вы используете mi sh -ma sh между старыми d.py (0.16.x
) docs и d.py rewrite (1.x
).
Убедитесь, что у вас установлена самая последняя версия (перезапись), поскольку asyn c больше не поддерживается.
Вот пример с декоратором команд (использование: !newrole Member
)
@client.command()
async def newrole(ctx, *, rolename=None):
if not rolename:
await ctx.send("You forgot to provide a name!")
else:
role = await ctx.guild.create_role(name=rolename, mentionable=True)
await ctx.author.add_roles(role)
await ctx.send(f"Successfully created and assigned {role.mention}!")
mentionable
kwarg не является обязательным - по умолчанию он равен False
, если не указан - я просто установил его на True
для примера. Вы также можете написать свои собственные разрешения для роли.
И еще один пример с использованием on_message
- вместо этого рекомендуется использовать декоратор команд, так как с аргументами легче работать
async def on_message(message):
args = message.content.split(" ")[2:] # 2: because prefix contains space
if message.content.lower().startswith("as createrole"):
role = await message.guild.create_role(name=" ".join(args))
await message.author.add_roles(role)
await message.channel.send(f"Successfully created and assigned {role.mention}!")
Ссылки: