예제 #1
0
def init():
    global driver
    global contacts
    try:
        driver.close()
    except Exception:
        pass
    driver = WhatsAPIDriver(client='chrome')
    qr_tmp = driver.get_qr()
    qr = 'static/qr/{}'.format(qr_tmp.split('/')[-1])
    shutil.move(qr_tmp, qr)
    return qr
예제 #2
0
def on_getQr(*args):
    write_log('Socket-Info', 'give the qr')
    global driver
    if driver == None:
        driver = WhatsAPIDriver(profile=profiledir,
                                client='remote',
                                command_executor=selemiunIP)
    if driver.is_logged_in():
        write_log('Socket-Info', 'session started')
        socketIO.emit('sendQr', {'idSend': args[0], 'status': 'Session okay'})
    else:
        write_log('Socket-Info', 'go to qr')
        name = uuid4().hex + '.png'
        if os.path.exists(name): os.remove(name)
        driver.get_qr(name)
        write_log('Socket-Info', 'saving qr')
        shutil.move('./' + name, pathSource + name)
        socketIO.emit('sendQr', {
            'idSend': args[0],
            'file': str(pathSource + name)
        })
        on_waitLogin()
예제 #3
0
파일: init_v21.py 프로젝트: g4w4/pyclient
def on_getQr(*args):
    try:
        global driver
        if driver == None:
            driver = WhatsAPIDriver(profile=profiledir, client='remote', command_executor=selemiunIP)
        if driver.is_logged_in():
            write_log('Socket-Info','session started') 
            socketIO.emit('change',{'whatsAppJoin':True,'accountDown':False})
            socketIO.emit('sendQr', {'socketId':args[0],'error':'The session is started'} )
        else:
            write_log('Socket-Info','go to qr')
            name = uuid4().hex+'.png'
            if os.path.exists(name): os.remove(name)
            driver.get_qr(name)
            write_log('Socket-Info','saving qr')
            shutil.move('./'+name,pathSource+name)
            write_log('Socket-Info','send qr')
            socketIO.emit('sendQr',{'socketId':args[0],'file':str(name)})
            on_waitLogin(args[0])
    except Exception as e:
        socketIO.emit('sendQr', {'socketId':args[0],'error':traceback.format_exc()} )
        write_log('Socket-Error',traceback.format_exc())
        errorSend(traceback.format_exc())
예제 #4
0
파일: whatsapp.py 프로젝트: ksdfg/Hermes
def start_web_session() -> Tuple[WhatsAPIDriver, str]:
    """
    Method to start a new session of WhatsApp Web for web app
    :return: returning the driver object and qr
    """
    # create driver object with above options
    driver = WhatsAPIDriver(client="remote",
                            command_executor=config("SELENIUM"))

    # Get the qr code
    qr_image_path = driver.get_qr()
    with open(qr_image_path, 'rb') as image:
        qr = b64encode(image.read()).decode('utf-8')

    if isfile(qr_image_path):
        remove(qr_image_path)

    return driver, qr
예제 #5
0
from webwhatsapi.objects.message import Message, MediaMessage

print "Environment Mac", os.environ
try:
    os.environ["SELENIUM"]
except KeyError:
    print "Please set the environment variable SELENIUM to Selenium URL"
    sys.exit(1)

driver = WhatsAPIDriver(client='remote',
                        command_executor=os.environ["SELENIUM"])
print("Waiting for QR")
qr = qrtools.QR()
qr.decode("horn.png")

data = qr.decode(driver.get_qr())
print(data)  # prints "Version 2"

driver.wait_for_login()
print("Bot started")

while True:
    time.sleep(3)
    print 'Checking for more messages, status', driver.get_status()
    for contact in driver.get_unread():
        for message in contact.messages:
            print(json.dumps(message.get_js_obj(), indent=4))
            print 'class', message.__class__.__name__
            print 'message', message
            print 'id', message.id
            print 'type', message.type
