Проблема с рефакторингом файла Python
Решил я значит сделать рефакторинг файла Python, а именно разбить его на несколько файлов, дабы проще было работать.
Однако, что-то пошло не так и после from date import back_anket
, бот просто ничего не делает (программа не останавливается, а просто работает в холостую).
Вот части кода 3 файлов:
Это файл api_token.py
import telebot
import sqlite3
API_TOKEN = 'API_TOKEN'
bot = telebot.TeleBot(API_TOKEN)
Файл date.py
from api_token import bot, sqlite3
def create_propper_list():
connect = sqlite3.connect('bd.sql')
curs = connect.cursor()
# Fetch user info from the database
curs.execute("SELECT chat_id FROM users")
column_data = [row for row in curs.fetchall()]
curs.close()
connect.close()
return column_data
@bot.callback_query_handler(func=lambda callback: True)
def back_anket(ankets):
user_list = create_propper_list()
print(user_list)
bot.polling(none_stop=True)
Это главный файл bot.py
import io
import json
from telebot import types
import sqlite3
from api_token import bot
from date import back_anket
start = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('Старт')
name = None
age = None
...
К сожалению, в главном файле, как я уже и сказал после импорта все работает в холостую. Надеюсь на помощь.
Ответы (1 шт):
Проблема в bot.polling(none_stop=True).
polling()
- это цикл, он блокирует выполнение кода, так как ожидает событий (сообщений от бота), что в свою очередь вызывает зависание при импорте модуля в другом файле.
Предлагаю bot.polling(none_stop=True) вызывать в самом конце, после всех импортов и вызовов.
Убрать из date.py
-> bot.polling(none_stop=True) и переместить его в файл ->bot.py
.
import io
import json
from telebot import types
import sqlite3
from api_token import bot
from date import back_anket
start = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('Старт')
name = None
age = None
...
if __name__ == '__main__':
bot.polling(none_stop=True)