mirror of
https://github.com/cheveguerra/whatsapp-web.js.git
synced 2026-04-19 20:19:14 +00:00
feat: Simulate recording audio in chat, clear recording/typing state, standardize chatstate change function names
This commit is contained in:
11
example.js
11
example.js
@@ -170,7 +170,16 @@ client.on('message', async msg => {
|
|||||||
chat.archive();
|
chat.archive();
|
||||||
} else if (msg.body === '!typing') {
|
} else if (msg.body === '!typing') {
|
||||||
const chat = await msg.getChat();
|
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();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -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 => {
|
return this.client.pupPage.evaluate(chatId => {
|
||||||
window.WWebJS.typing(chatId);
|
window.WWebJS.sendChatstate('typing', chatId);
|
||||||
return true;
|
return true;
|
||||||
}, this.id._serialized);
|
}, 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;
|
module.exports = Chat;
|
||||||
|
|||||||
@@ -256,8 +256,21 @@ exports.LoadUtils = () => {
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
window.WWebJS.typing = async (chatId) => {
|
window.WWebJS.sendChatstate = async (state, chatId) => {
|
||||||
await window.Store.Wap.sendChatstateComposing(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;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user