Возможно ли использовать функции вне message handler?

Пишу телегарамм бота и заметил, что если обращаться к функциям вне

@bot.message_handler()

возникает ошибка:

ОШИБКА:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\Admin>cd Desktop

C:\Users\Admin\Desktop>python telegrambot.py
2020-11-19 10:19:09,255 (util.py:75 WorkerThread3) ERROR - TeleBot: "NameError o
ccurred, args=("name 'message' is not defined",)
Traceback (most recent call last):
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\telebot\util.py", line 69, in run
    task(*args, **kwargs)
  File "telegrambot.py", line 175, in send_message
    request.generate()
  File "C:\Users\Admin\Desktop\config.py", line 13, in generate
    tg.give()
  File "C:\Users\Admin\Desktop\telegrambot.py", line 78, in give
    bot.send_message(message.chat.id, '''{0}''' .format(config.password))
NameError: name 'message' is not defined
"

ПРИМЕР ТОГО, КАК Я ХОЧУ:

def hi(message):
    bot.send_message(message.chat.id, 'Hello. How are you?')

@bot.message_handler(content_types=['text'])
def send_message(message):
    if message.text.lower() == 'hi':
        hi()

ПРИМЕР ТОГО, КАК Я НЕ ХОЧУ:

@bot.message_handler(content_types=['text'])
def send_message(message):

    def hi(*args):
        bot.send_message(message.chat.id, 'Hello. How are you?')

    if message.text.lower() == 'hi':
        hi()

ВОЗМОЖНО ЛИ КАК-ТО ЭТО ОСУЩЕСТВИТЬ?


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

Автор решения: Xander

Вы забыли передать аргумент в функцию hi

Должно быть вот так:

def hi(message):
    bot.send_message(message.chat.id, 'Hello. How are you?')

@bot.message_handler(content_types=['text'])
def send_message(message):
    if message.text.lower() == 'hi':
        hi(message)  # <---------------------- нужно добавить message
→ Ссылка