telegrambot/main.py
2024-05-16 21:15:22 +03:00

98 lines
No EOL
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()
print(info_users)
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")
# TODO: specify params to query( you can get from check_user)
sql["cursor"].execute("""
insert into messages (id_user, message_id, message_text, date_send) values (?,?,?,?)
""", ())
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):
self.bot.reply_to(message,"Сообщение отправлено админу")
self.bot.polling()
TelegramBot(
db_name="tg.db",
token="7037219892:AAGoZ1bKjN79KMiEGqYCWtPOEOk8s_N0RI4"
)