Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Emulsion.Tests/Telegram/FunogramTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,15 @@ module ReadMessageTests =
readMessage (createMessage None None)
)

[<Fact>]
let readMessageWithoutTextAndLink() =
let privateChat = { currentChat with Type = ChatType.Private }
let expectedMessage = { createMessage None None with Chat = privateChat }
Assert.Equal(
authoredTelegramMessage "[UNKNOWN USER]" "[DATA UNRECOGNIZED]",
readMessage (expectedMessage)
)

[<Fact>]
let readReplyMessage() =
let originalMessage = createMessage (Some originalUser) (Some "Original text")
Expand Down Expand Up @@ -376,6 +385,15 @@ module ReadMessageTests =
readMessage message
)

[<Fact>]
let readContentWithoutLink() =
let privateChat = { currentChat with Type = ChatType.Private }
let message = { createMessageWithCaption originalUser "test" with Chat = privateChat }
Assert.Equal(
authoredTelegramMessage "@originalUser" "[Unknown content with caption \"test\"]",
readMessage message
)

[<Fact>]
let readPollMessage() =
let message = createPoll originalUser "Question?" [|"Option 1"; "Option 2"|]
Expand Down
23 changes: 15 additions & 8 deletions Emulsion/Telegram/Funogram.fs
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ module MessageConverter =
Chat = { Type = SuperGroup
Username = Some chatName } } ->
sprintf "https://t.me/%s/%d" chatName id
| _ -> "[CANNOT RETRIEVE LINK]"
| _ -> String.Empty

let private getAuthoredMessageBodyText (message: FunogramMessage) =
let (|Text|_|) (message: FunogramMessage) = message.Text
Expand All @@ -166,21 +166,28 @@ module MessageConverter =
then None
else Some (contentType, message.Caption)

let appendLink link text =
if String.IsNullOrEmpty link
then text
else sprintf "%s: %s" text link

let text =
match message with
| Text text -> applyEntities message.Entities text
| Content (contentType, caption) ->
match caption with
| Some caption ->
let text = applyEntities message.CaptionEntities caption
sprintf "[%s with caption \"%s\"]: %s" contentType text (getLinkToMessage message)
| None ->
sprintf "[%s]: %s" contentType (getLinkToMessage message)
let contentInfo =
match caption with
| Some caption ->
let text = applyEntities message.CaptionEntities caption
sprintf "[%s with caption \"%s\"]" contentType text
| None ->
sprintf "[%s]" contentType
contentInfo |> appendLink (getLinkToMessage message)
| Poll poll ->
let text = getPollText poll
sprintf "[Poll] %s" text
| _ ->
sprintf "[DATA UNRECOGNIZED]: %s" (getLinkToMessage message)
"[DATA UNRECOGNIZED]" |> appendLink (getLinkToMessage message)

if Option.isSome message.ForwardFrom
then
Expand Down