@Noobik2099

Не получается сделать так, чтобы когда я писал !role @nick выдавалась роль. Чтобы я не писал, она выдаётся мне. И да, я чайник :)?

Вот сам код. По идее, он должен выдавать роль тому, про кого я написал, но так не работает :(

import discord
from discord.ext import commands
from discord import member, message
from discord.utils import get

client = discord.ext.commands
import ctx as ctx
bot = commands.Bot(command_prefix='!')

@bot.command()
@commands.has_role('SNS')
async def test(ctx):
await ctx.send('oK')

@bot.command(pass_context=True)
@commands.has_role('SNS')
async def role(ctx):
member = ctx.message.author
role = discord.utils.get(member.guild.roles, name='Egg')
await member.add_roles(role)
await ctx.send("Роль выдана!")

bot.run('TOKEN')
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
member = ctx.message.author
role = discord.utils.get(member.guild.roles, name='Egg')
await member.add_roles(role)

Сначала получаешь автора сообщения (т.е. отправителя команды), потом выдаёшь ему роль, потом удивляешься почему так.
(К слову, а зачем делать это командой? через интерфейс дискорда в разы быстрее).

Ну собственно,
async def role(ctx):
Ты вообще параметры у команды не принимаешь.
Сделай так:
async def role(ctx, target: discord.Member):
Тогда discord.py попытается распарсить переданный аргумент как пользователя.
Ответ написан
Ваш ответ на вопрос

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

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