tlk.io bot - web remote control of scripts

Post your working scripts, libraries and tools
0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

tlk.io bot - web remote control of scripts

19 Mar 2019, 07:46

tlk.io Is basically a free online chat website with no registration, you create a channel input a preferred username and chat, by default unless you for some reason link a channel to your twitter account all messages on a channel are discarded within 10minutes of being posted.

I however use it as a means for remote control of my scripts in a multitude of devices and places, from pretty much any device, able to send & receive messages to/from my scripts. I saw a post inquiring about such functionality,which is what prompted me to post it. Cheers.

EDIT: Updated Example to reflect a few more basic use cases...

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#SingleInstance, force
#Persistent
/*
	Choose A Very Random channel name,the tlk.io premise is that all channels are public,if you want privacy pick a very convoluted channel name!
	NOTE: tlk.io has this issue where if you login/out fast enough it displays a wrong number of active users, but this isn't a functional problem,
	it's merely a UI bug & doesn't affect core functionality(Chat).
	ALSO NOTE: tlk.io is like reddit,with pages defining threads,except by default all content in a channel is discarded within 10minutes...
	
	I Use this script to control my scripts at a home & work from either place or from my phone...
	
	NOTE: tlk.io doesn't recognise line breaks, so i suggest replacing line breaks with place holder characters
	& reading them as line breaks by listener as in examples below...
*/

;receiver scripts would check for latest messages...
SetTimer, checkMsg, 1000

;sender would make a post & other receivers would constantly check page for latest post
s::tlkdotio("my-remote-control-channel", true, "someBot", "post this and log out - " A_TickCount, true)

;other examples...
;send an execute command example,where any post prefixed with ;#ExecScript will have listener script evaluate a post as a script to execute....
x::tlkdotio("my-remote-control-channel", true, "someBot", ";#ExecScript\n MsgBox, 0x40040, tlkdotio, >Remote Code Execution Example... " A_TickCount, true)
;run calc on remote system...
r::tlkdotio("my-remote-control-channel", true, "someBot", ";#ExecRun\n calc", true)


CheckMsg(){		;basically the listener script...
	Static
	If !prevMsg
		FileRead prevMsg, %A_Temp%\prevMsg
	
	Try tdi := tlkdotio("my-remote-control-channel", true)
		
	lastMsg := Trim(Trim(tdi.lastMsg,"`r`n"))
	If (prevMsg <> lastMsg && tdi.lastUsr = "someBot"){	;alerts when userName someBot makes a post...
		prevMsg := lastMsg
		FileDelete %A_Temp%\prevMsg
		FileAppend % lastMsg, %A_Temp%\prevMsg	;for Persistence across script sessions
		TrayTip, tlk.io [listener], % lastMsg
		
		;Message Parsing Examples...
		If (StrSplit(lastMsg,"\n")[1] = ";#ExecScript")		;remote exec, where entire message is considered a script to be executed...
			ExecScript(StrReplace(lastMsg, "\n", "`n"), false)
		Else If (StrSplit(lastMsg,"\n")[1] = ";#ExecRun")	;run applications on other system, application path & param must be on next line..
			Run % Trim(StrSplit(lastMsg,"\n")[2])
		;... ^Just a few examples of how you can use it beyond simple remote control of scripts themselves...
	}
}


IsOnline(url:="http://google.com"){
	if(!dllCall("Wininet.dll\InternetCheckConnection","Str",url,"Uint",1,"Uint",0))
		return 0
	return 1
}



ExecScript(Script, Wait:=true){
	shell := ComObjCreate("WScript.Shell"),exec := shell.Exec("AutoHotkey.exe /ErrorStdOut *"),exec.StdIn.Write(script),exec.StdIn.Close()
	if Wait
		return exec.StdOut.ReadAll()
}


