Add BulkMessage Type
This commit is contained in:
45
lib/types/BulkMessage.js
Normal file
45
lib/types/BulkMessage.js
Normal file
@ -0,0 +1,45 @@
|
||||
import Message from './Message';
|
||||
|
||||
/**
|
||||
* Message class, used to send a message to multiple chats
|
||||
*/
|
||||
export default class BulkMessage extends Message {
|
||||
/**
|
||||
* Create a new message
|
||||
* @param {object} properties Message properties, as defined by Telegram API
|
||||
*/
|
||||
constructor(properties = {}) {
|
||||
super(properties);
|
||||
|
||||
this.chats = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set multiple chat_id's for the message
|
||||
* @param {number} chat
|
||||
* @return {object} returns the message object
|
||||
*/
|
||||
to(...args) {
|
||||
const chats = args.reduce((a, b) => {
|
||||
return a.concat(b);
|
||||
}, []);
|
||||
|
||||
this.chats = chats;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the message to all chats
|
||||
* @param {Bot} bot
|
||||
* @return {Promise} Resolved when the message is sent to all chats
|
||||
*/
|
||||
send(bot) {
|
||||
const promises = this.chats.map(chat => {
|
||||
const clone = Object.assign({}, this.properties);
|
||||
const message = new Message(clone).to(chat);
|
||||
return message.send(bot);
|
||||
});
|
||||
|
||||
return Promise.all(promises);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user