feat: Simulate recording audio in chat, clear recording/typing state, standardize chatstate change function names

This commit is contained in:
Pedro Lopez
2020-02-29 14:07:47 -04:00
parent d35f101fac
commit b07b38bbe8
3 changed files with 47 additions and 6 deletions

View File

@@ -170,7 +170,16 @@ client.on('message', async msg => {
chat.archive();
} else if (msg.body === '!typing') {
const chat = await msg.getChat();
chat.typing();
// simulates typing in the chat
chat.sendStateTyping();
} else if (msg.body === '!recording') {
const chat = await msg.getChat();
// simulates recording audio in the chat
chat.sendStateRecording();
} else if (msg.body === '!clearstate') {
const chat = await msg.getChat();
// stops typing or recording in the chat
chat.clearState();
}
});

View File

@@ -104,15 +104,34 @@ class Chat extends Base {
}
/**
* Start typing in chat. This will last for 25 seconds.
* Simulate typing in chat. This will last for 25 seconds.
*/
async sendTyping() {
async sendStateTyping() {
return this.client.pupPage.evaluate(chatId => {
window.WWebJS.typing(chatId);
window.WWebJS.sendChatstate('typing', chatId);
return true;
}, this.id._serialized);
}
/**
* Simulate recording audio in chat. This will last for 25 seconds.
*/
async sendStateRecording() {
return this.client.pupPage.evaluate(chatId => {
window.WWebJS.sendChatstate('recording', chatId);
return true;
}, this.id._serialized);
}
/**
* Stops typing or recording in chat immediately.
*/
async clearState() {
return this.client.pupPage.evaluate(chatId => {
window.WWebJS.sendChatstate('stop', chatId);
return true;
}, this.id._serialized);
}
}
module.exports = Chat;

View File

@@ -256,8 +256,21 @@ exports.LoadUtils = () => {
return false;
};
window.WWebJS.typing = async (chatId) => {
await window.Store.Wap.sendChatstateComposing(chatId);
window.WWebJS.sendChatstate = async (state, chatId) => {
switch(state) {
case 'typing':
await window.Store.Wap.sendChatstateComposing(chatId);
break;
case 'recording':
await window.Store.Wap.sendChatstateRecording(chatId);
break;
case 'stop':
await window.Store.Wap.sendChatstatePaused(chatId);
break;
default:
throw 'Invalid chatstate';
}
return true;
};