@adrenalinruslan

Telegram bot выполнить сначала функцию?

Вообщем, такой вопрос, как можно сделать так, чтобы какое бы сообщение не пришло, сначала должна выполниться определенная функция. Использую: pyTelegramBotAPI

Сделал вот так:

def auth(message):
	global authorized
	
	if(message.chat.id in authorized):
		return True
	
	telegram.send_message(message.chat.id, 'Для начала введите команду: /start')
	
	return False


@telegram.message_handler(func = auth, commands = [ 'start' ])
def start(message):
	telegram.send_message(message.chat.id, 'Hello world!')


@telegram.message_handler(func = lambda message: True)
def echo(message):
	telegram.send_message(message.chat.id, 'Hello world - two!')

Но, после сообщения: "Для начала введите команду: /start", приходит еще и сообщение: "Hello world - two!", а мне не нужно так.
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 1
@anerev
1. Почитайте про lambda выражения pythonicway.com/python-functinal-programming#lambda.
2. В этой библиотеке можно использовать не только lambda, но если использовать её то вам же проще:
@telegram.message_handler(func = lambda message:  message.chat.id in authorized)
def echo(message):
   telegram.send_message(message.chat.id, 'Hello world - two!')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы