feat: Simulate recording audio in chat, clear recording/typing state, standardize chatstate change function names
This commit is contained in:
parent
d35f101fac
commit
b07b38bbe8
3 changed files with 47 additions and 6 deletions
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue