diff --git a/.vscode/launch.json b/.vscode/launch.json index ea2420b..218afc5 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -17,7 +17,13 @@ // https://t.me/Aliyun_4K_Movies/26640 // "--alias", "Aliyun_4K_Movies", // https://t.me/abskoop/8501 - "--alias", "abskoop", + // "--alias", "abskoop", + // https://t.me/shareAliyun/65443 + // "--alias", "shareAliyun", + // https://t.me/meizitu3/6879 + // "--alias", "meizitu3", + // https://t.me/DNSPODT/5156 + "--alias", "DNSPODT", "--history", ] } diff --git a/database/telegram_resource/public/model/channel_messages.go b/database/telegram_resource/public/model/channel_messages.go index 3748699..df6c9ba 100644 --- a/database/telegram_resource/public/model/channel_messages.go +++ b/database/telegram_resource/public/model/channel_messages.go @@ -19,4 +19,5 @@ type ChannelMessages struct { Media string PublishedAt time.Time CreatedAt time.Time + GroupID int64 } diff --git a/database/telegram_resource/public/table/channel_messages.go b/database/telegram_resource/public/table/channel_messages.go index 69f6466..6c9a9f4 100644 --- a/database/telegram_resource/public/table/channel_messages.go +++ b/database/telegram_resource/public/table/channel_messages.go @@ -24,6 +24,7 @@ type channelMessagesTable struct { Media postgres.ColumnString PublishedAt postgres.ColumnTimestampz CreatedAt postgres.ColumnTimestampz + GroupID postgres.ColumnInteger AllColumns postgres.ColumnList MutableColumns postgres.ColumnList @@ -71,8 +72,9 @@ func newChannelMessagesTableImpl(schemaName, tableName, alias string) channelMes MediaColumn = postgres.StringColumn("media") PublishedAtColumn = postgres.TimestampzColumn("published_at") CreatedAtColumn = postgres.TimestampzColumn("created_at") - allColumns = postgres.ColumnList{IDColumn, ChannelIDColumn, UUIDColumn, ContentColumn, MediaColumn, PublishedAtColumn, CreatedAtColumn} - mutableColumns = postgres.ColumnList{ChannelIDColumn, UUIDColumn, ContentColumn, MediaColumn, PublishedAtColumn, CreatedAtColumn} + GroupIDColumn = postgres.IntegerColumn("group_id") + allColumns = postgres.ColumnList{IDColumn, ChannelIDColumn, UUIDColumn, ContentColumn, MediaColumn, PublishedAtColumn, CreatedAtColumn, GroupIDColumn} + mutableColumns = postgres.ColumnList{ChannelIDColumn, UUIDColumn, ContentColumn, MediaColumn, PublishedAtColumn, CreatedAtColumn, GroupIDColumn} ) return channelMessagesTable{ @@ -86,6 +88,7 @@ func newChannelMessagesTableImpl(schemaName, tableName, alias string) channelMes Media: MediaColumn, PublishedAt: PublishedAtColumn, CreatedAt: CreatedAtColumn, + GroupID: GroupIDColumn, AllColumns: allColumns, MutableColumns: mutableColumns, diff --git a/internal/channel_message.go b/internal/channel_message.go index 7efce43..22d32c4 100644 --- a/internal/channel_message.go +++ b/internal/channel_message.go @@ -8,6 +8,7 @@ import ( type ChannelMessage struct { ID int + GroupID int64 Message string Medias []ChannelMessageMedia PublishAt time.Time @@ -22,6 +23,11 @@ func NewChannelMessage(id, ts int) *ChannelMessage { return &ChannelMessage{ID: id, PublishAt: time.Unix(int64(ts), 0)} } +func (c *ChannelMessage) WithGroupID(groupID int64) *ChannelMessage { + c.GroupID = groupID + return c +} + func (c *ChannelMessage) WithMessage(message string) *ChannelMessage { c.Message = message return c diff --git a/internal/client_channel.go b/internal/client_channel.go index c9264f7..e1c52a2 100644 --- a/internal/client_channel.go +++ b/internal/client_channel.go @@ -59,6 +59,9 @@ func (t *TClient) Channel(ctx context.Context, channel *tg.Channel, cfg *DBChann defer cfg.SaveMessage(ctx, channelMessage) channelMessage.WithMessage(msg.GetMessage()) + if grpID, ok := msg.GetGroupedID(); ok { + channelMessage.WithGroupID(grpID) + } if mediaClass, ok := msg.GetMedia(); ok { switch mediaClass.(type) { diff --git a/internal/db_channel.go b/internal/db_channel.go index 8397385..c591f9f 100644 --- a/internal/db_channel.go +++ b/internal/db_channel.go @@ -113,6 +113,7 @@ func (c *DBChannel) Update(ctx context.Context, offsetID int) error { func (c *DBChannel) SaveMessage(ctx context.Context, msg *ChannelMessage) error { message := &model.ChannelMessages{ ChannelID: c.UUID, + GroupID: msg.GroupID, UUID: int64(msg.ID), Content: lo.ToPtr(msg.Message), Media: msg.GetMedia(),