Discord.py Cog не может принимать параметры содержимого

Итак, я сейчас в discord.py, и всякий раз, когда я напрямую редактирую bot.py (мой основной файл), я могу реализовать версию моей команды подсказки.

@bot.command(name = 'suggest', help = 'Use this command to give a suggestion to the server')
async def suggest(ctx, content):
    channel = discord.utils.get(bot.guilds[0].channels, name = 'suggestions')
    print('Suggest command triggered, content is {}'.format(content))
    await channel.send(content)

^ бот - это просто моя версия клиента

Это работает отлично (за исключением того факта, что я получаю только первое слово контента, поэтому, если бы кто-то мог решить это, это тоже было бы неплохо

Но когда я копирую пасту в свой винтик

    @commands.command(name = 'suggest', help = 'Use this command to give a suggestion to the server')
    async def suggest(self, bot, ctx, content):
        print('Suggest command triggered')
        channel = discord.utils.get(bot.guilds[0].channels, name = 'suggestions')
        print('Content is {}'.format(content))
        await channel.send(content)

Это не работает. Кто-нибудь может мне помочь?


person klxu03    schedule 18.03.2020    source источник


Ответы (1)


Для винтика этот параметр bot не нужен, поэтому вы просто указываете

    @commands.command(name = 'suggest', help = 'Use this command to give a suggestion to the server')
    async def suggest(self, ctx, content):
        print('Suggest command triggered')
        channel = discord.utils.get(bot.guilds[0].channels, name = 'suggestions')
        print('Content is {}'.format(content))
        await channel.send(content)

Что касается единственного, имеющего первое слово, discord.py разделяет аргументы по словам, поэтому вы можете просто сгруппировать их все с помощью *, например:

    async def suggest(self, ctx, *content):  # gets all the words in a tuple
person Kevin Sheng    schedule 07.10.2020