Skip to content

Instantly share code, notes, and snippets.

@k4ml
Created June 26, 2015 00:42
Show Gist options
  • Save k4ml/950e040b7ae83e92a1ac to your computer and use it in GitHub Desktop.
Save k4ml/950e040b7ae83e92a1ac to your computer and use it in GitHub Desktop.
Telegram Bot models
from peewee import *
db = SqliteDatabase(None)
class BaseModel(Model):
class Meta:
database = db
class TGUser(BaseModel):
id_ = IntegerField(primary_key=True)
first_name = CharField()
last_name = CharField(default='')
username = CharField(default='')
class TGGroup(BaseModel):
id_ = IntegerField(unique=True)
title = CharField() # only exists in group chat
class TGChat(BaseModel):
user = ForeignKeyField(TGUser, null=True)
group = ForeignKeyField(TGGroup, null=True)
class TGMessage(BaseModel):
message_id = IntegerField()
from_ = ForeignKeyField(TGUser)
chat = ForeignKeyField(TGChat)
text = TextField(default='')
date = IntegerField()
def log_message(data):
from_ = data['message']['from']
tguser, created = TGUser.get_or_create(
id_=from_['id'],
first_name=from_['first_name'],
last_name=from_.get('last_name', ''),
username=from_['username']
)
chat_id = data['message']['chat']['id']
if chat_id < 0:
tggroup, created = TGGroup.get_or_create(id_=chat_id, title=data['message']['chat']['title'])
tgchat, created = TGChat.get_or_create(group=tggroup)
else:
tgchat, created = TGChat.get_or_create(user=tguser)
if 'text' in data['message']:
tgmessage = TGMessage(
from_=tguser,
chat=tgchat,
text=data['message']['text'],
date=data['message']['date'],
message_id=data['message']['message_id']
)
tgmessage.save()
if __name__ == '__main__':
db.init('hijri.db')
db.connect()
db.create_tables([TGUser, TGGroup, TGChat, TGMessage])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment