Skip to content

Instantly share code, notes, and snippets.

@JosXa
Created July 11, 2017 15:43
Show Gist options
  • Save JosXa/29f1ff488e4645fa9117a323e68aee8f to your computer and use it in GitHub Desktop.
Save JosXa/29f1ff488e4645fa9117a323e68aee8f to your computer and use it in GitHub Desktop.
import datetime
import logging
from peewee import *
from telegram import Update
from telegram import Message as TelegramMessage
from telegram import Chat as TelegramChat
from telegram import User as TelegramUser
from model import User
from model.basemodel import BaseModel
log = logging.getLogger(__name__)
class Message(BaseModel):
id = PrimaryKeyField()
chat_id = IntegerField()
message_id = IntegerField()
from_user = ForeignKeyField(User, related_name='message')
date = DateTimeField()
reply_to_message = ForeignKeyField('self', null=True)
forward_from = ForeignKeyField(User, null=True)
forward_date = DateTimeField(null=True)
text = TextField()
@staticmethod
def from_update(update: Update):
message = update.effective_message
chat = update.effective_chat
user = update.effective_user
return Message.from_telegram_objects(message, chat, user)
@staticmethod
def from_telegram_objects(message: TelegramMessage, chat: TelegramChat, user: TelegramUser):
try:
obj = Message.get(chat_id=chat.id, message_id=message.message_id)
except Message.DoesNotExist:
obj = Message(chat_id=chat.id, message_id=message.message_id)
obj.from_user = User.from_telegram_object(user)
obj.date = message.date
if message.reply_to_message:
obj.reply_to_message = Message.from_telegram_objects(message.reply_to_message, chat, user)
if message.forward_from:
obj.forward_from = User.from_telegram_object(message.forward_from)
obj.forward_date = message.forward_date
obj.text = message.text
obj.save()
return obj
def __repr__(self):
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment