@juzi/wechaty-puppet-whatsapp
Version:
Wechaty Puppet for WhatsApp
69 lines • 2.95 kB
JavaScript
import * as PUPPET from '@juzi/wechaty-puppet';
import { log } from '../config.js';
import { WA_ERROR_TYPE } from '../exception/error-type.js';
import WAError from '../exception/whatsapp-error.js';
import '@juzi/wechaty-puppet/payloads';
const PRE = 'MIXIN_FRIENDSHIP';
export async function friendshipRawPayload(id) {
const cache = await this.manager.getCacheManager();
const friendship = await cache.getFriendshipRawPayload(id);
if (!friendship) {
throw WAError(WA_ERROR_TYPE.ERR_MSG_NOT_FOUND, 'Friendship not found', `friendshipId: ${id}`);
}
return friendship;
}
export async function friendshipRawPayloadParser(rawPayload) {
return rawPayload;
}
export async function friendshipSearchPhone(phone) {
log.verbose(PRE, 'friendshipSearchPhone(%s)', phone);
const contactId = `${phone}@c.us`;
const isUser = await this.manager.isWhatsappUser(contactId);
if (!isUser) {
throw WAError(WA_ERROR_TYPE.ERR_CONTACT_NOT_FOUND, 'Not a registered user on WhatsApp.', `contactId: ${contactId}`);
}
return contactId;
}
export async function friendshipSearchWeixin(weixin) {
log.verbose(PRE, 'friendshipSearchWeixin(%s)', weixin);
return PUPPET.throwUnsupportedError();
}
export async function friendshipSearchHandle(handle) {
log.verbose(PRE, 'friendshipSearchHandle(%s)', handle);
return PUPPET.throwUnsupportedError();
}
export async function friendshipAdd(contactId, option) {
let hello = '';
if (typeof (option) === 'object') {
hello = option.hello || '';
}
else {
hello = option || '';
}
// allow no hello for miaohui batch add
// if (hello.length === 0) {
// hello = STRINGS[LANGUAGE].DEFAULT_HELLO_MESSAGE
// }
log.info(PRE, 'friendshipAdd(%s, %s)', contactId, JSON.stringify(option));
const isUser = await this.manager.isWhatsappUser(contactId);
if (!isUser) {
throw WAError(WA_ERROR_TYPE.ERR_CONTACT_NOT_FOUND, 'Not a registered user on WhatsApp.', `contactId: ${contactId}`);
}
const contactPayload = await this.contactRawPayload(contactId, true);
if (!contactPayload.isMyContact) {
const contactPhone = contactId.split('@')[0] || '';
await this.manager.getWhatsAppClient().saveOrEditAddressbookContact(contactPhone, contactPayload.pushname || contactPhone, '', true);
}
if (hello) {
await this.messageSendText(contactId, hello);
}
}
export async function friendshipAccept(friendshipId) {
const friendshipPayload = await this.friendshipRawPayload(friendshipId);
const contactPhone = friendshipPayload.contactId.split('@')[0] || '';
const contactPayload = await this.contactRawPayload(friendshipPayload.contactId, true);
if (!contactPayload.isMyContact) {
await this.manager.getWhatsAppClient().saveOrEditAddressbookContact(contactPhone, contactPayload.pushname || '', '', true);
}
}
//# sourceMappingURL=friendship.js.map