class WhatsappBot

Constants

URL

Public Class Methods

new() click to toggle source
# File lib/whatsapp_bot.rb, line 6
def initialize
  @driver = Selenium::WebDriver.for :chrome
  @driver.get(URL)
  @driver.find_element(css: '[name="rememberMe"]').click
  @logged_in = false
end

Public Instance Methods

logged_in?() click to toggle source
# File lib/whatsapp_bot.rb, line 13
def logged_in?
  @logged_in
end
send_message(to:, text:) click to toggle source
# File lib/whatsapp_bot.rb, line 25
def send_message(to:, text:)
  if (logged_in?)
    return send_text_message(to, text)
  else
    if (try_logging_in)
      return send_text_message(to, text)
    end
    puts "Not logged in"
    return false
  end
rescue Selenium::WebDriver::Error::NoSuchElementError => e
  puts "Couldnt find the user please check if name is correct or try again after some seconds"
  return false
end
try_logging_in() click to toggle source
# File lib/whatsapp_bot.rb, line 17
def try_logging_in
  @driver.find_element(class: "landing-title")
  @logged_in = false
  puts "Please log in with your phone in the chrome driver"
rescue Selenium::WebDriver::Error::NoSuchElementError => e
  @logged_in = true
end

Private Instance Methods

send_text_message(to, text) click to toggle source
# File lib/whatsapp_bot.rb, line 42
def send_text_message(to, text)
  @driver.find_element(css: "[title='#{to}']").click
  @driver.find_element(css: "[contenteditable='true']").send_keys(text)
  @driver.find_element(css: 'span[data-icon="send"]').click
  return @driver.find_elements(css: ".message-out").last.text.include?(text)
end