telebotиспользует threading, функции с декоратором
message_handler вызываются из потока на его тредпуле. Курсор
sqlite3, созданный в конструкторе
db из главного потока, не может быть использован в вызове
send_welcome ->
user_register ->
db.query из другого потока.
Перенесите создание курсора
cur = self.con.cursor() в метод
query и сделайте его локальной переменной.
Или кешируйте создаваемые курсоры в
threading.local, если производительность в этой точке критична (не думаю, что это так, исходя из задач бота).