Skip to content

Yogap sendMessage has so much delay #1253

Open
@kadir3351

Description

@kadir3351

I want to send 4 messages in order, but I want their order to be preserved.
This is also impossible.
I tried many methods, either it did not send in order or it was very slow.
1-)


bot.sendMessage(msg.chat.id, "aleykümselamkardeş")
          .then((sentMessage) => {
            setUserProperty(msg.chat.id, "last_message_id", sentMessage.message_id);
            bot.sendMessage(msg.chat.id, "1. mesaj")
          .then((sentMessage) => {
            setUserProperty(msg.chat.id, "last_message_id", sentMessage.message_id);
            bot.sendMessage(msg.chat.id, "2.mesaj")
          .then((sentMessage) => {
            setUserProperty(msg.chat.id, "last_message_id", sentMessage.message_id);
            console.timeEnd("sa")  
          })
          })
          })

522.625ms

const sendMessagesFast = async (messages, chatId) => {
  // Mesajları hızlı bir şekilde sırayla gönderiyoruz
  for (let index = 0; index < messages.length; index++) {
    const message = messages[index];
    let processedMessage = processMessage(message, chatId);

    try {
      // Her mesajı sırayla gönderiyoruz
      const sentMessage = await bot.sendMessage(chatId, processedMessage);
      setUserProperty(chatId, "last_message_id", sentMessage.message_id);
      console.log(`Mesaj ${index + 1} başarıyla gönderildi.`);
    } catch (error) {
      console.error(`Mesaj ${index + 1} gönderilirken hata oluştu: ${error}`);
    }
  }

  console.timeEnd("message-send-time");
};

468.42ms

const sendMessagesFast = async (messages, chatId) => {
  console.time("message-send-time");

  // Mesajları paralel olarak göndermek için, her mesajı Promise.all ile başlatıyoruz.
  const sendPromises = messages.map(async (message, index) => {
    let processedMessage = processMessage(message, chatId);

    try {
      // Her mesajı paralel olarak gönderebiliriz
      const sentMessage = await bot.sendMessage(chatId, processedMessage);
      setUserProperty(chatId, "last_message_id", sentMessage.message_id);
      console.log(`Mesaj ${index + 1} başarıyla gönderildi.`);
    } catch (error) {
      console.error(`Mesaj ${index + 1} gönderilirken hata oluştu: ${error}`);
    }
  });

  // Tüm mesajları paralel olarak göndermek için Promise.all kullanıyoruz.
  await Promise.all(sendPromises);

  console.timeEnd("message-send-time");
};

2ms but not in order

const sendMessagesFastWithOrder = (messages, chatId) => {
  console.time("message-send-time");

  // Mesajları sırayla ve hızlı şekilde göndermek için bir fonksiyon yazıyoruz.
  let index = 0;

  function sendNextMessage() {
    if (index < messages.length) {
      let processedMessage = processMessage(messages[index], chatId);

      bot.sendMessage(chatId, processedMessage)
        .then((sentMessage) => {
          setUserProperty(chatId, "last_message_id", sentMessage.message_id);
          console.log(`Mesaj ${index + 1} başarıyla gönderildi.`);
          index++;
          // Bir sonraki mesajı hemen gönderecek şekilde çağırıyoruz.
          sendNextMessage();
        })
        .catch((error) => {
          console.error(`Mesaj ${index + 1} gönderilirken hata oluştu: ${error}`);
          index++;
          sendNextMessage(); // hata olsa bile sırayı korumalıyız
        });
    } else {
      console.timeEnd("message-send-time");
    }
  }

  // İlk mesajı göndermek için başlatıyoruz.
  sendNextMessage();
};

556ms

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions