PostToTelegram:
;------------------------------------------------
CurrentSocialMediaPosting := "Telegram"

Message = Posting Video Links to Telegram
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")

IniRead, TelegramBotToken, %SettingsIniFilepath%, SocialMediaPoster, TelegramBotToken, %A_Space%
IniRead, TelegramBotChatID, %SettingsIniFilepath%, SocialMediaPoster, TelegramBotChatID, %A_Space%


LineBreakChar = `%0A ; Used for Telegram API

if(TelegramBotToken = "" Or TelegramBotChatID =""){
	Message = TelegramBotToken or TelegramBotChatID is missing from %SettingsIniFilepath%. `nPlease input them and click the button again.
	msgbox, 4096, Error!, %Message%
	SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
	; Msgbox, 4096, Error!, TelegramBotToken or TelegramBotChatID is missing from %SettingsIniFilepath%. `nPlease input them and rerun the script.
	Return
}

/*
; If description is longer than 2k chars, then API will error out. goto section that will allow user to edit video description to shorten it for posting
if(StrLen(SocialMediaDescription) > 2000 AND VideoDescriptionForVideosChannel = ""){
	goto, CreateDescriptionForVideosPosting
}
*/
/*
if(SocialMediaDescription = ""){
	CreateDescriptionForSocialMedia()
}
if(SocialMediaDescription > 1000){	; Telegram has a 1024 char media caption capacity
	SocialMediaDescription := SubStr(SocialMediaDescription, 1, 500)
}
*/
; @todo: split telegram message into multiple posts


SubmitDescriptionForTelegramVideosChannel:
TelegramVideoTitle := ASCIISTRReplace(VideoTitle)
TelegramVideoTitle := "*" . TelegramVideoTitle . "*"

TelegramBodymessage := ASCIISTRReplace(VideoDescription)


LineBreakChar = `%0A ; Used for API



; check the status of the Bitchute URL to see if it's done processing
; shows "404 - Page not found" on page if not
if(!InStr(URLDownloadToVar(BitChuteURL), "404 - Page not found")){
	if(BitChuteURL != "")
	VideoLinks .= "[BitChute](" . BitChuteURL . ") \| "
}
else, {
	LogMessage = Bitchute URL skipped, URL Currently leads to: 404 - page not found
	SaveOrPostProgress(Message:=LogMessage,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
}


; check the status of the Brighteon URL to see if it's done processing
; shows "404 - Page not found" on page if not
if(!InStr(URLDownloadToVar(BrighteonURL), "SELECTED IS NOT CURRENTLY AVAILABLE")){
	if(BrighteonURL != "")
	VideoLinks .= "[Brighteon](" . BrighteonURL . ") \| "
}
else, {
	LogMessage = Brighteon URL skipped, URL Currently leads to: 404 - page not found
	SaveOrPostProgress(Message:=LogMessage,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
}


if(OdyseeVideoURL != "")
VideoLinks .= "[Odysee](" . OdyseeVideoURL .  ") \| "

if(OdyseeAudioURL != "")
VideoLinks .= "[Odysee \(Audio\)](" . OdyseeAudioURL . ") \| "

if(RumbleURL != "")
VideoLinks .= "[Rumble](" . RumbleURL . ") \| "

if(DailyMotionURL != "")
VideoLinks .= "[DailyMotion](" . DailyMotionURL . ") \| "

/*if(PodcastTranscriptURL != "")
VideoLinks .= "[Video Transcript](" . PodcastTranscriptURL . ") \| "

*/
if(PodcastNumber != "")
VideoLinks .= "[FDRPodcasts](" . "https://fdrpodcasts.com/" . PodcastNumber . ") \| "


TelegramMessage := TelegramVideoTitle . "`n" . TelegramBodymessage . "`n" . VideoLinks



StrLenOfMessageAndVideoLinks := StrLen(TelegramVideoTitle) + StrLen(TelegramBodymessage) + StrLen(VideoLinks)
; DevModeMsgBox(StrLenOfMessageAndVideoLinks)


; If Length of Title, Video Links and Message is less than 1024 characters:
; ------------------------------------------------
if(StrLenOfMessageAndVideoLinks < 1024) {
	Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramMessage )       ; you could add more options; compare the Telegram API docs
	
	; Output returned data to ErrorLog File
	Message = API Response:`n%Status%
	SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")

	if(InStr(Status, "error_code")){
		Message = Telegram Post Failed due to an API Issue. Error was saved to ErrorLogging file. Please send it to Yuriy.
		SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")

		; SaveOrPostProgress(Message:=Status,PostType:=",ErrorLoggingTextFile")
		Message = Telegram Error: %Status%
		SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")

		ToolTip
		Return
	}
}


; If Title, Links and Message are longer than 1024, but less than 4096, split into 2 pieces: sendphoto and sendmessage
; ------------------------------------------------
if(StrLenOfMessageAndVideoLinks < 4096){

	; Photo and Video Title go into SendPhoto
	TelegramVideoTitle := TelegramVideoTitle . "`n" . VideoLinks
	Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramVideoTitle )       ; you could add more options; compare the Telegram API docs
	; Output returned data to ErrorLog File
	Message = API Response:`n%Status%
	SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
	
	; Video Description goes into TelegramMessage
	Status := SendTelegramMessage(TelegramBotToken, TelegramBotChatID, text := TelegramBodymessage)
	; Output returned data to ErrorLog File
	Message = API Response:`n%Status%
	SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
	

	} else, {
		; If Title, links and message are longer than 4096 chars, we need to split them into multiple messages
		; ------------------------------------------------
		TelegramVideoTitle := TelegramVideoTitle . "`n" . VideoLinks
		Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramVideoTitle )       ; you could add more options; compare the Telegram API docs


		; Split the Description into 4096 character chunks while preserving sentences
		; Used 4095 because a ". " has to be put in at the end of the chunk.
		VideoDescriptionChunks := SplitStringWithSentences(TelegramBodymessage, 4094)


		; go through array and post each chunk as new message
		Loop % VideoDescriptionChunks.Length(){
			; ArrayItem := ARRAY[A_Index]
			Description := VideoDescriptionChunks[A_Index]


			Status := SendTelegramMessage(TelegramBotToken, TelegramBotChatID, text := Description)
			; Output returned data to ErrorLog File
			Message = API Response:`n%Status%
			SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")

			; Clipboard := Description
			; msgbox % Description

		}



	}

	; SaveOrPostProgress(Message:="Video Links posted to #Videos Successfully.",PostType:="Tooltip,ErrorLoggingTextFile")
	Message = Video Links Posted to Telegram Successfully
	SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
	GuiControl,, PostToTelegramButton, Telegram - Posted Successfully


	; sleep, 2000


	ToolTip
	CurrentSite := 
	Return
	; -------------------------------/Telegram-------------------------------
