Skip to content

Instantly share code, notes, and snippets.

@oganm
Created August 29, 2020 03:38
Show Gist options
  • Save oganm/50a8020f718842aa3eee04dcfd57c198 to your computer and use it in GitHub Desktop.
Save oganm/50a8020f718842aa3eee04dcfd57c198 to your computer and use it in GitHub Desktop.
send messages to roll20 chat using chromote
library(chromote)
startRoll20Session = function(email, password, gameLink,view = FALSE){
b <- chromote::ChromoteSession$new()
if(view){
b$view()
}
b$Page$navigate(gameLink)
b$DOM$enable()
Sys.sleep(5)
page = b$DOM$getDocument()
# check for already logged in sessions
chatBox = b$DOM$querySelector(page$root$nodeId, "#textchat-input > textarea")
if(chatBox$nodeId!=0){
message('Already logged in')
return(b)
}
# email section
emailID = b$DOM$querySelector(page$root$nodeId, "#email")
b$DOM$focus(emailID$nodeId)
b$Input$insertText(text = email)
# password section
passwordID = b$DOM$querySelector(page$root$nodeId, "#password")
b$DOM$focus(passwordID$nodeId)
b$Input$insertText(text = password)
# login button
loginID = b$DOM$querySelector(page$root$nodeId, "#login")
box = b$DOM$getBoxModel(nodeId = loginID$nodeId)
b$Input$synthesizeTapGesture(x= round(box$model$content[[1]]),y = round(box$model$content[[2]]))
# navigate to target page after login
Sys.sleep(5)
b$Page$navigate(gameLink)
return(b)
}
sendMessage = function(session, message){
b = session
page = b$DOM$getDocument()
chatBox = b$DOM$querySelector(page$root$nodeId, "#textchat-input > textarea")
b$DOM$focus(chatBox$nodeId)
b$Input$insertText(text = message)
chatButton = b$DOM$querySelector(page$root$nodeId, "#textchat-input > button")
box = b$DOM$getBoxModel(nodeId = chatButton$nodeId)
b$Input$synthesizeTapGesture(x= round(box$model$content[[1]]),y = round(box$model$content[[2]]))
}
gameLink = 'https://app.roll20.net/editor/setcampaign/978353'
email = 'ogan.mancarcii@gmail.com'
password = '********'
b = startRoll20Session(email,password,gameLink,view = TRUE)
Sys.sleep(5)
sendMessage(b,'test message')
b$view()
b$close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment