Как сделать аргументы через пробел Discord.py
Мне нужно сделать команду для отправки сообщения в определенный канал. Но дело в том, что если записать сообщение с пробелом, то 2 часть сообщения будет относится к аргументу канала. То есть:
@bot.command()
async def send(ctx, message, * , channel: discord.TextChannel):
await channel.send(message)
Если написать команду !send qq all #чат, то будет ошибка
discord.ext.commands.errors.ChannelNotFound: Channel "all <#90072344357037126>" not found.
Как сделать так, чтобы пробел не означал конец аргумента?
Ответы (3 шт):
@bot.command()
async def send(ctx, channel: discord.TextChannel, *, message,):
await channel.send(message)
Если вы хотите сохранить последовательность аргументов, то вам следует использовать команду так - !send "my message" #channel. В таком случае, всё что вы передаёте в кавычках будет считаться как аргумент message. Второй способ объяснил человек с ником RAINGM.
У вас сама команда правильная, но вы в неправильном порядке расставили их.
Вы прописали их вот так:
(ctx, message - одно сообщение до пробела, *, channel: discord.TextChannel - можно ввести как один канал, как и больше)
Вы просто должны поменять местами аргументы в команде:
(ctx, channel: discord.TextChannel, *, message)
Надеюсь помог.