mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
Fix ContactsArrayMessage and add getBusinessProfile (#1074)
* Fix: ContactsArrayMessage and add getBusinessProfile * delete package-lock.json * edit readme.md * add bussines hours * make type same with leagcy * revert
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { SocketConfig, WAPresence, PresenceData, Chat, WAPatchCreate, WAMediaUpload, ChatMutation, WAPatchName, AppStateChunk, LTHashState, ChatModification, Contact } from "../Types";
|
||||
import { SocketConfig, WAPresence, PresenceData, Chat, WAPatchCreate, WAMediaUpload, ChatMutation, WAPatchName, AppStateChunk, LTHashState, ChatModification, Contact, WABusinessProfile, WABusinessHoursConfig } from "../Types";
|
||||
import { BinaryNode, getBinaryNodeChild, getBinaryNodeChildren, jidNormalizedUser, S_WHATSAPP_NET, reduceBinaryNodeToDictionary } from "../WABinary";
|
||||
import { proto } from '../../WAProto'
|
||||
import { generateProfilePicture, toNumber, encodeSyncdPatch, decodePatches, extractSyncdPatches, chatModificationToAppPatch, decodeSyncdSnapshot, newLTHashState } from "../Utils";
|
||||
@@ -159,6 +159,50 @@ export const makeChatsSocket = (config: SocketConfig) => {
|
||||
})
|
||||
}
|
||||
|
||||
const getBusinessProfile = async (jid: string): Promise<WABusinessProfile | void> => {
|
||||
const results = await query({
|
||||
tag: 'iq',
|
||||
attrs: {
|
||||
to: 's.whatsapp.net',
|
||||
xmlns: 'w:biz',
|
||||
type: 'get'
|
||||
},
|
||||
content: [{
|
||||
tag: 'business_profile',
|
||||
attrs: { v: '244' },
|
||||
content: [{
|
||||
tag: 'profile',
|
||||
attrs: { jid }
|
||||
}]
|
||||
}]
|
||||
})
|
||||
const profiles = getBinaryNodeChild(getBinaryNodeChild(results, 'business_profile'), 'profile')
|
||||
if (!profiles) {
|
||||
// if not bussines
|
||||
if (logger.level == 'trace') logger.trace({ jid }, 'Not bussines')
|
||||
return
|
||||
}
|
||||
const address = getBinaryNodeChild(profiles, 'address')
|
||||
const description = getBinaryNodeChild(profiles, 'description')
|
||||
const website = getBinaryNodeChild(profiles, 'website')
|
||||
const email = getBinaryNodeChild(profiles, 'email')
|
||||
const category = getBinaryNodeChild(getBinaryNodeChild(profiles, 'categories'), 'category')
|
||||
const business_hours = getBinaryNodeChild(profiles, 'business_hours')
|
||||
const business_hours_config = business_hours && getBinaryNodeChildren(business_hours, 'business_hours_config')
|
||||
return {
|
||||
wid: profiles.attrs?.jid,
|
||||
address: address?.content.toString(),
|
||||
description: description?.content.toString(),
|
||||
website: [website?.content.toString()],
|
||||
email: email?.content.toString(),
|
||||
category: category?.content.toString(),
|
||||
business_hours: {
|
||||
timezone: business_hours?.attrs?.timezone,
|
||||
business_config: business_hours_config?.map(({ attrs }) => attrs as unknown as WABusinessHoursConfig)
|
||||
}
|
||||
} as unknown as WABusinessProfile
|
||||
}
|
||||
|
||||
const updateAccountSyncTimestamp = async(fromTimestamp: number | string) => {
|
||||
logger.info({ fromTimestamp }, 'requesting account sync')
|
||||
await sendNode({
|
||||
@@ -621,8 +665,9 @@ export const makeChatsSocket = (config: SocketConfig) => {
|
||||
fetchStatus,
|
||||
updateProfilePicture,
|
||||
updateBlockStatus,
|
||||
getBusinessProfile,
|
||||
resyncAppState,
|
||||
chatModify,
|
||||
resyncMainAppState,
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user