'NoneType' object is not callable / pytelegrambot api
при попытке перезаписать глобальную переменную вылетает нон тайп ошибка вылетает в fio = message.text при попытке записать текст пользователя в переменную Весь код:
import telebot
from telebot import types
import smtplib, ssl
TOKEN = '************************'
bot = telebot.TeleBot(TOKEN)
smtp_server = "smtp.gmail.com"
sender_email = "*****************"
receiver_email = "********************"
password = '***********************'
context = ssl.create_default_context()
fio = None
@bot.message_handler(commands=['start'])
def start(message):
global fio, birth_date, passport_date,passport_org
fio = None
print(fio)
markup = types.InlineKeyboardMarkup()
rus = types.InlineKeyboardButton("🇷🇺 Русский 🇷🇺",
callback_data='rus')
markup.row(rus)
mess = f"Здравствуйте, <b>{message.from_user.first_name}
{message.from_user.last_name}</b>! Выберете язык дальнейшего
общения:"
bot.send_message(message.chat.id, mess, parse_mode='html',
reply_markup=markup)
@bot.callback_query_handler(func=lambda callback: True)
def callback_message(callback):
if callback.data == 'rus':
bot.send_message(callback.message.chat.id, 'Еще раз
здравствуйте! Я ваш персональный бот помощник! Я здесь чтобы помочь
вам устроиться в фирму ЭГИДА.',
parse_mode='html')
rus(callback.message)
if callback.data == 'yes_rus':
bot.send_message(callback.message.chat.id, 'Отправляю
ваши данные для рассмотрения')
bot.register_next_step_handler(callback.message,
push_to_mail())
if callback.data == 'no_rus':
bot.send_message(callback.message.chat.id, 'Введите ваши
данные повторно, более внимательно')
bot.register_next_step_handler(callback.message,
start(callback.message))
def rus(message):
bot.send_message(message.chat.id, 'Чтобы зарегистрировать вас
нам нужно собрать некоторые данные. Пожалуйста введите ваши имя
фамилию и отчество')
bot.register_next_step_handler(message, get_fio_rus)
def get_fio_rus(message):
global fio
fio = message.text
print(fio)
bot.register_next_step_handler(message, final_rus(message))
def final_rus(message):
global fio
markup = types.InlineKeyboardMarkup()
yes = types.InlineKeyboardButton("Верно",
callback_data="yes_rus")
no = types.InlineKeyboardButton("Неверно",
callback_data="no_rus")
markup.add(yes, no)
bot.send_message(message.chat.id, "Проверьте ваши данные")
bot.send_message(message.chat.id, f"ФИО: {fio}")
bot.send_message(message.chat.id, f"Все верно?",
reply_markup=markup)
def push_to_mail():
global fio
m = f'{fio}'.encode('utf-8')
with smtplib.SMTP(smtp_server, port) as server:
server.starttls(context=context)
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, m)
bot.polling(none_stop=True)
код ошибки:
Traceback (most recent call last):
File "C:\Users\Сергей\Desktop\bot\test.py", line 70, in
<module>
bot.polling(none_stop=True)
File "C:\Users\Сергей\Desktop\bot\venv\Lib\site-
packages\telebot\__init__.py", line 1043, in polling
self.__threaded_polling(non_stop=non_stop, interval=interval,
timeout=timeout,
long_polling_timeout=long_polling_timeout,
File "C:\Users\Сергей\Desktop\bot\venv\Lib\site-
packages\telebot\__init__.py", line 1118, in
__threaded_polling
raise e
File "C:\Users\Сергей\Desktop\bot\venv\Lib\site-
packages\telebot\__init__.py", line 1074, in
__threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\Сергей\Desktop\bot\venv\Lib\site-
packages\telebot\util.py", line 148, in raise_exceptions
raise self.exception_info
File "C:\Users\Сергей\Desktop\bot\venv\Lib\site-
packages\telebot\util.py", line 91, in run
task(*args, **kwargs)
TypeError: 'NoneType' object is not callable
Источник: Stack Overflow на русском