;channelName=echo resolves to https://tlk.io/echo
;,tlk.io is like reddit,with pages defining threads,except by default all content in a channel/thread is discarded within 10minutes...
tlkdotio(channelName:="", ieVisible:=true, userName:="", postText:="", logOut:=false){
	Static pwb,lastMsgAggregated,ChatTextAggregated
	OnExit, OnExit
	If !IsOnline(){
		Try pwb.quit
			return
	}
	DHW := A_DetectHiddenWindows
	DetectHiddenWindows, On
	channelUrl := "https://tlk.io/"	channelName
	If !IsObject(pwb) && !(pwb:=setWbCom("tlk.io / " channelName, channelUrl)){ ;get pointer to specific window title and domain	;if window active
		pwb := ComObjCreate("InternetExplorer.Application") 	;create IE Object
		pwb.visible := ieVisible ? True : False  ; Set the IE object to visible
		pwb.Navigate(channelUrl) ;Navigate to URL
		While pwb.readyState != 4 || pwb.document.readyState != "complete" || pwb.busy ; wait for the page to load
			Sleep, 10
	}
	
	If userName{
		pwb.document.getElementByID("participant_nickname").value := userName
		
		pwb.document.getElementByID("participant_nickname").focus()
		Loop 6
			ControlSend, Internet Explorer_Server%A_index%, {Enter}, % "ahk_id " pwb.hwnd
	}
	
	If postText{
		Sleep 1000
		pwb.document.getElementByID("message_body").value := postText
		
		pwb.document.getElementByID("message_body").focus()
		Loop 6
			ControlSend, Internet Explorer_Server%A_index%, {Enter}, % "ahk_id " pwb.hwnd
	}
	
	If logOut
		pwb.document.getElementByID("sign-out").click()
	
	usersNum := pwb.document.getElementsByClassname("counter")[0].innerText	;number of users
	usersNum := SubStr(usersNum,1,1)
	usersList := pwb.document.getElementsByClassname("participants")[0].innerText	;users
	
	;// write the Chat Source to an HTMLfile
	chat := ""
	chat := ComObjCreate("HTMLfile")
	chat.write(chatSource)
	links := chat.links
	while (A_Index<=links.length, i:=A_Index-1)
		linksList .= i ") " links[i].innerText "`nURL: " links[i].href "`n`n"
	
	
	Loop{	;loop through all posted messages on page... find last poster,... reset last msg instead of appending to it when user changes...
		Try
			thisUsr := pwb.document.getElementsByClassname("post-name")[A_Index-1].innerText
		Catch
			Break
		msgUsrList .= msgUsrList ? thisUsr : "`n`n" thisUsr
		lastUsr := thisUsr ? thisUsr : lastUsr
	}
	Loop{	;loop through all posted messages on page...
		Try
			thisMsg := pwb.document.getElementsByClassname("post-message")[A_Index-1].innerText
		Catch
			Break
		StringTrimRight, thisMsg, thisMsg, 10	;trim excess garbage...
		msgList .= msgList ? thisMsg : "`n`n" thisMsg
		,lastMsg := thisMsg ? thisMsg : lastMsg
		,lastMsgAggregated := SubStr(thisMsg,1,1) = "@" ? "" : lastMsgAggregated	;reset block msgs
		,lastMsgAggregated := thisMsg ? lastMsgAggregated "`n" thisMsg : lastMsgAggregated
	}
	
	DetectHiddenWindows, % DHW
	
	Return {links:linksList, lastUsr:lastUsr, lastMsg:lastMsg, lastMsgAggregated:lastMsgAggregated, msgList:msgList
	, chatTextSource:StrReplace(pwb.document.getElementsByClassname("chat")[0].outerHTML,">Delete<")	;for debugging
	, chatText:StrReplace(pwb.document.getElementsByClassname("chat")[0].innerText,"`n Delete ")		;for debugging
	, usersList:usersList, usersNum:usersNum}
	
	OnExit:
	DetectHiddenWindows, on
	Try pwb.quit
		ExitApp
}



;***********Function*******************
setWbCom(name=false, url=false) {
	;   Set web browser COM pointer        ;   eserv_flag sets this.wb_eserv
	if (!name AND !url) {
		;    Clear COM object
		return false
	}
	;   Set defaults.  No promises.
	wb:=false
	For wb in ComObjCreate( "Shell.Application" ).Windows {
		Try {
			If ((InStr(wb.locationName, name) AND name) OR (InStr(wb.locationURL, url) AND url)) && InStr(wb.FullName, "iexplore.exe") {
				return wb
			}
		} Catch, e {
			if (e AND this.debug) {
				FileAppend, % "`r`nCOM Error: " . e, % this.debug_file
			}
		}
	}
	if (debug) {
		this.errorWindow("Failed to find web browser.`r`nName:`t" . name . "`r`nURL:`t" . url)
	}
	return false
}
Last edited by 0x00 on 22 Mar 2019, 01:43, edited 3 times in total.
guest3456
Posts: 2556
Joined: 09 Oct 2013, 10:31

