Как получить текст от пользователя
В чем заключается проблема, я хочу сделать так чтобы пользователь мог ввести команду /report "Сообщение" и данное сообщение приходило мне , но вся суть в том, что бот присылает мне часть сообщения , а точнее пока не встретил пробел, то есть если написать "hello world", бот пришлет мне только "hello". Надеюсь нормально объяснил.
@commands.command()
async def report(self,ctx,repmessage):
await ctx.author.send(embed = discord.Embed(
description =
f"**[REPORT]**" + '\n' +
f"----------------------------------------------" + '\n' +
f"Nick: {ctx.author}" + '\n' +
f"ID: {ctx.author.id}" + '\n' +
f"Сообщение: {repmessage}" + '\n' +
"----------------------------------------------"))
я пробовал делать async def report(self,ctx,repmessage:str):но бот тогда вообще ничего не присылал ,
также пробовал async def report(self,ctx,repmessage: str = "None"): но в таком случае проблема оставалась,
еще пробовал async def report(self,ctx, *,repmessage:str): но вновь бот ничего вообще не присылал.
Ответы (1 шт):
Чтобы весь текст пришел с пробелами, пользователь должен заключить его в кавычки. Например:
/report "hello world"
Если вы хотите обойтись без них, то тогда вам стоит обратиться к свойству `
ctx.message.content
В вашем случае это будет выглядеть так:
@commands.command()
async def report(self, ctx):
await ctx.author.send(embed = discord.Embed(
description =
f"**[REPORT]**" + '\n' +
f"----------------------------------------------" + '\n' +
f"Nick: {ctx.author}" + '\n' +
f"ID: {ctx.author.id}" + '\n' +
f"Сообщение: {ctx.message.content}" + '\n' +
"----------------------------------------------"))
Только учтите, что в контент тогда попадет и командный префикс, который предварительно стоит удалить из строки. Убрать его можно, прописав например `
ctx.message.content[1:]