mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
Added within chat search + updated readme
This commit is contained in:
28
README.md
28
README.md
@@ -103,6 +103,30 @@ client.connectSlim(null, 20*1000) // use loaded credentials & timeout in 20s
|
|||||||
```
|
```
|
||||||
See the browser credentials type [here](/src/WAConnection/Constants.ts).
|
See the browser credentials type [here](/src/WAConnection/Constants.ts).
|
||||||
|
|
||||||
|
## QR Overriding
|
||||||
|
|
||||||
|
If you want to do some custom processing with the QR code used to authenticate, you can override the following method:
|
||||||
|
``` ts
|
||||||
|
client.onReadyForPhoneAuthentication = ([ref, publicKey, clientID]) => {
|
||||||
|
const str = ref + ',' + publicKey + ',' + clientID // the QR string
|
||||||
|
// Now, use 'str' to display in QR UI or send somewhere
|
||||||
|
}
|
||||||
|
const user = await client.connect ()
|
||||||
|
```
|
||||||
|
|
||||||
|
If you need to regenerate the QR, you can also do so using:
|
||||||
|
``` ts
|
||||||
|
let generateQR: async () => void // call generateQR on some timeout or error
|
||||||
|
client.onReadyForPhoneAuthentication = ([ref, publicKey, clientID]) => {
|
||||||
|
generateQR = async () => {
|
||||||
|
ref = await client.generateQRCode () // returns a new ref code to use for QR generation
|
||||||
|
const str = ref + ',' + publicKey + ',' + clientID // the QR string
|
||||||
|
// re-print str as QR or update in UI or send somewhere
|
||||||
|
//QR.generate(str, { small: true })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const user = await client.connect ()
|
||||||
|
```
|
||||||
## Handling Events
|
## Handling Events
|
||||||
|
|
||||||
Implement the following callbacks in your code:
|
Implement the following callbacks in your code:
|
||||||
@@ -298,8 +322,10 @@ setTimeout (() => {
|
|||||||
```
|
```
|
||||||
- To search through messages
|
- To search through messages
|
||||||
``` ts
|
``` ts
|
||||||
const response = await client.searchMessages ('so cool', 25, 0) // get 25 messages of the first page of results
|
const response = await client.searchMessages ('so cool', null, 25, 1) // search in all chats
|
||||||
console.log (`got ${response.messages.length} messages in search`)
|
console.log (`got ${response.messages.length} messages in search`)
|
||||||
|
|
||||||
|
const response2 = await client.searchMessages ('so cool', '1234@c.us', 25, 1) // search in given chat
|
||||||
```
|
```
|
||||||
Of course, replace ``` xyz ``` with an actual ID.
|
Of course, replace ``` xyz ``` with an actual ID.
|
||||||
Append ``` @s.whatsapp.net ``` for individuals & ``` @g.us ``` for groups.
|
Append ``` @s.whatsapp.net ``` for individuals & ``` @g.us ``` for groups.
|
||||||
|
|||||||
@@ -70,10 +70,11 @@ export default class WhatsAppWebMessages extends WhatsAppWebBase {
|
|||||||
/**
|
/**
|
||||||
* Search WhatsApp messages with a given text string
|
* Search WhatsApp messages with a given text string
|
||||||
* @param txt the search string
|
* @param txt the search string
|
||||||
|
* @param inJid the ID of the chat to search in, set to null to search all chats
|
||||||
* @param count number of results to return
|
* @param count number of results to return
|
||||||
* @param page page number of results
|
* @param page page number of results (starts from 1)
|
||||||
*/
|
*/
|
||||||
async searchMessages(txt: string, count: number, page: number) {
|
async searchMessages(txt: string, inJid: string | null, count: number, page: number) {
|
||||||
const json = [
|
const json = [
|
||||||
'query',
|
'query',
|
||||||
{
|
{
|
||||||
@@ -81,7 +82,8 @@ export default class WhatsAppWebMessages extends WhatsAppWebBase {
|
|||||||
type: 'search',
|
type: 'search',
|
||||||
search: txt,
|
search: txt,
|
||||||
count: count.toString(),
|
count: count.toString(),
|
||||||
page: page.toString()
|
page: page.toString(),
|
||||||
|
jid: inJid
|
||||||
},
|
},
|
||||||
null,
|
null,
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -131,9 +131,12 @@ WAClientTest('Misc', (client) => {
|
|||||||
await client.modifyChat (testJid, ChatModification.unmute, {stamp: mutedate})
|
await client.modifyChat (testJid, ChatModification.unmute, {stamp: mutedate})
|
||||||
})
|
})
|
||||||
it('should return search results', async () => {
|
it('should return search results', async () => {
|
||||||
const response = await client.searchMessages('Adh', 25, 0)
|
const jids = [null, testJid]
|
||||||
assert.ok (response.messages)
|
for (let i in jids) {
|
||||||
assert.ok (response.messages.length >= 0)
|
const response = await client.searchMessages('Hello', jids[i], 25, 1)
|
||||||
|
assert.ok (response.messages)
|
||||||
|
assert.ok (response.messages.length >= 0)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
WAClientTest('Groups', (client) => {
|
WAClientTest('Groups', (client) => {
|
||||||
|
|||||||
@@ -50,9 +50,7 @@ export default class WAConnectionBase {
|
|||||||
protected callbacks = {}
|
protected callbacks = {}
|
||||||
protected encoder = new Encoder()
|
protected encoder = new Encoder()
|
||||||
protected decoder = new Decoder()
|
protected decoder = new Decoder()
|
||||||
/**
|
/** What to do when you need the phone to authenticate the connection (generate QR code by default) */
|
||||||
* What to do when you need the phone to authenticate the connection (generate QR code by default)
|
|
||||||
*/
|
|
||||||
onReadyForPhoneAuthentication = generateQRCode
|
onReadyForPhoneAuthentication = generateQRCode
|
||||||
unexpectedDisconnect = (err) => this.close()
|
unexpectedDisconnect = (err) => this.close()
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const decrypt = buffer => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
json.messages.forEach ((str, i) => {
|
json.messages.forEach ((str, i) => {
|
||||||
const buffer = Buffer.from (str, 'hex')
|
const buffer = Buffer.from (str, 'base64')
|
||||||
try {
|
try {
|
||||||
const [tag, json, binaryTags] = decrypt (buffer)
|
const [tag, json, binaryTags] = decrypt (buffer)
|
||||||
console.log (
|
console.log (
|
||||||
|
|||||||
Reference in New Issue
Block a user