Re: tlk.io bot

19 Mar 2019, 11:26

well done

0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

Re: tlk.io bot

19 Mar 2019, 20:00

Thanks dude.
blue83
Posts: 41
Joined: 11 Apr 2018, 06:38

Re: tlk.io bot - web remote control of scripts

20 Mar 2019, 03:58

Thank you for this script
User avatar
Tigerlily
Posts: 283
Joined: 04 Oct 2018, 22:31

Re: tlk.io bot - web remote control of scripts

20 Mar 2019, 15:52

0x00 wrote:
20 Mar 2019, 11:42
Looks very cool - will definitely be tinkering with this :D thanks for sharing! :bravo:
-TL
0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

Re: tlk.io bot - web remote control of scripts

20 Mar 2019, 22:30

Tigerlily wrote:
20 Mar 2019, 15:52
I'm glad you like it, cheers.
r2997790
Posts: 50
Joined: 02 Feb 2017, 02:46

Re: tlk.io bot - web remote control of scripts

21 Mar 2019, 17:08

:shock: ooo... This is all rather exciting. Something to certainly try out over the weekend. Thanks for sharing.

Is it possible/practical to put this on a VPS and launch scripts from it?

Super stuff.
0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

Re: tlk.io bot - web remote control of scripts

22 Mar 2019, 00:48

r2997790 wrote:
21 Mar 2019, 17:08
:shock: ooo... This is all rather exciting. Something to certainly try out over the weekend. Thanks for sharing.

Is it possible/practical to put this on a VPS and launch scripts from it?

Super stuff.
Well there's really no need for a VPS,unless you want to maybe secure your traffic to/from tlk.io & the vps has access to the internet,this script is more for remote control over the internet using somewhat of a 'Dead Drop' technique. If you do have a vps don't want to use a thirdparty i recommend AhkHttp Server,so as to make direct connections between your scripts.

Needless to say, given you configure a listener script that parses posts, you can use it to do anything,i.e remote code execution,run other scripts & return a value back to sender such as success or failure of a script, run applications, download & execute stuff,...


See Updated Example....
Last edited by 0x00 on 22 Mar 2019, 01:43, edited 1 time in total.
gregster
Posts: 2816
Joined: 30 Sep 2013, 06:48

Re: tlk.io bot - web remote control of scripts

22 Mar 2019, 01:32

I use a similar technique to remotely control my computer via my cell phone and the (official and free) Bot API of the Telegram messenger (usage very similar to WhatsApp). This way, you will have a private conversation with your own bot (somewhere on the forum, I posted a basic demo) that you parse on your computer and do whatever your AHK scripting skills allow.
0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

Re: tlk.io bot - web remote control of scripts

22 Mar 2019, 02:03

gregster wrote:
22 Mar 2019, 01:32
I use a similar technique to remotely control my computer via my cell phone and the (official and free) Bot API of the Telegram messenger (usage very similar to WhatsApp). This way, you will have a private conversation with your own bot (somewhere on the forum, I posted a basic demo) that you parse on your computer and do whatever your AHK scripting skills allow.
Yea, i saw that,and i too also use tlk.io from my phone encrypting most of my posts, but, there's one critical distinction, A N O N Y M I T Y, which i love so very much, hence why i used tlk.io instead of twitter or telegram for my bots. And tbh i totally hate the notion of api keys, because it's nothing more than a control & attribution scheme :shifty: , And I LikeZ My FreedomZ On Z InternetZ :crazy:

Anywhooo, may i recommend S I G N A L or R I O T instead of Telegram for VOIP & Messaging,although not many people are on it & it still requires your actual phone number which is a bummer, just a thought. Cheers :cookie:
gregster
Posts: 2816
Joined: 30 Sep 2013, 06:48

Re: tlk.io bot - web remote control of scripts

22 Mar 2019, 02:34

I use Telegram almost exclusively for the bots - the human user base is very limited where I live, but I have some friends around the globe who use it - and I doubt that the cryptic (you can go wild there) and non-cryptic private messages I sent via my bot to my computer (and the custom buttons and keyboards I created for that) are of any interest for anyone without even knowing what they do on my computer (and my computer reacts only to my own ID, apart from plausability checks). I worked in internet market research and with AI and statistical data processing, so I have an idea about (non-)privacy on the old interwebs. I have clearly other concerns and priorities than my bot.

