Возможно ли использовать функции вне 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