Задать вопрос
Gafarchik
@Gafarchik
123

Discord.py bot ошибка роли?

Доброго времени суток!
Написал дискорд бота на python и при добавлении новых функций возникла ошибка.
Функция должна выдавать роли но пока выдает это:
Traceback (most recent call last):
  File "C:\Users\gafig.DESKTOP-B4N254S\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\bot.py", line 892, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\gafig.DESKTOP-B4N254S\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\core.py", line 790, in invoke
    await self.prepare(ctx)
  File "C:\Users\gafig.DESKTOP-B4N254S\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\core.py", line 751, in prepare
    await self._parse_arguments(ctx)
  File "C:\Users\gafig.DESKTOP-B4N254S\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\core.py", line 670, in _parse_arguments
    transformed = await self.transform(ctx, param)
  File "C:\Users\gafig.DESKTOP-B4N254S\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\discord\ext\commands\core.py", line 516, in transform
    raise MissingRequiredArgument(param)
discord.ext.commands.errors.MissingRequiredArgument: member is a required argument that is missing.

Вот сама функция
@bot.command(pass_context=True)
async def вип(ctx,member:discord.Member):
    await ctx.channel.purge(limit = 1)
    vip_role = discord.utils.get(ctx.message.guild.roles,name = 'VIP')
    await member.add_roles(vip_role)
    retStr = (f"""```{member} получил VIP от администрации сервера!```""")
    embed=discord.Embed(title="Новый VIP",colour = discord.Colour.orange())
    embed.add_field(name="VIP",value=retStr)
    await ctx.send(embed=embed)

Прикол в том что функции которые были написаны до этого работают.Обдумав это я решил скопировать старую функцию и изменить ей имя но ошибка.Из-за чего ошибка возникла и как ее решить?
  • Вопрос задан
  • 250 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
MissingRequiredArgument означает что команда не получила необходимый аргумент.

Для команды написанной в вашем примере требуется указать пользователя.

Примечание: [p] - префикс указанный для вашего бота
[p]вип - вернет ошибку
[p]вип DiscordTag#0000 - не вернет, в случае если пользователь с тегом DiscordTag#0000 существует на сервере

Примечание: pass_context=True - устаревший кусок кода, на текущей версии Discord.py такого аргумента у конструктора команд нет, Context передаётся в команду всегда
Примечание: await ctx.channel.purge(limit = 1) - я так предполагаю, этот участок кода вами используется для удаления сообщения с командой. Если это так, рекомендую заменить его на await ctx.message.delete() во избежание (возможного) "racing condition"

Примечание
Почему у меня создается ощущение, что где-то появился очень кривой русскоязычный туториал по ботам на discord.py?
Кривой - потому что с упоминанием pass_context и purge для удаления сообщений автора
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы