bot = telebot.TeleBot(token='***') # связь кода с ботом
# подключение к базе данных connect = sqlite3.connect('schedule.db') cursor = connect.cursor()
@bot.message_handler(commands=['start']) def start(message): # создание кнопок markup = types.InlineKeyboardMarkup() btn1 = types.InlineKeyboardButton('3ПИ', callback_data='3pi') btn2 = types.InlineKeyboardButton('3ПМ', callback_data='3pm') markup.row(btn1, btn2) # приветствие пользователя и определение группы bot.send_message(message.chat.id, f'Привет, {message.from_user.first_name}, я бот, который поможет узнать тебе твоё расписание на эту неделю!') bot.send_message(message.chat.id, 'Для начала выбери свою группу:', reply_markup=markup)
@bot.callback_query_handler(func=lambda callback: True) def callback(callback): # определение числителя и знаменателя r = 1
# вывод расписания для прикладной информатики if callback.data == '3pi': bot.delete_message(callback.message.chat.id, callback.message.message_id) bot.send_message(callback.message.chat.id, 'Отлично, вот твоё расписание на эту неделю, пишка')
cursor.execute('SELECT * FROM ScheduleTESTai') res = cursor.fetchall() # кладём в res сразу целую строку, через for двигаемся по строкам вниз
# вывод расписания на текущую неделю i = 1 mess = "" day_copy = "" for row in res: if row[1] == r: room = row[2] typ = row[3] subject = row[4] teacher = row[5] time = row[6] day = row[7] if day_copy != day: mess += f"{day}:\n" day_copy = day i = 1 mess += f"{i}) ауд. {room} | {typ} {subject} | {teacher} | {time}\n" i += 1 bot.send_message(callback.message.chat.id, mess)
# вывод расписания для прикладной математики elif callback.data == '3pm': bot.delete_message(callback.message.chat.id, callback.message.message_id) bot.send_message(callback.message.chat.id, 'Отлично, вот твоё расписание на эту неделю, мишка')
cursor.execute('SELECT * FROM ScheduleTESTam') res = cursor.fetchall() # кладём в res сразу целую строку, через for двигаемся по строкам вниз
# вывод расписания на текущую неделю i = 1 mess = "" day_copy = "" for row in res: if row[1] == r: room = row[2] typ = row[3] subject = row[4] teacher = row[5] time = row[6] day = row[7] if day_copy != day: mess += f"{day}:\n" day_copy = day i = 1 mess += f"{i}) ауд. {room} | {typ} {subject} | {teacher} | {time}\n" i += 1 bot.send_message(callback.message.chat.id, mess)
connect.close()
bot.polling(none_stop=True) # чтобы бот работал постоянно
Дополнен 3 месяца назад
Ошибка: Traceback (most recent call last): File "C:\Users\steam\Desktop\pythonProject\create_bot.py", line 89, in <module> bot.polling(none_stop=True) # чтобы бот работал постоянно ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\steam\Desktop\pythonProject\.venv\Lib\site-packages\telebot\__init__.py", line 1189, in polling self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout, File "C:\Users\steam\Desktop\pythonProject\.venv\Lib\site-packages\telebot\__init__.py", line 1264, in __threaded_polling raise e File "C:\Users\steam\Desktop\pythonProject\.venv\Lib\site-packages\telebot\__init__.py", line 1226, in __threaded_polling self.worker_pool.raise_exceptions() File "C:\Users\steam\Desktop\pythonProject\.venv\Lib\site-packages\telebot\util.py", line 150, in raise_exceptions raise self.exception_info File "C:\Users\steam\Desktop\pythonProject\.venv\Lib\site-packages\telebot\util.py", line 93, in run task(*args, **kwargs) File "C:\Users\steam\Desktop\pythonProject\.venv\Lib\site-packages\telebot\__init__.py", line 8822, in _run_middlewares_and_handler result = handler['function'](message) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\steam\Desktop\pythonProject\create_bot.py", line 35, in callback cursor.execute('SELECT * FROM ScheduleTESTai') sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 19520 and this is thread id 3300.
Код:
import telebot
import webbrowser
from telebot import types
import sqlite3
bot = telebot.TeleBot(token='***') # связь кода с ботом
# подключение к базе данных
connect = sqlite3.connect('schedule.db')
cursor = connect.cursor()
@bot.message_handler(commands=['start'])
def start(message):
# создание кнопок
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('3ПИ', callback_data='3pi')
btn2 = types.InlineKeyboardButton('3ПМ', callback_data='3pm')
markup.row(btn1, btn2)
# приветствие пользователя и определение группы
bot.send_message(message.chat.id, f'Привет, {message.from_user.first_name}, я бот, который поможет узнать тебе твоё расписание на эту неделю!')
bot.send_message(message.chat.id, 'Для начала выбери свою группу:', reply_markup=markup)
@bot.callback_query_handler(func=lambda callback: True)
def callback(callback):
# определение числителя и знаменателя
r = 1
# вывод расписания для прикладной информатики
if callback.data == '3pi':
bot.delete_message(callback.message.chat.id, callback.message.message_id)
bot.send_message(callback.message.chat.id, 'Отлично, вот твоё расписание на эту неделю, пишка')
cursor.execute('SELECT * FROM ScheduleTESTai')
res = cursor.fetchall() # кладём в res сразу целую строку, через for двигаемся по строкам вниз
# вывод расписания на текущую неделю
i = 1
mess = ""
day_copy = ""
for row in res:
if row[1] == r:
room = row[2]
typ = row[3]
subject = row[4]
teacher = row[5]
time = row[6]
day = row[7]
if day_copy != day:
mess += f"{day}:\n"
day_copy = day
i = 1
mess += f"{i}) ауд. {room} | {typ} {subject} | {teacher} | {time}\n"
i += 1
bot.send_message(callback.message.chat.id, mess)
# вывод расписания для прикладной математики
elif callback.data == '3pm':
bot.delete_message(callback.message.chat.id, callback.message.message_id)
bot.send_message(callback.message.chat.id, 'Отлично, вот твоё расписание на эту неделю, мишка')
cursor.execute('SELECT * FROM ScheduleTESTam')
res = cursor.fetchall() # кладём в res сразу целую строку, через for двигаемся по строкам вниз
# вывод расписания на текущую неделю
i = 1
mess = ""
day_copy = ""
for row in res:
if row[1] == r:
room = row[2]
typ = row[3]
subject = row[4]
teacher = row[5]
time = row[6]
day = row[7]
if day_copy != day:
mess += f"{day}:\n"
day_copy = day
i = 1
mess += f"{i}) ауд. {room} | {typ} {subject} | {teacher} | {time}\n"
i += 1
bot.send_message(callback.message.chat.id, mess)
connect.close()
bot.polling(none_stop=True) # чтобы бот работал постоянно