Да, вы можете сделать
@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')