import telebot import datetime import sqlite3 class Database: def __init__(self,db_name) -> None: self.db_name = db_name self.__create_table() def __create_table(self): sql = self.connect_db() sql["cursor"].execute(""" create table if not exists users ( id integer primary key autoincrement, id_telegram integer not null unique, username text, first_name text, last_name text, date_register date, access boolean default 1 ) """) sql["cursor"].execute(""" create table if not exists messages ( id integer primary key autoincrement, id_user integer not null, message_id integer not null, message_text text not null, date_send date, status boolean default 0 check(status in (0,1)), foreign key (id_user) references users(id) ) """) self.close(sql['connect'],sql['cursor']) def connect_db(self): with sqlite3.connect(self.db_name) as connect: cursor = connect.cursor() return {"connect":connect,"cursor":cursor} def check_user(self,user_id: int): sql = self.connect_db() sql["cursor"].execute("select * from users where id_telegram = ?", (user_id,)) info_users = sql["cursor"].fetchone() self.close(sql['connect'],sql['cursor']) if info_users is None: return {"status":False} return {"status":True,"info_user":info_users} def create_user(self, message: telebot.types.Message): sql = self.connect_db() date = datetime.datetime.now().strftime("%Y-%m-%d") sql["cursor"].execute(""" insert into users (id_telegram, username, first_name, last_name, date_register) values (?,?,?,?,?) """, (message.from_user.id, message.from_user.username,message.from_user.first_name,message.from_user.last_name,date)) sql["connect"].commit() self.close(sql['connect'],sql['cursor']) def create_message(self,message: telebot.types.Message): sql = self.connect_db() date = datetime.datetime.now().strftime("%Y-%m-%d") sql["cursor"].execute(""" insert into messages (id_user, message_id, message_text, date_send) values (?,?,?,?) """, (message.from_user.id,message.message_id,message.text,date)) sql["connect"].commit() self.close(sql['connect'],sql['cursor']) def close(self,connect,cursor): cursor.close() connect.close() class TelegramBot(Database): def __init__(self,db_name,token): super().__init__(db_name) self.bot = telebot.TeleBot(token) self.router() def router(self): @self.bot.message_handler(commands=['start']) def start(message): text = "" if self.check_user(message.from_user.id)["status"]: text += f"С возвращением, {message.from_user.first_name}" else: self.create_user(message) text += f"Добро пожаловать, {message.from_user.first_name}" self.bot.send_message( message.chat.id, text ) @self.bot.message_handler(func=lambda message: True) def echo_all(message): check = self.check_user(message.from_user.id) if not check["status"]: return self.create_message(message) self.bot.reply_to(message,"Сообщение отправлено админу") self.bot.polling() TelegramBot( db_name="tg.db", token="7037219892:AAFbu4QNhX6ffS0X1XoFiNTkpTa80yousC4" )