Code Monkey home page Code Monkey logo

projeto-tinject's Introduction

TInject Community

Componente mais RECIFENSE da internet!

Componente para criação de chatBots com delphi
Component for creating chatBots with delphi

INSTRUÇÕES PARA USO DO COMPONENTE

Delphi versions: Seattle, Berlin, Tokyo, Rio, Sydney, Alexandria.

Tutorial de instalação no youtube:

https://www.youtube.com/watch?v=EIxFdtenNxI&t=31s


Videos demo:
https://youtu.be/YEmwghSGoFA
https://youtu.be/07RoReOHaT4
https://youtu.be/cbWW7VNYwEo

Instalação manual:

NOVO: Para usar com o delphi 11 Alexandria, incluir no library path 32 bits a pasta Compilados e suas subpastas.

1-Clonar o repositório Projeto-TInject

2-Baixar e instalar o CEF4Delphi em: http://www.softmaisbrasil.com.br/#blog

3-Baixar a pasta BIN em: http://www.softmaisbrasil.com.br/#blog

4-Copiar todo o conteúdo baixado da pasta BIN no passo 3 para a pasta BIN na raiz do projeto (Caso não exista a pasta BIN em seu projeto Crie)

5-Adicione ao libary path do Delphi a pasta TInject-whatsapp-delphi e todas as subpastas

6-Clique no menu Component > Install component. Selecione a unit uTinject pasta(service) e selecionar a opção install into a new package. Por fim, digite o nome TInject em Package name.

7-Dê um Compile e depois dê um build

8-Abra o arquivo demo Tinject.dproj

Star History

Star History Chart

Recursos / Resources

✔️ Login
✔️ Logout
✔️ Enviar mensagens de texto com botões - Send text message with buttons (NEW)
✔️ Enviar mensagens de texto para números fora da agenda- Send text message
✔️ Enviar mensagens para grupos - Send group messages
✔️ Enviar contatos - Send phone contacts
✔️ Enviar MP3 - Send MP3
✔️ Enviar MP4 - Send MP4
✔️ Enviar IMG - Send IMG
✔️ Enviar RAR - Send RAR
❌ Enviar Link com prévia - Sending and preview
✔️ Enviar localização - Location sending
✔️ Listar contatos - Contact list
✔️ Listar bate papos - Conversation list
❌ Status da bateria - Battery status
✔️ Simular digitando - Typing simulation
✔️ Recebimento de novas mensagem - Receiving new messages
✔️ Configurações de DDI - International number configuration
✔️ Validação de números - number validator
✔️ Checagem de conexão - check connection
✔️ Download de arquivos - Download files
✔️ Download da foto de perfil - Download profile picture
✔️ Criar grupo - Create group
❌ Sair do grupo - Leave the group
❌ Adicionar participante ao grupo - Add participant to the group
❌ Remover participante do grupo - Remove group member
❌ Promover participante adminstrador do grupo - Promote participant group administrator
❌ Despromover participanete adminstrador do grupo - Demote participating group administrator
✔️ Listar todos os grupos - List all groups
✔️ Listar participantes do grupo - List group participants
✔️ Entrar em grupo via link convite - Join group via invitation link
❌ Enviar botões na conversa - Send buttons in chat(Not functional in WhatsApp Multi devices Beta)
✔️ Criar enquetes. Create Pool

Cursos do componente / Component lessions:

Clique aqui / Click where

Nota 1: O TInject é de código aberto desenvolvido em comunidade, e não possui nenhum outro componente de terceiro além do TChromium vinculado ao código.

Nota 2: Desenvolvido no rad studio 10.3.0 (RIO).

Doações via PIX / Donations PIX: [email protected]



Official documentation:

Events that send messages

event Description Example return
send Send text message TInject1.send('[email protected]', 'hello'); -
sendFile Send file and text message TInject1.SendFile('[email protected]', 'c:\myFile.pdf', 'hello'); -
sendContact Send whatsapp contact TInject1.sendContact('[email protected]', '[email protected]'); -
sendLinkPreview Send preview link TInject1.sendLinkPreview('[email protected]', 'https://youtube.com/video', 'hello'); -
sendLocation Send Location TInject1.sendLocation('[email protected]', '-70.4078', '25.3789', 'my location');

Verifications events

event Description example event return return
CheckIsConnected Checks the connection between the device and whatsapp TInject1.CheckIsConnected(); OnIsConnected boolean
NewCheckIsValidNumber Checks whether one or more numbers are whatsapp numbers TInject1.NewCheckIsValidNumber('[email protected]'); OnNewGetNumber TReturnCheckNumber
GetBatteryStatus Checks the device's battery level TInject1.GetBatteryStatus; OnGetBatteryLevel TInject(Sender).BatteryLevel

projeto-tinject's People

Contributors

