package telebot // Editable is an interface for all objects that // provide "message signature", a pair of 32-bit // message ID and 64-bit chat ID, both required // for edit operations. // // Use case: DB model struct for messages to-be // edited with, say two collums: msg_id,chat_id // could easily implement MessageSig() making // instances of stored messages editable. type Editable interface { // For inline messages, return chatID = 0 MessageSig() (messageID int, chatID int64) } // StoredMessage is an example struct suitable for being // stored in the database as-is or being embedded into // a larger struct, which is often the case (you might // want to store some metadata alongside, or might not.) type StoredMessage struct { MessageID int `sql:"message_id" json:"message_id"` ChatID int64 `sql:"chat_id" json:"chat_id"` } func (x StoredMessage) MessageSig() (int, int64) { return x.MessageID, x.ChatID }