Merge branch 'main' into main
This commit is contained in:
		@@ -122,12 +122,12 @@ class MessagePayload {
 | 
			
		||||
   * Resolves data.
 | 
			
		||||
   * @returns {MessagePayload}
 | 
			
		||||
   */
 | 
			
		||||
  async resolveData() {
 | 
			
		||||
  resolveData() {
 | 
			
		||||
    if (this.data) return this;
 | 
			
		||||
    const isInteraction = this.isInteraction;
 | 
			
		||||
    const isWebhook = this.isWebhook;
 | 
			
		||||
 | 
			
		||||
    let content = this.makeContent();
 | 
			
		||||
    const content = this.makeContent();
 | 
			
		||||
    const tts = Boolean(this.options.tts);
 | 
			
		||||
 | 
			
		||||
    let nonce;
 | 
			
		||||
@@ -190,19 +190,17 @@ class MessagePayload {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (this.options.embeds) {
 | 
			
		||||
      //check if embed is an array
 | 
			
		||||
      if (!Array.isArray(this.options.embeds)) {
 | 
			
		||||
        this.options.embeds = [this.options.embeds];
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      //check if the webembeds is an array of WebEmbed
 | 
			
		||||
      if (this.options.embeds.every(embed => embed instanceof WebEmbed)) {
 | 
			
		||||
          //while loop to make sure all embeds will be added to the content
 | 
			
		||||
          while (this.options.embeds.length) {
 | 
			
		||||
            const embed = this.options.embeds.shift();
 | 
			
		||||
            const data = await embed.toMessage();
 | 
			
		||||
            content +=`\n${data}`
 | 
			
		||||
          }
 | 
			
		||||
      let webembeds = this.options.embeds.filter(e => e instanceof WebEmbed);
 | 
			
		||||
      this.options.embeds = this.options.embeds.filter(e => !(e instanceof WebEmbed));
 | 
			
		||||
 | 
			
		||||
      while (webembeds.length) {
 | 
			
		||||
        const embed = webembeds.shift();
 | 
			
		||||
        const data = await embed.toMessage();
 | 
			
		||||
        content +=`\n${data}`
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
@@ -11,18 +11,6 @@ class WebEmbed {
 | 
			
		||||
        this._setup(data);
 | 
			
		||||
    }
 | 
			
		||||
    _setup(data) {
 | 
			
		||||
        /**
 | 
			
		||||
         * Shorten the link
 | 
			
		||||
         * @type {?boolean}
 | 
			
		||||
         */
 | 
			
		||||
        this.shorten = data.shorten ?? false;
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Hidden Embed link
 | 
			
		||||
         * @type {?boolean}
 | 
			
		||||
         */
 | 
			
		||||
        this.hidden = data.hidden ?? false;
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * The title of this embed
 | 
			
		||||
         * @type {?string}
 | 
			
		||||
@@ -246,15 +234,17 @@ class WebEmbed {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return Message Content + Embed (if hidden, pls check content length because it has 1000+ length)
 | 
			
		||||
     * @param {boolean} hidden Hidden Embed link
 | 
			
		||||
     * @param {boolean} shorten Shorten link ?
 | 
			
		||||
     * @returns {string} Message Content
 | 
			
		||||
     */
 | 
			
		||||
    async toMessage() {
 | 
			
		||||
    async toMessage(hidden = false, shorten = true) {
 | 
			
		||||
        const arrayQuery = [];
 | 
			
		||||
        if (this.title) {
 | 
			
		||||
            arrayQuery.push(`title=${encodeURIComponent(this.title)}`);
 | 
			
		||||
            arrayQuery.push(`title=${this.title}`);
 | 
			
		||||
        }
 | 
			
		||||
        if (this.description) {
 | 
			
		||||
            arrayQuery.push(`description=${encodeURIComponent(this.description)}`);
 | 
			
		||||
            arrayQuery.push(`description=${this.description}`);
 | 
			
		||||
        }
 | 
			
		||||
        if (this.url) {
 | 
			
		||||
            arrayQuery.push(`url=${encodeURIComponent(this.url)}`);
 | 
			
		||||
@@ -287,28 +277,32 @@ class WebEmbed {
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
        const fullURL = `${baseURL}${arrayQuery.join('&')}`;
 | 
			
		||||
        if (this.shorten) {
 | 
			
		||||
        if (shorten) {
 | 
			
		||||
            const url = await getShorten(fullURL);
 | 
			
		||||
            if (!url) console.log('Cannot shorten URL in WebEmbed');
 | 
			
		||||
            return this.hidden ? `${hiddenCharter} ${url || fullURL}` : (url || fullURL);
 | 
			
		||||
            return hidden ? `${hiddenCharter} ${url || fullURL}` : (url || fullURL);
 | 
			
		||||
        } else {
 | 
			
		||||
            return this.hidden ? `${hiddenCharter} ${fullURL}` : fullURL;
 | 
			
		||||
            return hidden ? `${hiddenCharter} ${fullURL}` : fullURL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// API by Shiraori#1782 (me)
 | 
			
		||||
 // Credit: https://www.npmjs.com/package/node-url-shortener + google :))
 | 
			
		||||
const getShorten = async (url) => {
 | 
			
		||||
    // Please not using this API, it's hosting in Heroku, very slow
 | 
			
		||||
    const APIurl = [
 | 
			
		||||
        'https://is.gd/create.php?format=simple&url=',
 | 
			
		||||
        'https://tinyurl.com/api-create.php?url=',
 | 
			
		||||
        // 'https://cdpt.in/shorten?url=', Redirects 5s :(
 | 
			
		||||
    ];
 | 
			
		||||
    try {
 | 
			
		||||
        const res = await axios
 | 
			
		||||
            .post('https://sagiri-fansub.tk/api/v1/embed', {
 | 
			
		||||
                url,
 | 
			
		||||
            })
 | 
			
		||||
        return `https://sagiri-fansub.tk/api/v1/embed/${res.data.path}`;
 | 
			
		||||
        const res = await axios.get(
 | 
			
		||||
            `${APIurl[Math.floor(Math.random() * APIurl.length)]}${url}`,
 | 
			
		||||
        );
 | 
			
		||||
        return `${res.data}`;
 | 
			
		||||
    } catch {
 | 
			
		||||
        return void 0;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = WebEmbed;
 | 
			
		||||
module.exports.hiddenEmbed = hiddenCharter;
 | 
			
		||||
@@ -166,9 +166,9 @@ class TextBasedChannel {
 | 
			
		||||
    let messagePayload;
 | 
			
		||||
 | 
			
		||||
    if (options instanceof MessagePayload) {
 | 
			
		||||
      messagePayload = await options.resolveData();
 | 
			
		||||
      messagePayload = options.resolveData();
 | 
			
		||||
    } else {
 | 
			
		||||
      messagePayload = await MessagePayload.create(this, options).resolveData();
 | 
			
		||||
      messagePayload = MessagePayload.create(this, options).resolveData();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const { data, files } = await messagePayload.resolveFiles();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user