dorpoa avatar jtheiller avatar mikelustosa avatar renanrpozzo avatar softmais avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

projeto-tinject's Issues

sendLinkWithAutoPreview não funciona.

Olá, aqui o sendLinkWithAutoPreview nao está funcionando, mesmo depois da atualização, pois fromwWid = await window.Store.Conn.wid; sempre retorna indefinido. Estou usando a versão beta do whatsapp business.

Atualização para o novo CEF4Delphi

pequenas mudanção no projeto para que se possa atualizar e usar a ultima versão do CEF4Delphi e compilar o componente para as plataformas windows 32 e 64

Inject1.MyNumber retornando espaços.

Boa tarde pessoal.
Notei que esse atributo está vindo com espaços, mesmo após atualizar o componente, alguém saberia a causa? Desde já obrigado.

This is not an issue

I hate CEF. too many DLL
I am not going to use this.
Maybe someone will do it with WebView
Furthermore important point
If I have ALL READY open web.whatsapp on my desktop
it opens another one which is quite anoyin

no function to send

There is currently no function to send which could work.
Previously, it was still possible to send text and files.
did I do something wrong?

atualização

Bom dia Mike,
Atualizei agora para a versão 3.5.1.0 e parou de enviar mensagens. Mesmo no Demo. Agora não envia mais mensagem alguma.
O que posso estar fazendo errado?
Grato

Checknumberstatus multi errors !

English:
I'm trying to use checknumberstatus function in this format --> exitcode+country code + phone number
give me these two different errors while trying two different country numbers

PORTUGUESE:
Estou tentando usar a função checknumberstatus neste formato --> código de saída+código do país + número de telefone
dê-me esses dois erros diferentes ao tentar dois números de países diferentes

window.WAPI.sendMessageToID no work

hi
window.WAPI.sendMessageToID no work from 3 day ago.
before can send message to unknown whatsapp id,
but now only send message to chat list!

how way for send message to all whatsapp users?

checkNumberStatus don't work for Betta

Function checkNumberStatus do not work for Multi-Device Beta version of WhatsApp

{ id: "WapQuery", conditions: (module) => (module.default && module.default.queryExist) ? module.default : null }

window.WAPI.checkNumberStatus = function(id, done) {
    window.Store.WapQuery.queryExist(id).then((result) => {
        if (done !== undefined) {
            if (result.jid === undefined) throw 404;
            done(window.WAPI._serializeNumberStatusObj(result));
        }
    }).catch((e) => {
        if (done !== undefined) {
            done(window.WAPI._serializeNumberStatusObj({
                status: e,
                jid: id
            }));
        }
    });

    return true;
};

image

Chrome

It will be nice to have this project with web-browser and NOT with Chrome
since it needs a huge amount of DLL's.

Emded in component

Hello.
Is it possible to emded uTInject.Console.FrmConsole to Panel (or similar component) on my main form?

Did you know why addAndSendMsgToChat stops working

Im trying to send a vcard , this in the past works flawless , right now , its not, also i tried sending a location in both cases nothing happend.? the worst thing is that the function doesnt throw any error or something. well yes using this

await Promise.all(window.Store.addAndSendMsgToChat(chat, tempMsg ));Uncaught (in promise)
im getting this error: TypeError: h.waitForPrep is not a function,

but removing the promise.all function im not getting any error or response or result.

I tried with @Parth Thakkar solution a guy in a whatsapp forum
{ id: "addAndSendMsgToChat", conditions: (module) => (module.addAndSendMsgToChat && module.resendMsgToChat) ? module.addAndSendMsgToChat : null } but doesnt work either.


Theres any fix to this or whatsapp removed this or we have to wait an update? or the user has to activate any options related to privacy or something

Can anyone help with this, i dont know what to do here.

Thanks

AV with FieldName is templateParams

Hi,
With Delphi 10.3, I am getting an AV when field FieldName is "templateParams" e
"pendingParticipants". The rField returns nil.
in unit Rest.JSONReflect

Sou novo no projeto, ,mas para corrigir teria que por algo assim(É uma pergunta)?

property pendingParticipants: TArray<TParticipantsClass> read FpendingParticipants write FpendingParticipants;
property templateParams: TArray<String> read FtemplateParams write FtemplateParams;

else if jsonFieldVal is TJSONArray then
        begin
          rField := GetFieldType(Data, FieldName);
          // Unmarshal TList<T>.FListHelper as dynamic array using 10.2 layout
          if (rField.FieldType.Handle = TypeInfo(System.Generics.Collections.TListHelper)) and
             (I < JsonFields.Count - 1) and
             (string.CompareText('listHelper', FieldName) = 0) and
             (string.CompareText('items', JsonFields.Pairs[I + 1].JsonString.Value) = 0) then
          begin

I've got error message

Yesterday, I can run this without problem, but now I found this error message when I open the program:

