#python #python-3.x #discord.py
#python #python-3.x #discord.py
Вопрос:
Например, я хочу, чтобы, если я ввожу!Cuff @user, чтобы этот пользователь получил роль cuff. Кто-нибудь знает, как это сделать?
if message.content.startswith('!cuff'):
args = message.content.split(' ')
if len(args) == 2:
member: Member = discord.utils.find(lambda m: args[1] in m.name, message.guild.members)
if member:
role = get(message.server.roles, name='Cuff')
await client.add_roles('{}'.format(member.name))
Комментарии:
1. Что вы пробовали до сих пор?
2. Вы можете отредактировать свой пост, чтобы вставить туда свой код.
3. Можете ли вы отредактировать свой пост с помощью своего кода?
4. Нет, это всегда пишется так искаженно
5. Я имел в виду ваш вопрос.
Edit
Под вашим вопросом есть кнопка.
Ответ №1:
Если вы хотите создать команду, вы должны использовать discord.ext.commands
вместо on_message
event . Затем вы можете discord.Member
легко получить объект с помощью передачи аргументов.
Кроме того, client
у объекта нет атрибута add_roles
. Вы должны использовать discord.Member.add_roles(role)
, и message
у объекта нет атрибута server
, guild
вместо этого он есть.
from discord.ext import commands
client = commands.Bot(command_prefix="!")
@client.command()
async def cuff(ctx, member: discord.Member=None):
if not member:
return # or you can send message to the channel that says "you have to pass member argument"
role = get(ctx.guild.roles, name='Cuff')
await member.add_roles(role)
Комментарии:
1. Ошибка атрибута: модуль ‘discord.message’ не имеет атрибута ‘guild’
2. Какая версия discord.py вы употребляете?
3. Версия Python 3.7.4
4. Я имел в виду, используете ли вы
repl.it
илиrewrite
версию discord.py . Если переписать, то какую версию rewrite (1.4.x, 1.5.x и т.д.) Вы используете?5. Я думаю, что это должно быть
ctx.guild.roles
,message
не определено