Как исправить отсутствие требуемого аргумента в discord.py ?

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Я написал следующую команду для создания ссылки приглашения гильдии.

  @commands.command()
    async def create_invite(self,ctx,channel: discord.TextChannel):
        invite = await self.bot.channel.create_invite()
        await ctx.send(invite)
  

Я сталкиваюсь со следующей ошибкой:

 Ignoring exception in command create_invite:
Traceback (most recent call last):
  File "C:UsersRohitAppDataRoamingPythonPython37site-packagesdiscordextcommandsbot.py", line 892, in invoke
    await ctx.command.invoke(ctx)
  File "C:UsersRohitAppDataRoamingPythonPython37site-packagesdiscordextcommandscore.py", line 790, in invoke
    await self.prepare(ctx)
  File "C:UsersRohitAppDataRoamingPythonPython37site-packagesdiscordextcommandscore.py", line 751, in prepare
    await self._parse_arguments(ctx)
  File "C:UsersRohitAppDataRoamingPythonPython37site-packagesdiscordextcommandscore.py", line 670, in _parse_arguments
    transformed = await self.transform(ctx, param)
  File "C:UsersRohitAppDataRoamingPythonPython37site-packagesdiscordextcommandscore.py", line 516, in transform
    raise MissingRequiredArgument(param)
discord.ext.commands.errors.MissingRequiredArgument: channel is a required argument that is missing.

  

Я знаю, что эта команда будет работать нормально, если я не буду использовать ее внутри cogs.Я хочу знать, как правильно использовать его в cogs.

Ответ №1:

Проблема может возникнуть отсюда:

 invite = await self.bot.channel.create_invite()
  

Метод, который вы пытаетесь использовать, TextChannel.create_invite() . self.bot , который является commands.Bot объектом, не имеет channel атрибута, поэтому у вас возникает эта ошибка.

Вот как вы это сделаете:

 @commands.command()
async def create_invite(self, ctx, channel: discord.TextChannel):
    invite = await channel.create_invite()
    await ctx.send(invite)