Erro HTTP GET (js.abr) Error connecting with SSL. erron1409442E:SSL routines:SSl3_READ_BYTES:tIsvl alert protocol version

What this error about? I don't understand, pleas help. Thank you.

Problema ao enviar simples mensagem de texto

Boa noite, na rotina abaixo, o botãoo enviar mensagem de texto, parece ter um problema no noi. do telefone.
Na linha
InjectWhatsapp1.send(ed_num.Text, mem_message.Text);
se eu ponho um telefone como 5521984370088, a mensagem nunca chega, apesar do dialogo de enviado ser mostrado.
Para ser enviado eu preciso acrescentar "@c.us" ao no. do telefone.

É assim mesmo?

procedure TfrmPrincipal.btEnviaTextoClick(Sender: TObject);
begin
  if (not Assigned(frm_servicesWhats)) or (Assigned(frm_servicesWhats) and (frm_servicesWhats.vAuth = false)) then
  begin
    application.MessageBox('Você não está autenticado.','TInject', mb_iconwarning + mb_ok);
    abort;
  end;

  InjectWhatsapp1.send(ed_num.Text, mem_message.Text);
  application.MessageBox('Mensagem enviada com sucesso!','TInject', mb_iconAsterisk + mb_ok);
end;

Retorna como Connected, apesar de não estar.

Estou enfrentando um problema faz um certo e não consegui contornar.

Uso o QrCode do tipo Ft_None e faço a autenticação normalmente.
Após isso, se eu fechar a aplicação, desconectar a sessão do chrome do celular, e reiniciar a aplicação, o TInject me devolve o status Server_Connected, apesar de eu já ter feito a desconexão no celular.

De maneira resumida:

  1. Autenticar usando QrCode Ft_None;
  2. Fechar a aplicação
  3. Desconectar do celular
  4. Abrir a aplicação
  5. Ocorre o problema de me dar como connected.

Se eu fecho a aplicação novamente e abro, aí ele me retorna certo. Isso ocorre no DEMO também.

Depurando, me parece que o problema pode estar no OnTitleChange do Chromium, no FrmConsole, mas não consegui avançar.

não envia mensagens

ate o dia 01/11 conseguia enviar mensagens, mas sem compilar nada não envia mais a mensagem, apos a atualização de js.abr

  • OS: [e.g. iOS] win32 windows 10
  • CEF Version [e.g. 73] 91.1.22.0
  • WhatsApp web Version [e.g. 22]
  • js.abr file version [e.g. 1.4.0.0]1.5.0.0

tinjectconf.ini do proprio tinject demo
[Informacao]
Aplicativo vinculado=D:\Projetos\TINJECT\Win32\Release\TInject.exe
Valor True=1
Valor False=0
[Path Defines]
FrameWork=
Binary=D:\Projetos\TINJECT\Win32\Release
Locales=D:\Projetos\TINJECT\Win32\Release\locales
Cache=D:\Projetos\TINJECT\Win32\Release\cache
Data User=D:\Projetos\TINJECT\Win32\Release\User Data
Log File=D:\Projetos\TINJECT\Win32\Release
Log Console=D:\Projetos\TINJECT\Win32\Release\LogTinject
GPU=1
Log Severity=0
Log Console Active=0
Auto Receiver attached Path=D:\Projetos\TINJECT\Win32\Release
Auto Receiver attached=0
[Tinject Comp]
TInject Versão=3.5.0.0
Caminho JS=https://raw.githubusercontent.com/mikelustosa/Projeto-TInject/master/Source/JS/js.abr
CEF4 Versão=91.1.22.0
CHROME Versão=91.0.4472.124
Dlls=libcef.dll / chrome_elf.dll
Ultima interação=03/11/22 22:21:14

Send Buttons

How can i send buttons like this??
73892179-f13d4a80-4854-11ea-80b3-8723d7df3290
Im using SendButtons Function give me this error
image

It would be nice if

It would be nice if it used webbrouser instead of ce
without all those DLL.

Error in sendMessageOptions and clearChat

Hi everyone

I am testing the function 'sendMessageOptions' trying to send an image with the addition of buttons but 'window.Store.Validators' and 'window.Store.Wap2' are undefined:

if (options.linkPreview) {
  delete options.linkPreview;
  const link = await window.Store.Validators.findLink(content);
  if (link) {
    const preview = await window.Store.Wap2.default.queryLinkPreview(
      link.url
    );
    preview.preview = true;
    preview.subtype = 'url';
    options = { ...options, ...preview };
  }
}

I also tried the 'clearChat' function to clear one chat history but it throws the following error when executing it:
"s.fromMe are undefined"

