May 15, 2020

О боте

Устройство

Модели

В боте всего 2 модели, это User и Data.

from peewee import *
import uuid
import datetime

db = SqliteDatabase('db.db')

class BaseModel(Model):
    class Meta:
        database = db
  • User - модель пользователя
class User(BaseModel):
    user_id = IntegerField(unique=True)
    username = CharField(default=False)
    firstname = CharField(default=False)
    lastname = CharField(default=False)
    registerdate = DateField(default=datetime.datetime.now)
    uuid = UUIDField(primary_key=True, default=uuid.uuid4)
    action = TextField(default=False)
    tmp = TextField(default=False)
  • Data - модель Блока
class Data(BaseModel):
    user = ForeignKeyField(User)
    name = TextField()
    data = TextField()
    login = TextField(default=False)
    other = TextField(default=False)
    uuid = UUIDField(primarykey=True, default=uuid.uuid4)
    creationdate = DateField(default=datetime.datetime.now)
    salt = TextField()
    
db.connect()
db.create_tables([User, Data])

Шифрование

Шифрование посредством AES и обрезанный до 32-ух символов PBKDF2 хэш пароля пользователя в качестве ключа шифровки.

Телеграм

Соединение с телеграмом по https соеднению средствами модуля pytelegrambotapi

Пользователь - Шифрование (MTproto) - Телеграм - https - Сервер - AES

В будущем планируется сделать так:

Пользователь - Шифрование (MTproto) - Телеграм - Шифрование (MTproto)- Сервер - AES

Что гораздо надёжнее, и не допускает утечку с нашей стороны. (Хотя SSL тоже надёжен)

Код

Доступен по ссылке.

Для запуска создайте файл cfg.txt и заполните его так

{"token": "[ВАШ ТОКЕН БОТА, МОЖНО ВЗЯТЬ У @botfather]", "id": [ВАШ ID, МОЖНО ВЗЯТЬ У @userinfobot]}

Затем

python bot.py