refactor: enforce single param on sending/editing methods (#5758)

Co-authored-by: ckohen <chaikohen@gmail.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
This commit is contained in:
Adrian Castro
2021-06-09 14:12:16 +02:00
committed by GitHub
parent dda5ee2e9f
commit 0467a9075f
8 changed files with 89 additions and 260 deletions

View File

@@ -107,8 +107,7 @@ class Webhook {
/**
* Sends a message with this webhook.
* @param {string|APIMessage} [content=''] The content to send
* @param {WebhookMessageOptions|MessageAdditions} [options={}] The options to provide
* @param {string|APIMessage|WebhookMessageOptions} options The options to provide
* @returns {Promise<Message|Object>}
* @example
* // Send a basic message
@@ -134,7 +133,8 @@ class Webhook {
* .catch(console.error);
* @example
* // Send an embed with a local image inside
* webhook.send('This is an embed', {
* webhook.send({
* content: 'This is an embed',
* embeds: [{
* thumbnail: {
* url: 'attachment://file.jpg'
@@ -148,13 +148,13 @@ class Webhook {
* .then(console.log)
* .catch(console.error);
*/
async send(content, options) {
async send(options) {
let apiMessage;
if (content instanceof APIMessage) {
apiMessage = content.resolveData();
if (options instanceof APIMessage) {
apiMessage = options.resolveData();
} else {
apiMessage = APIMessage.create(this, content, options).resolveData();
apiMessage = APIMessage.create(this, options).resolveData();
if (Array.isArray(apiMessage.data.content)) {
return Promise.all(apiMessage.split().map(this.send.bind(this)));
}
@@ -244,15 +244,18 @@ class Webhook {
/**
* Edits a message that was sent by this webhook.
* @param {MessageResolvable|'@original'} message The message to edit
* @param {?(string|APIMessage)} [content] The new content for the message
* @param {WebhookEditMessageOptions|MessageAdditions} [options] The options to provide
* @param {string|APIMessage|WebhookEditMessageOptions} options The options to provide
* @returns {Promise<Message|Object>} Returns the raw message data if the webhook was instantiated as a
* {@link WebhookClient} or if the channel is uncached, otherwise a {@link Message} will be returned
*/
async editMessage(message, content, options) {
const { data, files } = await (
content?.resolveData?.() ?? APIMessage.create(this, content, options).resolveData()
).resolveFiles();
async editMessage(message, options) {
let apiMessage;
if (options instanceof APIMessage) apiMessage = options;
else apiMessage = APIMessage.create(this, options);
const { data, files } = await apiMessage.resolveData().resolveFiles();
const d = await this.client.api
.webhooks(this.id, this.token)
.messages(typeof message === 'string' ? message : message.id)