Как попросить бота отправить обратно больше слов, а не только первое [discord.py ]

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

я просто хочу сделать поиск в Google… У меня есть остальная часть кода, чтобы сделать это, я бы изменил входной тег на тег сообщения или что-то еще

 @bot.command(aliases=['a'])
async def on_message(ctx, messages):
  await ctx.send(messages)
 

что идентификатор бота делает с этим кодом

(код, которым я хотел быть)

 @bot.command(aliases=['google'])
async def on_message(ctx, message):
  googleinput = message
  pgoogleinput = googleinput.replace(" ", " ")
  await ctx.send("https://www.google.com/search?q=" pgoogleinput)

 

Комментарии:

1. Я думаю, что здесь необходимо указать одну вещь: ваше имя команды on_message , предназначено ли это? Или вы путаете команды с on_message. В общем discord.py принимает имя функции за имя вызова команды и добавляет псевдонимы.

Ответ №1:

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

 @bot.command(aliases=['google'])
async def on_message(ctx, *, message):
  googleinput = message
  pgoogleinput = googleinput.replace(" ", " ")
  await ctx.send("https://www.google.com/search?q=" pgoogleinput)
 

Ответ №2:

вам нужно добавить * перед аргументом, который вы хотите использовать полностью. по сути, * собирает все позиционные аргументы в кортеже. Таким образом, код будет выглядеть:

 @bot.command(aliases=['a'])
async def on_message(ctx, *, messages):
  await ctx.send(messages)
 

Аналогично, для второго кода это будет выглядеть так:

 @bot.command(aliases=['google'])
async def on_message(ctx, *, message):
  googleinput = message
  pgoogleinput = googleinput.replace(" ", " ")
  await ctx.send("https://www.google.com/search?q=" pgoogleinput)
 

Они упоминаются в документации python.