And of course, API keys are often used for control and attribution (especially authentication) - that's why they are actually pretty useful in many applications that go further than just requesting information or your private automating endeavours.
0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

Re: tlk.io bot - web remote control of scripts

22 Mar 2019, 09:44

gregster wrote:
22 Mar 2019, 02:34
Fair enough,just to clarify though, it's just a personal bias I've got against security contingent on trusting a third party. Especially because i pretty much use my bots effectively as backdoors to my other systems,with AES1024 encryption & command verification of course,and a 'Domain Generation Algorithm' to generate channel names unique to a point in time, just for reference.

Good-day.
User avatar
DataLife
Posts: 326
Joined: 29 Sep 2013, 19:52

Re: tlk.io bot - web remote control of scripts

15 May 2019, 14:44

Please explain a little more about how to use this.

Do I go to tlk.io first and create a channel and Join? I did not...

This is what I did step by step....
On this line

Code: Select all

s::tlkdotio("my-remote-control-channel", true, "someBot", "post this and log out - " A_TickCount, true)
I replaced "my-remote-control-channel" with a random channel name within the quotes.
I replaced "somebot" with a random name within the quotes.
I did not change the message to post.

I ran the script and it opened Maxthon. Then I pressed the hotkey "s" and nothing happened except appx every 90 seconds Maxthon will become the active window. I do have internet explorer.

After a few minutes I get Error: 0x80080005- Server execution failed on line

Code: Select all

pwb := ComObjCreate("InternetExplorer.Application")
I am using autohotkey 32 bit unicode on windows 10.
Check out my scripts. (MyIpChanger) (ClipBoard Manager) (SavePictureAs)
All my scripts are tested on Windows 10, AutoHotkey 32 bit Ansi unless otherwise stated.
0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

Re: tlk.io bot - web remote control of scripts

17 May 2019, 07:29

@DataLife You don't do anything via a browser, the ieVisible:=true param is only active by default for debugging and demonstration purpose only.

The script contains a Sender hotkey and a Listener function,that normally would be on another computer for example, such that on hotkey S it logs in to the channel using specified username(in param), post the message & logout based on param. The sender & listener are basically using the specified channel as a message deaddrop,where tlk.io automatically removes any message over 10minutes old.