window.WAPI.clearChat = async function (id) {
return await Store.ChatUtil.sendClear(Store.Chat.get(id),true);

Is there any other way to clear the history of a particular chat?

I will appreciate any help or ideas to try to solve the problem.

Thank you

Depois de um tempo para de enviar mensagem

Quando se passa algumas horas o sistema para de enviar mensagens. Então tem que reiniciar todo o sistema e reconectar novamente ao whatsapp. Passa mais um tempo e tem que refazer esse processo.
Alguma dica?

Mark as Archive

Hi,

Thanks for this awesome project. I need to send the message to the archive. Is this possible?

Uma forma de verificar a versão do whatsapp web que está conectado

Seria interessante uma forma de se verificar a versão do whatsapp web conectado por comando, assim seria mais simples de verificar problemas e reportar falhas.

Aproveitando, o mesmo deveria ser para o CEF, verificar a versão do CEF em operação por comando, hoje eu verifico a versão do js.abr para tentar pegar se teve ou não mudanças.

a ideia é melhorar o report de falhas com dados abaixo:

Versão do app whatsapp:
Versão do whatsapp web:
Versão do CEF:
Versão do TInject:
Versão do JS.abr:
Versão do Windows:

WhatsApp Business

Ao iniciar a aplicação e caputar a lista de contatos nao retorna do whatsapp business, oque pode ser?
no whastapp normal retorna normalmente..

av ao compilar

amigos ao compilar eu tomo av dentro da classe do indy. o que poderia ser?

queryLinkPreview Function not found

Parece que foi retirada a função Store.WapQuery.queryLinkPreview() que trazia informações sobre a página de um link enviado na mensagem, que é utilizado para preencher os atributos de linkPreview:

window.WAPI.sendLinkWithAutoPreview = async function (chatId, url, text) {
var chatSend = WAPI.getChat(chatId);
if (chatSend === undefined) {
return false;
}
const linkPreview = await Store.WapQuery.queryLinkPreview(url);
return (await chatSend.sendMessage(text.includes(url) ? text : '${url}\n${text}, {
linkPreview
})) == 'success'
}

checkNumberStatus is not working

Describe the bug
Function checkNumberStatus is not working

To Reproduce
Steps to reproduce the behavior:

  1. Inject script
  2. execute checkNumberStatus

Expected behavior
Must return
"status" => true

But return:

status
: 
TypeError: Cannot read properties of undefined (reading 'queryPhoneExists') at window.WAPI.checkNumberStatus (<anonymous>:2015:56) at <anonymous>:1:6
message
: 
"Cannot read properties of undefined (reading 'queryPhoneExists')"
stack
: 
"TypeError: Cannot read properties of undefined (reading 'queryPhoneExists')\n    at window.WAPI.checkNumberStatus (<anonymous>:2015:56)\n    at <anonymous>:1:6"

Screenshots
image

Whatsapp WEB version: 2.2244.6

uTinject.Console

Correção para o problema no carregamento da lista de todos os contatos que só carrega na primeira vez.

//Função alterada por Rafael Henrique para corrigir o carregamento da lista de contatos - 21.08.2022//
procedure TFrmConsole.GetAllContacts(PIgnorarLeitura1: Boolean);
begin

ReleaseConnection;

if PIgnorarLeitura1 then
Exit;

if FgettingContact then
Exit;

FgettingContact := True;

FrmConsole.ExecuteJS(FrmConsole_JS_GetAllContacts, False);

end;

Error Sending Contact

Even after passing the data according to the manual, it does not send the contact, what can it be?

location change event for shared location

Hi,

first thank's for sharing this nice project!
SendLocation works fine but i want the other way arround:
WA user can share it's live location for example for 1 hour. Is it possible to get the shared location in browser/Delphi event?

Best
Dirk

DLL Delphi10

É possível criar uma dll no delphi 10 para usar o TInject para ser depois chamada pelo Delphi 6?

Eu tentei fazer um exemplo quando executo o GlobalCEFApp.StartMainProcess o sistema trava.

CEF4Delphi mais recente.

É possível atualizar para o CEF4Delphi mais atual?
Eu atualizei o meu porém parou de funcionar o TInject.

Error compile on Delphi 10.4.2 [dcc32 Error] uTInject.Classes.pas(1172): E2003 Undeclared identifier: 'a'

Solution:

Change code line 1155:

{ TClassPadraoList }
procedure TClassPadraoList.ClearArray(PArray: TArray);
var
I: Integer;
begin
try
for i:= Length(PArray)-1 downto 0 do begin
{$IFDEF VER300}
freeAndNil(PArray[i]);
{$ENDIF}

   {$IFDEF VER330}
     freeAndNil(PArray[i]);
   {$ENDIF}

   {$IFDEF VER340}
     var a: TArray<TClassPadrao>;
     a := TArray<TClassPadrao>(PArray);
     FreeAndNil(a[i]);
   {$ENDIF}
 end;

finally
SetLength(PArray, 0);
end;
end;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.