python телеграм бот

как сделать одну и ту же команду к примеру bot.send_message(message.chat.id, "LOL") но что бы работало на 2 разных команды


Ответы (2 шт):

Автор решения: Денис

Два варианта... Первый:

@bot.message_handler(content_types=["text"])
def test(message):
    if message.text == 'komand_one':
       bot.send_message(message.chat.id, "LOL")
    if message.text == 'komand_two':
       bot.send_message(message.chat.id, "LOL")

Второй:

@bot.message_handler(commands = ['one'])
def test(message): 
     bot.send_message(message.chat.id, "LOL")
@bot.message_handler(commands = ['two'])
def test(message):
     bot.send_message(message.chat.id, "LOL")
→ Ссылка
Автор решения: oleksandrigo

Хоть ответ уже есть напишу, более, скажем так, красивый вариант. Но думаю стоит для начала немного прояснить некоторые моменты.
Вы работаете с системой где вы ловите данные от телеграмма и как-то обрабатываете их, имеется ввиду хендлеры. То бишь если вы сделаете хендлер, который ловит написание юзером определенной команды (по факту это слеш с текстом, но фильтр для хендлера другой) то, то что вы напишите в хендлере будет выполнятся. Даже если это страшно-ужасное повторение кода, он будет работать.

# ещё кое-что, если вы намерены ловить исключительно текст, то писать 
# content_types=["text"] не обязательно, это стоит по умолчанию
# юзаем фильтр где проверяем будет ли наш текст равен определенным строкам
# Это при условии что вы ловите не команды, а просто текст
@bot.message_handler(func=lambda message: message.text in ["command_one", "command_two"])
def text_one_two(message):
   bot.send_message(message.chat.id, "LOL")

# Это при условии что ловите команды, тут красивее
@bot.message_handler(commands=['command_one', 'command_two'])
def command_one_two(message): 
     bot.send_message(message.chat.id, "LOL")
→ Ссылка