How It Works:
  • Sender(Navigate to ChannelName, Login with specified userName, PostMessage, Logout(Default))
    • > tlk.io Channel with Post >
      • Listener(Search Channel for any New Messages & display/execute any new message by by designated user(IN DEMO ONLY,user filtering isn't integrated behaviour, see tdi.lastUsr))
Also make sure there is no spacing in channel name.

Try it out without any modification initially, if that fails it's probably to do with Maxthon somehow replacing the IE COM Server with it's own,which is bizarre & something i didn't even think was plausible, because the only thing it should open is IE.

DEMO USAGE(Tested in Win10 Pro):
  • Run script,
  • Wait for IE window to load(in case on a slow connection & ieVisible:=true(default)),
  • Press S to send a message to listener function which can just as easily be on a different computer, & message should be received & displayed in tray after posting,
  • Press X to execute command via listener function(remote command execution), & command should be executed within no more than 1sec of being posted/sent by listener function,
...END OF DEMO...


NOTE, it's not simply meant for scripted use only, i.e you can manually login using specified userName & send commands/messages manually to a script from a phone(Via Browser) for example...

Cheers, hope this was helpful.
User avatar
DataLife
Posts: 326
Joined: 29 Sep 2013, 19:52

Re: tlk.io bot - web remote control of scripts

17 May 2019, 10:48

I uninstalled Maxthon. I copy and pasted and ran your script. The IE window never opens I waited 2 minutes. When I press "s" I get the error....class not registered on line pwb := ComObjCreate("InternetExplorer.Application")

I rebooted my computer and tried again. Same thing.

I am using Windows 10 64 bit, AutoHotkey 1.1.30.03 32 bit unicode.

Any ideas on whats going on?

Update: I compiled and ran as administrator and it worked.
thanks for this script. Now I can play with it.
Check out my scripts. (MyIpChanger) (ClipBoard Manager) (SavePictureAs)
All my scripts are tested on Windows 10, AutoHotkey 32 bit Ansi unless otherwise stated.
0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

Re: tlk.io bot - web remote control of scripts

18 May 2019, 04:40

@DataLife Glad you got it working, you don't need to compile though,I set 'AutoHotkey.exe' to 'Run As Admin' in file properties because i got tired of such issues in Win10(had forgotten about it),i recommend you do the same, cheers & have a good weekend.
User avatar
TheDewd
Posts: 1323
Joined: 19 Dec 2013, 11:16
Location: USA

Re: tlk.io bot - web remote control of scripts

21 May 2019, 13:55

You should use the JSON data from the API. I discovered the API data by monitoring the data transfer as I interacted with the website.

Here's a script I wrote to get the latest message text from a channel.

Code: Select all

#SingleInstance, Force
#Persistent

;// The name assigned to the channel
ChannelName := "hey"

;// Get the unique chat_id value using the channel name
HttpRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HttpRequest.Open("GET", "https://tlk.io/" ChannelName, true)
HttpRequest.Send()
HttpRequest.WaitForResponse()
RegExMatch(HttpRequest.ResponseText, "chat_id\s=\s'(\d+)';", ChatID)

;// Get the JSON data returned from the API URL
HttpRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HttpRequest.Open("GET", "https://tlk.io/api/chats/" ChatID1 "/messages", true)
HttpRequest.Send()
HttpRequest.WaitForResponse()

;// Parse the JSON data
ChatLog := [{}] ;// Create an array containing an object

Pos := 1, Match := ""

While (Pos := RegExMatch(HttpRequest.ResponseText, "({.*?})", Match, Pos + StrLen(Match))) {
	RegExMatch(Match1, """id"":(\d+),", id)
	RegExMatch(Match1, """user_token"":""(.*?)"",", user_token)
	RegExMatch(Match1, """nickname"":""(.*?)"",", nickname)
	RegExMatch(Match1, """body"":""(.*?)"",", body)
	RegExMatch(Match1, """user"":{(.*?)},", user)
	RegExMatch(user1, """token"":""(.*?)"",", u_token)
	RegExMatch(user1, """nickname"":""(.*?)"",", u_nickname)
	RegExMatch(user1, """provider"":""(.*?)"",", u_provider)
	RegExMatch(user1, """avatar"":""(.*?)"",", u_avatar)
	RegExMatch(user1, """profile_url"":""(.*?)""}", u_profile_url)
	RegExMatch(Match1, """timestamp"":(\d+),", timestamp)
	RegExMatch(Match1, """closest_milestone"":(\d+),", closest_milestone)
	RegExMatch(Match1, """deleted"":(.*?)}", deleted)
	
	;// Assign parsed items to the array
	ChatLog[A_Index] := {"id": id1
	,"user_token": user_token1
	,"nickname": nickname1
	,"body": body1
	,"u_token": u_token1
	,"u_nickname": u_nickname1
	,"u_provider": u_provider1
	,"u_avatar": u_avatar1
	,"u_profile_url": u_profile_url1
	,"timestamp": timestamp1
	,"closest_milestone": closest_milestone1
	,"deleted": deleted1}
}

MsgBox, % ChatLog[ChatLog.MaxIndex()].body
All of the returned JSON attributes are included in the script.

Note: Only the last 50 messages are available to view. If you don't see any results, see if your channel's messages have been deleted...
Login using Facebook/Twitter, and then become the moderator of the channel, and the messages aren't automatically deleted (as far as I can tell...)

You can setup the script to wait for commands like this:

Code: Select all

#SingleInstance, Force
#Persistent

MyChatID := GetChatID("YourChannelName") ;// The name assigned to the channel
SetTimer, ParseChatLog, 3000 ;// 3 seconds
return

GetChatID(Channel) { ;// Get the unique chat_id value using the channel name
	HttpRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	HttpRequest.Open("GET", "https://tlk.io/" Channel, true)
	HttpRequest.Send()
	HttpRequest.WaitForResponse()
	RegExMatch(HttpRequest.ResponseText, "chat_id\s=\s'(\d+)';", ChatID)
	return ChatID1
}

GetChatLog(ChatID) { ;// Get the JSON data returned from the API URL
	HttpRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	HttpRequest.Open("GET", "https://tlk.io/api/chats/" ChatID "/messages", true)
	HttpRequest.Send()
	HttpRequest.WaitForResponse()
	return HttpRequest.ResponseText
}

ParseChatLog() { ;// Parse the JSON data
	Global MyChatID
	Static LastID
	
	MyChatLog := GetChatLog(MyChatID) ;// Get the JSON data
	
	ChatLog := [{}] ;// Create an array containing an object

	Pos := 1, Match := ""
	While (Pos := RegExMatch(MyChatLog, "({.*?})", Match, Pos + StrLen(Match))) {
		RegExMatch(Match1, """id"":(\d+),", id)
		RegExMatch(Match1, """user_token"":""(.*?)"",", user_token)
		RegExMatch(Match1, """nickname"":""(.*?)"",", nickname)
		RegExMatch(Match1, """body"":""(.*?)"",", body)
		RegExMatch(Match1, """user"":{(.*?)},", user)
		RegExMatch(user1, """token"":""(.*?)"",", u_token)
		RegExMatch(user1, """nickname"":""(.*?)"",", u_nickname)
		RegExMatch(user1, """provider"":""(.*?)"",", u_provider)
		RegExMatch(user1, """avatar"":""(.*?)"",", u_avatar)
		RegExMatch(user1, """profile_url"":""(.*?)""}", u_profile_url)
		RegExMatch(Match1, """timestamp"":(\d+),", timestamp)
		RegExMatch(Match1, """closest_milestone"":(\d+),", closest_milestone)
		RegExMatch(Match1, """deleted"":(.*?)}", deleted)
		
		;// Assign parsed items to the array
		ChatLog[A_Index] := {"id": id1
		,"user_token": user_token1
		,"nickname": nickname1
		,"body": body1
		,"u_token": u_token1
		,"u_nickname": u_nickname1
		,"u_provider": u_provider1
		,"u_avatar": u_avatar1
		,"u_profile_url": u_profile_url1
		,"timestamp": timestamp1
		,"closest_milestone": closest_milestone1
		,"deleted": deleted1}
	}
	
	;// Do nothing if no new messages
	If (LastID = ChatLog[ChatLog.MaxIndex()].id) {
		return
	}
	
	;// Store ID of last message to variable
	LastID := ChatLog[ChatLog.MaxIndex()].id
	
	;// Execute command based on the message text
	ExecuteCommand(ChatLog[ChatLog.MaxIndex()].body)
}

ExecuteCommand(Text) {
	If (Text = "MsgBox") { ;// Keyword 1
		MsgBox, % Hello World! ;// Display message box
	} Else If (Text = "Start") { ;// Keyword 2
		Send, {LWin} ;// Open start menu
	} Else If (Text = "Notepad") { ;// Keyword 3
		Run, notepad.exe ;// Run notepad
	} Else { ;// Other
		If (Text = "") {
			return ;// Do nothing if no text (messages deleted, etc...)
		}
		
		MsgBox, % Text ;// Show text if not matching defined keywords
	}
}
Image Bulldozer - Sokoban inspired game from 1994 recreated in AutoHotkey.
0x00
Posts: 79
Joined: 22 Jan 2019, 13:12

Re: tlk.io bot - web remote control of scripts

29 May 2019, 06:59

TheDewd wrote:
21 May 2019, 13:55
I didn't get a notification for this for some reason,...,but that's freaking dope dude :thumbup: :thumbup: :clap: ,it's obviously a better listener, but have you found a way to make posts using the api instead of my approach, not having to use IE at all would be fantastic if it can be helped.

And if i may, what did you use to monitor traffic to/from the site, are you using wireshark?

Thanks, btw, I've switched all my listeners to the api, i just can't find a way to make posts with it just yet.
User avatar
TheDewd
Posts: 1323
Joined: 19 Dec 2013, 11:16
Location: USA

Re: tlk.io bot - web remote control of scripts

29 May 2019, 08:04

0x00 wrote:...have you found a way to make posts using the api...
Sorry, not yet. It's possible to use the API, however the authentication is where I'm stuck, I think...

0x00 wrote:...what did you use to monitor traffic to/from the site...
I use Mozilla Firefox as my primary web browser on Windows 10. Open the "Network" tab of the "Web Developer Tools" using hotkey Ctrl + Shift + E.

I make sure the filter is set to "All", then enable "Persist Logs". After that, just start interacting with the website and see what is displayed in the tools window. Clear the view occasionally, and then you can also filter more specifically when you know what you're looking for.
Image Bulldozer - Sokoban inspired game from 1994 recreated in AutoHotkey.

Return to “Scripts and Functions”

Who is online

Users browsing this forum: No registered users and 30 guests