Как сделать чтобы при вводе команды создавалась роль с правами админа
Здраствуйте я делаю бота Discord на Python. Я хочу сделать команду чтобы при ее вводе она создавала роль с правами админа. Вот ее код:
@Bot.command(pass_context=True)
async def админ(ctx):
server = ctx.message.server
perms = discord.Permissions( administrator = True )
await Bot.create_role(server, 'Назв.роли', permissions=perms)
Отступы я сделать просто здесь не могу, и вот при вводе вот такая ошибка:
! 2021-06-30T15:31:21.334383+00:00 app[worker.1]: Ignoring exception in command админ: 2021-06-30T15:31:21.335538+00:00 app[worker.1]: Traceback (most recent call last): 2021-06-30T15:31:21.335598+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/ext/commands/core.py", line 85, in wrapped 2021-06-30T15:31:21.335599+00:00 app[worker.1]: ret = await coro(*args, **kwargs) 2021-06-30T15:31:21.335599+00:00 app[worker.1]: File "/app/bot.py", line 51, in админ 2021-06-30T15:31:21.335600+00:00 app[worker.1]: server = ctx.message.server 2021-06-30T15:31:21.335634+00:00 app[worker.1]: AttributeError: 'Message' object has no attribute 'server'
P.S Я использую хостинг Heroku
Ответы (2 шт):
Попробуйте заменить
server = ctx.message.server
на
server = ctx.message.guild
Прочитать про функцию create_role можно в документации.
И впредь не используйте кириллицу для обозначения функций.
from discord.ext import commands
from discord import Guild, Permissions
@commands.command(name='админ')
async def admin(self, ctx: commands.Context):
# Сервер в котором была введена команда.
guild: Guild = ctx.guild
# Создаём роль
permissions = Permissions(administrator=True)
await guild.create_role(name='Админ', permissions=permissions)