Передайте чей-то комментарий в функцию ботов (Discord - PullRequest
0 голосов
/ 05 сентября 2018

Можно ли передать сообщение в функцию ботов? Как это:

@bot.command(pass_context=True)
async def message(ctx, user.message):
    if user.message == "xyz":
        await bot.say("Hi")

Было бы хорошо передать фактическое сообщение, а не строку с тем же содержанием.

1 Ответ

0 голосов
/ 05 сентября 2018

Да, вы можете сделать

@bot.event
async def on_message(message):
  if message.content == "Hi":
    await bot.send_message(message.channel,"Hello")

Таким образом, вы используете событие вместо команды, поэтому, когда вы пишете «Привет» в чат, бот поймает его и запустит метод

Если вы хотите передать что-то в командную функцию, вы можете сделать это, как если бы вы использовали обычный метод

@bot.command()
async def example(something):
  print(something)

Когда вы делаете !example Hello There, бот выводит Hello, потому что из строк, которые он получил в качестве входных данных (разделенных пробелами), он выбрал первое значение и присвоил его вашей переменной, как обычная программа, получающая данные от командная строка.

Чтобы поймать все элементы, вы можете использовать *args

@bot.command()
async def example(*args):
  print(args)

, который вернет кортеж всех значений, которые вы указали в чате. !example Hello There распечатает ('Hello', 'There')

...