예제 #6
0
파일: whatsapp.py 프로젝트: cfort69/bots
logging.basicConfig(filename='logfile.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logging.info('PCBot WhatsApp_Bot Iniciando....')


try:
   os.environ["SELENIUM"]
except KeyError:
   print ("Please set the environment variable SELENIUM to Selenium URL")
   sys.exit(1)

## Carga Driver y conecta con Whatsapp Web ##
driver = WhatsAPIDriver(client='remote', command_executor=os.environ["SELENIUM"]) #, profile='/home/aplicaciones/.mozilla/firefox/81yyy19w.whatsapp')
status = driver.get_status()
if status == "NotLoggedIn" or status == "Unknown":
    logging.info('No esta logueado')
    driver.get_qr()
    logging.info('Esperando codigo QR')
    driver.wait_for_login()
else:
    logging.info('Ya esta logueado')
# driver.save_firefox_profile(remove_old=True)

## Driver subio, carga diccionarios internos ##
# driver.send_message_to_id(id_whatsapp_soporte,'Bot Iniciando....')
# logging.info('Actualizacion inicial data helpdesk iniciada....')
# driver.send_message_to_id(id_whatsapp_soporte,'Actualizacion data helpdesk iniciada....')
# apphd = helpdesk(usuario=api_helpdesk_usuario, clave=api_helpdesk_clave, authenticate_url=api_helpdesk_url_authenticate)
# data_helpdesk = apphd.maestros(api_helpdesk_url)
# logging.info('Actualizacion inicial data helpdesk terminada....')
# driver.send_message_to_id(id_whatsapp_soporte,'Actualizacion data helpdesk terminada....')
logging.info('PCBot WhatsApp_Bot Arriba')
예제 #7
0
def runReminder():
    from webwhatsapi import WhatsAPIDriver

    print("Environment", os.environ)
    try:
        os.environ["SELENIUM"]
    except KeyError:
        print("Please set the environment variable SELENIUM to Selenium URL")
        sys.exit(1)

    from PIL import Image

    from resizeimage import resizeimage

    ##Save session on "/firefox_cache/localStorage.json".
    ##Create the directory "/firefox_cache", it's on .gitignore
    ##The "app" directory is internal to docker, it corresponds to the root of the project.
    ##The profile parameter requires a directory not a file.

    from pyzbar.pyzbar import decode
    dir_path = os.path.dirname(os.path.realpath(__file__))

    print(")(AFYN)(ANY*FU(A*UKFA(E*FU*****************************)))")
    print(")(AFYN)(ANY*FU(A*UKFA(E*FU*****************************)))")
    print(")(AFYN)(ANY*FU(A*UKFA(E*FU*****************************)))")
    print(")(AFYN)(ANY*FU(A*UKFA(E*FU*****************************))),",
          dir_path)
    returned_value = os.system('export PATH="' + dir_path +
                               ':$PATH"')  # returns the exit code in unix

    profiledir = os.path.join(".", "firefox_cache")
    if not os.path.exists(profiledir):
        os.makedirs(profiledir)

    driver = WhatsAPIDriver(profile=profiledir,
                            client="remote",
                            command_executor=os.environ["SELENIUM"])

    profiledir = os.path.join(".", "firefox_cache")
    if not os.path.exists(profiledir):
        os.makedirs(profiledir)

    driver = WhatsAPIDriver(profile=profiledir,
                            client="remote",
                            command_executor=os.environ["SELENIUM"])

    import timg

    obj = timg.Renderer()

    print("Waiting for QR")
    driver.wait_for_login()
    print("Saving session")

    # from qrtools import qrtools
    # from PIL import Image
    # import zbarlight
    # qr = qrtools.QR()

    #
    # from PIL import Image

    # import os
    # import numpy as np
    # import pyboof as pb

    # # pb.init_memmap() #Optional
    #
    # class QR_Extractor:
    #     # Src: github.com/lessthanoptimal/PyBoof/blob/master/examples/qrcode_detect.py
    #     def __init__(self):
    #         self.detector = pb.FactoryFiducial(np.uint8).qrcode()
    #
    #     def extract(self, img_path):
    #         if not os.path.isfile(img_path):
    #             print('File not found:', img_path)
    #             return None
    #         image = pb.load_single_band(img_path, np.uint8)
    #         self.detector.detect(image)
    #         qr_codes = []
    #         for qr in self.detector.detections:
    #             qr_codes.append({
    #                 'text': qr.message,
    #                 'points': qr.bounds.convert_tuple()
    #             })
    #         return qr_codes

    # qr_scanner = QR_Extractor()

    print("AAA")
    c = 0
    s = 60
    status = "NotLoggedIn"
    while status is not "LoggedIn":
        c += 1
        print("status", status)

        # print("Checking qr, status", driver.get_status())

        print("AAAAAAAAAAAAA")
        # img = driver.get_qr("static/img/newQR.png")
        im_path = os.path.join("newQR.png")
        pathlib.Path().absolute()
        os.system("cp newQR.png sample/static/img/newQR.png")

        img = driver.get_qr("newQR.png")
        # from PIL import Image
        print("BBBBBBBBBBBBBBB")
        decoded = decode(Image.open(im_path))
        # print(decoded, "#######################")
        # print(decoded, "#######################")
        # print(decoded, "#######################")
        # print(decoded, "#######################")
        # print(decoded, "#######################")
        # print(decoded, "#######################")
        # print(decoded, "#######################")

        for barcode in decoded:
            print("@@@@@@@@@@@@@@@@@@@")
            # the barcode data is a bytes object so if we want to draw it
            # on our output image we need to convert it to a string first
            barcodeData = barcode.data.decode("utf-8")
            barcodeType = barcode.type
            # draw the barcode data and barcode type on the image
            text = "{} ({})".format(barcodeData, barcodeType)
            print(text)
            print("@@@@@@@@@@@@@@@@@@@")
            printQR(barcodeData)
            print("@@@@@@@@@@@@@@@@@@@X")

        status = driver.get_status()
        # output = qr_scanner.extract(img)
        # print(output,"!!!!!!!!!!!!!!!!WDIOUSICNOIUCJ)(Z*UCINJ)(ZP*DFJYUF)((P*SUD)(UASIDMUJ))")
        # print(qr.decode(img))
        # print(qr.data)

        # print("BBBB2")
        # with open(img, 'r+b') as f:
        #     with Image.open(f) as image:
        #         cover = resizeimage.resize_cover(image, [57, 57])
        #         cover.save(img, image.format)
        # #
        # qr.decode(img)
        # print (qr.data)
        # print(retval,"!!!!!!!!!!!!!!!!!!!")
        #
        # print("CCC",img)
        # obj.load_image_from_file(img)

        # obj.resize(s,s)
        # s-=1
        # print(obj)
        # obj.render(timg.Ansi24HblockMethod)
        # print("DDD",s,s,s,s)
        # time.sleep(10)
        # driver.save_firefox_profile(remove_old=False)
        # time.sleep(3)
        # try:
        #     driver.reload_qr()
        # except:
        #     print("refresh finised")
    print("Bot started")

    while True:
        time.sleep(.71)
        print("Checking for more messages, status", driver.get_status())
        for contact in driver.get_unread():
            for message in contact.messages:
                print(json.dumps(message.get_js_obj(), indent=4))
                sender = message.get_js_obj(
                )["chat"]["contact"]["formattedName"]

                for contact in driver.get_contacts():
                    # print("CCCC",contact.get_safe_name() )
                    if sender in contact.get_safe_name():
                        chat = contact.get_chat()
                        chat.send_message("Hi " + sender + " !!!*" + message +
                                          "*")

                print()
                print()
                print(sender)
                print()
                print()
                print("class", message.__class__.__name__)
                print("message", message)
                print("id", message.id)
                print("type", message.type)
                print("timestamp", message.timestamp)
                print("chat_id", message.chat_id)
                print("sender", message.sender)
                print("sender.id", message.sender.id)
                print("sender.safe_name", message.sender.get_safe_name())
                if message.type == "chat":
                    print("-- Chat")
                    print("safe_content", message.safe_content)
                    print("content", message.content)
                    # contact.chat.send_message(message.safe_content)
                elif message.type == "image" or message.type == "video":
                    print("-- Image or Video")
                    print("filename", message.filename)
                    print("size", message.size)
                    print("mime", message.mime)
                    print("caption", message.caption)
                    print("client_url", message.client_url)
                    message.save_media("./")
                else:
                    print("-- Other")
예제 #8
0
    myPhone = sys.argv[1]
except:
    e = sys.exc_info()[0]
    data = {
        "sessionID": sessionID,
        "code": -1,
        "message": "phone number is empty ,exit.",
        "data": "null"
    }
    printJson(data)
    sys.exit()

driver = WhatsAPIDriver(username="******", loadstyles=True)
#print("Waiting for QR")
#QR Code
driver.get_qr(sessionID)
try:
    driver.wait_for_login()
    data = {
        "sessionID": sessionID,
        "code": 2,
        "message": "Scan Succeeded",
        "data": "null"
    }
    printJson(data)
except:
    data = {
        "sessionID": sessionID,
        "code": -1,
        "message": "Failed to Scan QR",
        "data": "null"
예제 #9
0
import os, sys, time, json
from webwhatsapi import WhatsAPIDriver
from webwhatsapi.objects.message import Message, MediaMessage

print "Environment", os.environ
try:
    os.environ["SELENIUM"]
except KeyError:
    print "Please set the environment variable SELENIUM to Selenium URL"
    sys.exit(1)

driver = WhatsAPIDriver(client='remote',
                        command_executor=os.environ["SELENIUM"])
print("Waiting for QR")
driver.get_qr('/pic/qr-code.png')
driver.wait_for_login()
print("Bot started")

while True:
    time.sleep(3)
    print 'Checking for more messages, status', driver.get_status()
    for contact in driver.get_unread():
        for message in contact.messages:
            print(json.dumps(message.get_js_obj(), indent=4))
            print 'class', message.__class__.__name__
            print 'message', message
            print 'id', message.id
            print 'type', message.type
            print 'timestamp', message.timestamp
            print 'chat_id', message.chat_id
            print 'sender', message.sender
예제 #10
0
print("Environment", os.environ)
try:
    os.environ["SELENIUM"] = "http://172.22.0.2:4444/wd/hub"
except KeyError:
    print("Please set the environment variable SELENIUM to Selenium URL")
    sys.exit(1)

profiledir = os.path.join(".", "firefox_cache_v2")
if not os.path.exists(profiledir): os.makedirs(profiledir)
print("Conectando a selenium ")
driver = WhatsAPIDriver(profile=profiledir,
                        client='remote',
                        command_executor='172.18.0.2:4444/wd/hub')
print("Conecto y saco screen shot")
print("Espero login 30 seg")
driver.screenshot('shot.png')
try:
    driver.wait_for_login(30)
except Exception as e:
    print(traceback.format_exc())
if driver.is_logged_in():
    print("conectado a wsp")
    driver.screenshot('shot.png')
else:
    print("Waiting for QR")
    driver.get_qr('lala.png')
    print("Waiting for QR")
    driver.wait_for_login()
    print("Bot started")
    driver.save_firefox_profile()
예제 #11
0
파일: main.py 프로젝트: adplt/whatsapp-try
from webwhatsapi import WhatsAPIDriver

driver = WhatsAPIDriver(username="******")
print('get_unread: ',
      driver.get_unread(include_me=True, include_notifications=True))
print('get_contacts: ', driver.get_contacts())
# print('save_firefox_profile: ', driver.save_firefox_profile())
getChatFrom = driver.get_chat_from_phone_number(628999871008)
print('get_chat_from_phone_number: ', getChatFrom)
# print('get_all_messages_in_chat: ', driver.get_all_messages_in_chat(getChatFrom.id, include_me=True, include_notifications=True))
print(driver.get_qr())
print('get_all_chats: ', driver.get_all_chats())
print(driver.wait_for_login())
# print('get_safe_name', driver.get_safe_name())
print('get_unread: ', driver.get_unread())
# print('view_unread: ', driver.view_unread())
예제 #12
0
import time
import json
import os
import sys

from QRMatrix import *

from skimage import data, color
from skimage.transform import rescale, resize, downscale_local_mean
from webwhatsapi import WhatsAPIDriver
from skimage import io

driver = WhatsAPIDriver(username="******")
Manager.go(driver)
# driver.get_status()
img = driver.get_qr("i.png")
print(img)
# time.sleep(4)
QRCode = QRMatrix("decode", img)
print(QRCode.decode())
print("@@@@@@@@@@@@@@@@@@")
print("XXXXXXXX")
# # i = io.imread(img)
# # image = color.rgb2gray(i)
#
# image_rescaled = rescale(image, 0.25, anti_aliasing=False)
# io.imsave(img, image_rescaled)
print("XXXXXXXX")
import timg
obj = timg.Renderer()
obj.load_image_from_file(img)
예제 #13
0
    os.environ["SELENIUM"]
except KeyError:
    print "Please set the environment variable SELENIUM to Selenium URL"
    sys.exit(1)

##Save session on "/firefox_cache/localStorage.json".
##Create the directory "/firefox_cache", it's on .gitignore
##The "app" directory is internal to docker, it corresponds to the root of the project.
##The profile parameter requires a directory not a file.
profiledir = os.path.join(".", "firefox_cache")
if not os.path.exists(profiledir): os.makedirs(profiledir)
driver = WhatsAPIDriver(profile=profiledir,
                        client='remote',
                        command_executor=os.environ["SELENIUM"])
time.sleep(2)
driver.get_qr(filename='myQR.png')
print("Waiting for QR")
driver.wait_for_login()
print("Saving session")
driver.save_firefox_profile(remove_old=False)
print("Bot started")

while True:
    time.sleep(3)
    print 'Checking for more messages, status', driver.get_status()
    for contact in driver.get_unread():
        for message in contact.messages:
            print(json.dumps(message.get_js_obj(), indent=4))
            print 'class', message.__class__.__name__
            print 'message', message
            print 'id', message.id
예제 #14
0
from decouple import config
from PIL import Image

print("Starting...")
chrome_options = []
gotQR = False
while True:
    driver = WhatsAPIDriver(
        client="chrome",
        username="******",
        chrome_options=chrome_options,
        autoconnect=False
    )  ## Intialize webdriver ourself as API's is not working
    driver.driver.get(driver._URL)
    try:
        driver.get_qr(filename="qr.png")
        gotQR = True
        break
    except NoSuchElementException:  ## Try again after 3 seconds
        try:
            time.sleep(3)
            driver.get_qr(filename="qr.png")
            gotQR = True
            break
        except NoSuchElementException:
            print("Failed to get QR code!"
                  )  ## Give up, because it is likely that we have logged in
            gotQR = False
            tryAgain = input(
                """Do you want to try getting the QR code again? Please type "True" if you want to."""
            )
예제 #15
0
class WPChannelBot():
    def __init__(self):
        self.model = WPChannelBotModel()
        self.data = self.model.get_all()
        self.convs = self.model.get_convs()
        self.convs_state = self.model.get_convs_state()

        self.simple_steps = True
        self.log_file = "log/chatbot.log"

        self.cmd_wait_from = None
        self.cmd_wait = False

        self.profile = "profile"
        self.driver = None

    def start(self):
        print("Iniciando bot...")
        self.driver = WhatsAPIDriver(profile=self.profile)
        time.sleep(3)
        if not self.driver.get_status() == "LoggedIn":
            print("Carregando QRCode")
            self.driver.get_qr("qrcode.png")

            print("Escaneie o QRCode no arquivo qrcode.png")
            self.driver.wait_for_login()

        print("Bot iniciado")
        self.driver.save_firefox_profile()

        while True:
            time.sleep(1)
            for contact in self.driver.get_unread(include_me=False,
                                                  include_notifications=True,
                                                  use_unread_count=True):
                if len(contact.messages) == 1:
                    for message in contact.messages:
                        if isinstance(message, Message):
                            self.new_message(message.content, contact)
                            self.driver.chat_send_seen(contact.chat.id)
                            time.sleep(3)
                else:
                    contact.chat.send_message(
                        "Fico confuso com muitas mensagens :S Por favor, envie uma de cada vez e espere eu responder tá?"
                    )
                    contact.chat.send_message(CHANNEL_ASK_KEYWORD)

    def new_message(self, message, contact):
        if not self._is_cmd(message):
            if self.cmd_wait and contact.chat.id == self.cmd_wait_from:
                self._cmd_envio(message, contact.chat)

            elif not contact.chat.id in self.convs:
                self._proc_etapa(contact.chat.id, message, contact.chat, 2)
            else:
                for conv in self.convs_state:
                    if conv['id'] == contact.chat.id:
                        e = self._proc_etapa(contact.chat.id, message,
                                             contact.chat, conv['etapa'])
                        conv['etapa'] = e

                        self.model.conv_update(contact.chat.id, e)
        else:
            print("ADMINISTRADOR")
            self._run_cmd(message, contact.chat)

    def shutdown(self):
        print("Desconectando...")
        self.driver.close()
        time.sleep(3)
        print("Desconectado")

    def _already_user(self, id, chat):
        if isinstance(self.model.get(id), dict):
            chat.send_message(
                "Olá, você já está cadastrado neste canal. Assim que tiver novidade você vai receber!"
            )
            return True
        else:
            return False

    def _is_keyword(self, content, chat):
        if content.lower() == CHANNEL_KEYWORD:
            return True
        else:
            chat.send_message(CHANNEL_ASK_KEYWORD)
            return False

    def _proc_etapa(self, id, content, chat, etapa):
        if etapa == 2:
            if not self._already_user(id, chat) and self._is_keyword(
                    content, chat):
                # Efetua registros
                self.convs.append(id)
                self.convs_state.append({"id": id, "etapa": 4})
                self.model.conv_add(id, 4)

                # Introdução do canal - Solicita nome
                chat.send_message(CHANNEL_INTRO)
                chat.send_message(CHANNEL_MSGS[0])
                self._to_log("Iniciando cadastro: %s" % id)

        elif etapa == 4:
            # Armazena nome - Solicita cidade
            if self.simple_steps:
                self.data.append({"id": id, "nome": content})
                # Salva no banco de dados
                self.model.add(id, content)

                chat.send_message((CHANNEL_MSGS[3] % content))
                self._remove_convs(id)

                self._to_log("Finalizado cadastro: %s - %s" % (id, content))
            else:
                self.data.append({
                    "id": id,
                    "nome": content,
                    "cidade": "",
                    "bairro": ""
                })
                chat.send_message(CHANNEL_MSGS[1])
                # Salva no banco de dados
                self.model.add(id, content)

                self._to_log("Registrado nome: %s - %s" % (id, content))
                return 6

        elif etapa == 6:
            # Implementar veficação de validade de cidade
            # Verifica cidade - volta ao 5 : armazena cidade - solicita bairro ou passo
            for obj in self.data:
                if obj["id"] == id:
                    obj["cidade"] = content

                    self.model.update(id=id, cidade=content)
                    chat.send_message(CHANNEL_MSGS[2])

                    self._to_log("Registrado cidade: %s - %s" % (id, content))
            return 7
        elif etapa == 7:
            # Implementar veficação de validade de bairro
            if content == "passo":
                # Finaliza caso não seja informado bairro
                chat.send_message((CHANNEL_MSGS[3] % self._get_conv_nome(id)))

                self._remove_convs(id)
                self._to_log("Finalizado cadastro: %s - %s" % (id, content))
            else:
                # Armazena bairro - Finaliza cadastro
                for obj in self.data:
                    if obj["id"] == id:
                        obj["bairro"] = content
                        self.model.update(id=id, bairro=content)

                        chat.send_message(
                            (CHANNEL_MSGS[3] % self._get_conv_nome(id)))

                        self._remove_convs(id)
                        self._to_log("Finalizado cadastro: %s - %s" %
                                     (id, content))

    def _to_log(self, log):
        file = open(self.log_file, "a")
        file.write("\n>> %s " % log)
        file.close()
        return

    def _get_conv_nome(self, id):
        for obj in self.data:
            if obj["id"] == id:
                return obj["nome"]

    def _remove_convs(self, id):
        self.convs.remove(id)
        for conv in self.convs_state:
            if conv["id"] == id:
                self.convs_state.remove(conv)
                self.model.conv_delete(id)

    def _is_cmd(self, content):
        if content[:4] == "/cmd":
            return True
        else:
            return False

    def _run_cmd(self, content, chat):
        cmd = content[5:]
        if not self.model.check_admin(chat.id) == False:
            if cmd == "usuarios":
                self._cmd_usuarios(chat)
            elif cmd == "envio":
                self.cmd_wait = True
                self.cmd_wait_from = chat.id
                chat.send_message(
                    "*ENVIE A SEGUIR A MENSAGEM A SER ENVIADA PARA O CANAL*")
            else:
                chat.send_message("*COMANDO NÃO RECONHECIDO*")
        elif self.model.check_admin(id=None,
                                    all=True) == False and cmd[:5] == "admin":
            print("Cadastrando novo admin")
            self.model.add_admin(chat.id, content[11:])

            chat.send_message("*ADMINISTRADOR CADASTRADO*")
        else:
            chat.send_message(CHANNEL_ASK_KEYWORD)

    def _cmd_usuarios(self, chat):
        response = "*USUÁRIOS CADASTRADOS*\n\n"

        i = 0
        users = self.model.get_all()
        for user in users:
            i += 1
            response += "\n%d) %s - %s" % (i, user['id'], user['nome'])

        chat.send_message(response)

    def _cmd_envio(self, content, chat):
        i = 0
        users = self.model.get_all()
        for user in users:
            i += 1
            self.driver.send_message_to_id(user['id'], content)

        self.cmd_wait_from = None
        self.cmd_wait = False
        chat.send_message("*MENSAGEM ENVIADA PARA %d USUÁRIOS DO CANAL*" % i)
예제 #16
0
    os.environ["SELENIUM"] = "http://172.17.0.3:4444/wd/hub"
except KeyError:
    print("Please set the environment variable SELENIUM to Selenium URL")
    sys.exit(1)

profiledir = os.path.join(".", "firefox_cache")
if not os.path.exists(profiledir): os.makedirs(profiledir)
print("Conectando a wsp")
driver = WhatsAPIDriver(profile=profiledir,
                        client='remote',
                        command_executor=os.environ["SELENIUM"])

print('Pedira el qr')
name = uuid4().hex + '.png'
if os.path.exists(name): os.remove(name)
driver.get_qr(name)
print('Guarda el qr')
os.rename('./' + name, '/app/files/qr/' + name)

print("Waiting for QR")
driver.wait_for_login()

while True:
    time.sleep(30)
    driver.send_message_to_id("*****@*****.**", "hola")
    print(" Bateria ", driver.get_battery_level())
    print(" Number ", driver.get_phone_number())
    print(" Status ", driver.get_status())
    name = uuid4().hex + '.png'
    if os.path.exists(name): os.remove(name)
    driver.screenshot(name)