@juzi/wechaty
Version:
Wechaty is a RPA SDK for Chatbot Makers.
80 lines • 2.96 kB
JavaScript
/**
* Wechaty Chatbot SDK - https://github.com/wechaty/wechaty
*
* @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and
* Wechaty Contributors <https://github.com/wechaty>.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { log } from '@juzi/wechaty-puppet';
import { validationMixin } from '../user-mixins/validation.js';
import { wechatifyMixinBase, } from '../user-mixins/wechatify.js';
import { concurrencyExecuter } from 'rx-queue';
class MomentMixin extends wechatifyMixinBase() {
static async post(post) {
// post new moment
return this.wechaty.publish(post);
}
static async unPost(post) {
return this.wechaty.unpublish(post);
}
static timeline(contact) {
// list all moment
void contact;
return [];
}
static async signature(signature) {
log.verbose('Moment', 'signature(%s)', signature);
return this.wechaty.puppet.momentSignature(signature);
}
static async coverage(coverage) {
log.verbose('Moment', 'coverage(%s)', JSON.stringify(coverage));
return this.wechaty.puppet.momentCoverage(coverage);
}
static async visibleList() {
log.verbose('Moment', 'visibleList()');
try {
const contactIdList = await this.wechaty.puppet.momentVisibleList();
const idToContact = async (id) => this.wechaty.Contact.find({ id }).catch(e => this.wechaty.emitError(e));
/**
* we need to use concurrencyExecuter to reduce the parallel number of the requests
*/
const CONCURRENCY = 17;
const contactIterator = concurrencyExecuter(CONCURRENCY)(idToContact)(contactIdList);
const contactList = [];
for await (const contact of contactIterator) {
if (contact) {
contactList.push(contact);
}
}
return contactList;
}
catch (e) {
this.wechaty.emitError(e);
log.error('Moment', 'this.wechaty.puppet.momentVisibleList() rejected: %s', e.message);
return [];
}
}
/*
* @hideconstructor
*/
constructor() {
super();
log.verbose('Moment', 'constructor()');
}
}
class MomentImpl extends validationMixin(MomentMixin)() {
}
export { MomentImpl, };
//# sourceMappingURL=moment.js.map