Вообщем весь код ниже. Суть бота проста, он должен отправлять напоминалку во время которое указал пользователь. Строки которые отвечают за это внизу они расписаны подсказками. Бот не работает, ошибок нет, бот просто не отправляет сообщения в указанное время, спасибо за помощь тем кто поможет.
import telebot
from telebot import types
import sqlite3
import schedule
import time
import re
bot = telebot.TeleBot('апи не покажу ;)')
user_responses = {}
time_input = '00:00'
hint_input = ''
# бот приветствует пользователя и выдает ему команду /help
@bot.message_handler(commands=['start'])
def hello_message(message):
try:
# Подключаю к дб при вводе /start
connect = sqlite3.connect('users.db')
cursor = connect.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS login_id(
id INTEGER
)""")
connect.commit()
# Проверяю есть ли уже пользователь в дб
people_id = message.chat.id
cursor.execute(f"SELECT id FROM login_id WHERE id = {people_id}")
data = cursor.fetchone()
if data is None:
# Добавляю в поля пользователя
user_id = [message.chat.id]
cursor.execute("INSERT INTO login_id VALUES(?);", user_id)
connect.commit()
else:
bot.send_message(message.chat.id, 'Вы уже зарегистрированы.')
# Текст при вводе /start
bot.send_message(message.chat.id, '''
Привет, мое имя Эрис! Я помогу тебе сохранить твое время ;)''')
bot.send_message(message.chat.id, '''
Введи команду /help для просмотра всех моих команд. ''')
except Exception as e:
print(f"Error: {str(e)}")
# команда /help которая показывает что может бот.
@bot.message_handler(commands=['help'])
def help(message):
# Добавляю клавиатуру
kb = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton(text='/sethint')
btn2 = types.KeyboardButton(text='/settings')
kb.add(btn1, btn2)
# Текст при вводе /help
bot.send_message(message.chat.id, '''
Вот что я могу :)''')
bot.send_message(message.chat.id, '''
/sethint - Создать подсказку.
/settings - Управление подсказками.
''', reply_markup=kb)
# Запрашиваем у человека время
@bot.message_handler(commands=['sethint'])
def settime(message):
bot.send_message(message.chat.id, '''
Сейчас тебе нужно будет ввести время и подсказку которую тебе пришлет бот в определенное время.
''')
user_time = bot.send_message(message.chat.id, '''
Введи время в формате HH:MM:
''')
bot.register_next_step_handler(message,time_step)
# Показываем человеку введенное время и делаем правильные формат с помощью регулярного выражения.
def time_step(message):
try:
global time_input
time_input = message.text
if re.match(r'^\d{2}:\d{2}$',time_input):
bot.send_message(message.chat.id, f"Вы ввели время: {time_input}")
bot.send_message(message.chat.id, "Дальше подсказка! Введи /hint")
else:
bot.send_message(message.chat.id, "Неправильный формат времени. Используйте HH:MM.")
except Exception as e:
bot.send_message(message.chat.id, "Произошла ошибка. Пожалуйста, попробуйте снова.")
Фрагменты кода надо размещать в виде текста и оборачивать тэгом code для корректного отображения. Удобно делать кнопкой </> Это обязательно, см.п.3.8 Регламента.
Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа.
Ты хочешь, чтобы у тебя было 2 параллельных процесса - работа бота и планировщик. Я это делал через aiogram/asyncio. Иначе будет работать либо одно, либо другое. Возможно ли это сделать через субпроцессы или многопоточность - хз.